slightly clean up parser
This commit is contained in:
parent
ded743f2b1
commit
0db6e26070
14
parser.hs
14
parser.hs
|
@ -13,7 +13,7 @@ languageDef = emptyDef {T.commentStart="{-",
|
||||||
T.nestedComments=True,
|
T.nestedComments=True,
|
||||||
T.identStart = letter <|> char '_',
|
T.identStart = letter <|> char '_',
|
||||||
T.identLetter = alphaNum <|> char '_',
|
T.identLetter = alphaNum <|> char '_',
|
||||||
T.reservedNames = ["do", "end", "(", ")", ";", "."],
|
T.reservedNames = ["do", "end"],
|
||||||
T.reservedOpNames = ["+", "*"]}
|
T.reservedOpNames = ["+", "*"]}
|
||||||
|
|
||||||
lexer = T.makeTokenParser languageDef
|
lexer = T.makeTokenParser languageDef
|
||||||
|
@ -31,11 +31,7 @@ semi = T.semi lexer -- parses a semicolon
|
||||||
whiteSpace = T.whiteSpace lexer -- parses whitespace
|
whiteSpace = T.whiteSpace lexer -- parses whitespace
|
||||||
symbol = T.symbol lexer
|
symbol = T.symbol lexer
|
||||||
|
|
||||||
statement =
|
statement = exprparser
|
||||||
do
|
|
||||||
e <- exprparser
|
|
||||||
-- char ';'
|
|
||||||
return e
|
|
||||||
|
|
||||||
block = do
|
block = do
|
||||||
reserved "do"
|
reserved "do"
|
||||||
|
@ -74,11 +70,7 @@ term = try block
|
||||||
<|> fmap Var identifier
|
<|> fmap Var identifier
|
||||||
<|> fmap IntConst integer
|
<|> fmap IntConst integer
|
||||||
|
|
||||||
manyExpr = many1 exprparser
|
seqStmt = sepBy1 statement semi
|
||||||
|
|
||||||
seqStmt = do
|
|
||||||
lst <- sepBy1 statement semi
|
|
||||||
return lst
|
|
||||||
|
|
||||||
program =
|
program =
|
||||||
many1 $ do
|
many1 $ do
|
||||||
|
|
Loading…
Reference in New Issue