aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Language/SimpleShell/Parser/Expr.hs20
1 files changed, 10 insertions, 10 deletions
diff --git a/src/Language/SimpleShell/Parser/Expr.hs b/src/Language/SimpleShell/Parser/Expr.hs
index d4d0b81..d0bd01a 100644
--- a/src/Language/SimpleShell/Parser/Expr.hs
+++ b/src/Language/SimpleShell/Parser/Expr.hs
@@ -7,7 +7,7 @@ module Language.SimpleShell.Parser.Expr
where
-import Language.SimpleShell.Parser (Parser, lookupVar, lookupFun)
+import Language.SimpleShell.Parser (Parser, lexeme, lookupVar, lookupFun)
import Language.SimpleShell.AST.Expr (Expr(..), TypedExpr, VarName, FunName)
import Language.SimpleShell.AST.SimpleType (SimpleType(..))
import Control.Monad.Combinators.FailExpr
@@ -37,7 +37,7 @@ termP
= literalP
<|> varP
<|> unaryOpP
- <|> char '(' *> exprP <* char ')'
+ <|> lexeme (char '(') *> exprP <* lexeme (char ')')
-- | Parse expression with fixed type.
@@ -51,9 +51,9 @@ exprP' errMsg t = do
literalP :: Parser TypedExpr
literalP
- = (IntType,) . IntLiteral <$> L.decimal
- <|> (StrType,) . StrLiteral <$> strLitP
- <|> (BoolType,) . BoolLiteral <$> boolLitP
+ = (IntType,) . IntLiteral <$> lexeme L.decimal
+ <|> (StrType,) . StrLiteral <$> lexeme strLitP
+ <|> (BoolType,) . BoolLiteral <$> lexeme boolLitP
where
strLitP = char '"' *> manyTill L.charLiteral (char '"')
boolLitP
@@ -61,7 +61,7 @@ literalP
<|> False <$ string "false"
varP :: Parser TypedExpr
-varP = do
+varP = lexeme $ do
_ <- char '$'
x <- varNameP
t <- lookupVar x
@@ -69,7 +69,7 @@ varP = do
funP :: Parser TypedExpr
funP = do
- fname <- funNameP
+ fname <- lexeme funNameP
(t', ts) <- lookupFun fname
args <- mapM (exprP' "Type mismatch with function signature.") ts
return (t', FunCall fname args)
@@ -122,7 +122,7 @@ binaryOperatorTable =
addP :: Parser (TypedExpr -> TypedExpr -> Maybe TypedExpr)
addP = do
- _ <- char '+'
+ _ <- lexeme $ char '+'
return $ \(t1, x1) (t2, x2) ->
if t1 == t2
then
@@ -136,7 +136,7 @@ binaryOperatorTable =
:: Associativity -> Text -> BinaryFun -> BinarySig
-> Operator Parser TypedExpr
binary assoc symbol op sig = Binary assoc $ do
- _ <- string symbol
+ _ <- lexeme $ string symbol
return $ \(t1, e1) (t2, e2) -> fmap (, op e1 e2) $ sig t1 t2
@@ -164,7 +164,7 @@ unaryOperators, builtinUnaryFuns :: [UnaryParser]
unary :: Text -> UnaryFun -> UnarySig -> UnaryParser
unary symbol op sig = do
- _ <- string symbol
+ _ <- lexeme $ string symbol
return $ \(t, e) -> fmap (, op e) $ sig t
unaryOpP, builtinUnaryFunP :: Parser TypedExpr