diff --git a/app/Main.hs b/app/Main.hs index b105b23..6f1a0b6 100644 --- a/app/Main.hs +++ b/app/Main.hs @@ -14,7 +14,7 @@ import System.Environment import System.Directory (doesFileExist) -version = "2.1.0" +version = "2.1.1" heading = "\x1b[1;36m\ \ _\n\ \ | |\n\ diff --git a/pLam.cabal b/pLam.cabal index 0be408f..997f0f7 100644 --- a/pLam.cabal +++ b/pLam.cabal @@ -1,5 +1,5 @@ name: pLam -version: 2.1.0 +version: 2.1.1 -- synopsis: -- description: homepage: https://github.com/sandrolovnicki/pLam#readme diff --git a/src/Parser.hs b/src/Parser.hs index 1eb55a5..91d053a 100644 --- a/src/Parser.hs +++ b/src/Parser.hs @@ -27,7 +27,6 @@ languageDef = , "\\" , "[" , "]" - , "," ] } @@ -37,6 +36,7 @@ identifier = Token.identifier lexer reserved = Token.reserved lexer reservedOp = Token.reservedOp lexer parens = Token.parens lexer +comma = Token.comma lexer ------------------------------------------------------------------------------------- type Parser = Parsec String () @@ -86,13 +86,14 @@ createList (x:xs) = Abstraction (LambdaVar 'f' 0) (Abstraction (LambdaVar 'l' 0) parseList :: Parser Expression parseList = do reservedOp "[" - exprs <- parseExpression `sepBy` (char ',') + exprs <- parseExpression `sepBy` comma reservedOp "]" return $ createList exprs parseNumeral :: Parser Expression parseNumeral = do strNum <- many1 digit + spaces let intNum = read strNum :: Int maybeB <- optionMaybe (char 'b') case maybeB == (Just 'b') of @@ -131,8 +132,11 @@ parseSingleton = parseList <|> parens parseApplication parseExpression :: Parser Expression -parseExpression = parseApplication - <|> parseSingleton +parseExpression = do + spaces + expr <- parseApplication <|> parseSingleton + spaces + return expr ------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------