diff --git a/test.sh b/test.sh index e0b8eee..af56488 100755 --- a/test.sh +++ b/test.sh @@ -21,7 +21,7 @@ for input in $listfic; do (($?!=0)) && {done=1;continue} read <&3 expected (($?!=0)) && {done=1;continue} - result="$( runghc y.hs "$program")" + result="$(runghc y.hs "$program")" printf "%18s (line %3d): " ${input:t} $num if [[ $expected == $result ]]; then print -- "OK" diff --git a/tests/binarynumber b/tests/binarynumber index a9ffca6..17e13e6 100644 --- a/tests/binarynumber +++ b/tests/binarynumber @@ -1,2 +1,6 @@ +32 +32 +#x012 +18 #b001010 -Number 10 +10 diff --git a/tests/char b/tests/char index 56f7a70..eff905d 100644 --- a/tests/char +++ b/tests/char @@ -1,2 +1,2 @@ #\a -Character 'a' +'a' diff --git a/tests/float b/tests/float index 25be416..066db4f 100644 --- a/tests/float +++ b/tests/float @@ -1,2 +1,2 @@ 3.14 -Float 3.14 +3.14 diff --git a/tests/list b/tests/list index 03fd869..e69de29 100644 --- a/tests/list +++ b/tests/list @@ -1,4 +0,0 @@ -(a list) -List [Atom "a",Atom "list"] -(a (nested) list) -List [Atom "a",List [Atom "nested"],Atom "list"] diff --git a/tests/number b/tests/number index 5b34a3d..fc40ae5 100644 --- a/tests/number +++ b/tests/number @@ -1,2 +1,2 @@ 32 -Number 32 +32 diff --git a/tests/string b/tests/string index 341906f..a600a7d 100644 --- a/tests/string +++ b/tests/string @@ -1,6 +1,6 @@ "This is a simple string" -String "This is a simple string" -"This is a string with a return ->\n<- Here" -String "This is a string with a return ->\n<- Here" -"More difficult string \n, \r, \t, \\, \x, \A" -String "More difficult string \n, \r, \t, \\, x, A" +"This is a simple string" +"A tab ->\t<- Here" +"A tab -> <- Here" +"\S\o\m\e\ \pr\ot\e\ct\e\d\ \w\it\h\ \\" +"Some protected with \" diff --git a/y.hs b/y.hs index 5b98663..bcdaf11 100644 --- a/y.hs +++ b/y.hs @@ -28,7 +28,16 @@ main = do readExpr :: String -> String readExpr input = case parse parseExpr "lisp" input of Left err -> "No match: " ++ show err - Right val -> show val + Right val -> showVal val + +showVal :: LispVal -> String +showVal (String contents) = "\"" ++ contents ++ "\"" +showVal (Atom name) = name +showVal (Number contents) = show contents +showVal (Float contents) = show contents +showVal (Character c) = '\'':c:'\'':[] +showVal (Bool True) = "#t" +showVal (Bool False) = "#f" -- parseExpr will parse the Expression parseExpr :: Parser LispVal