Drop parseVarWithoutAssignment
Additionally sorts gitignore and adds attempted decoding of lists back to the REPL
This commit is contained in:
parent
8c33e5ce66
commit
3eb28a2c62
14
.gitignore
vendored
14
.gitignore
vendored
@ -1,11 +1,11 @@
|
|||||||
bin/
|
|
||||||
/result
|
|
||||||
/config.dhall
|
|
||||||
/Dockerfile
|
|
||||||
.stack-work/
|
|
||||||
*.swp
|
*.swp
|
||||||
dist*
|
*.txt
|
||||||
*~
|
*~
|
||||||
.env
|
.env
|
||||||
|
.stack-work/
|
||||||
|
/Dockerfile
|
||||||
|
/config.dhall
|
||||||
|
/result
|
||||||
WD
|
WD
|
||||||
*.hs.txt
|
bin/
|
||||||
|
dist*
|
||||||
|
@ -54,16 +54,9 @@ parseFunction = do
|
|||||||
|
|
||||||
parseAtomicBase :: Parser TricuAST
|
parseAtomicBase :: Parser TricuAST
|
||||||
parseAtomicBase = choice
|
parseAtomicBase = choice
|
||||||
[ try parseVarWithoutAssignment
|
[ parseTreeLeaf
|
||||||
, parseTreeLeaf
|
|
||||||
, parseGrouped
|
, parseGrouped
|
||||||
]
|
]
|
||||||
parseVarWithoutAssignment :: Parser TricuAST
|
|
||||||
parseVarWithoutAssignment = do
|
|
||||||
LIdentifier name <- satisfy isIdentifier
|
|
||||||
if (name == "t" || name == "__result")
|
|
||||||
then fail $ "Reserved keyword: " ++ name ++ " cannot be assigned."
|
|
||||||
else notFollowedBy (satisfy (== LAssign)) *> return (SVar name)
|
|
||||||
|
|
||||||
parseLambda :: Parser TricuAST
|
parseLambda :: Parser TricuAST
|
||||||
parseLambda = between (satisfy (== LOpenParen)) (satisfy (== LCloseParen)) $ do
|
parseLambda = between (satisfy (== LOpenParen)) (satisfy (== LCloseParen)) $ do
|
||||||
|
@ -66,4 +66,6 @@ decodeResult tc = case toNumber tc of
|
|||||||
Right num -> show num
|
Right num -> show num
|
||||||
Left _ -> case toString tc of
|
Left _ -> case toString tc of
|
||||||
Right str -> "\"" ++ str ++ "\""
|
Right str -> "\"" ++ str ++ "\""
|
||||||
Left _ -> formatResult TreeCalculus tc
|
Left _ -> case toList tc of
|
||||||
|
Right list -> "[" ++ intercalate ", " (map decodeResult list) ++ "]"
|
||||||
|
Left _ -> formatResult TreeCalculus tc
|
||||||
|
@ -53,7 +53,7 @@ lexerTests = testGroup "Lexer Tests"
|
|||||||
expect = Right [LKeywordT, LStringLiteral "string", LIntegerLiteral 42]
|
expect = Right [LKeywordT, LStringLiteral "string", LIntegerLiteral 42]
|
||||||
runParser tricuLexer "" input @?= expect
|
runParser tricuLexer "" input @?= expect
|
||||||
, testCase "Lex invalid token" $ do
|
, testCase "Lex invalid token" $ do
|
||||||
let input = "$invalid"
|
let input = "&invalid"
|
||||||
case runParser tricuLexer "" input of
|
case runParser tricuLexer "" input of
|
||||||
Left _ -> return ()
|
Left _ -> return ()
|
||||||
Right _ -> assertFailure "Expected lexer to fail on invalid token"
|
Right _ -> assertFailure "Expected lexer to fail on invalid token"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user