on master help sign in
Update program parser to use Parse.Declarations
commit96fd5bfd78156b498d81b8277e2621f6d9111505 authorEvan Czaplicki <evan@Evans-MacBook-Air.local> dateSun 7 Jul 2013, 22:11 (13 years ago) parentd29ca3b
1 file changed+6−9
compiler/Parse/Parser.hs+6−9
compiler/Parse/Parser.hs+6−9
@@ -12,26 +12,23 @@ import Parse.Binop (infixStmt, OpTable)
1212import Parse.Expression
1313import Parse.Type
1414import Parse.Module
15−import Parse.Foreign
16−
17−statement = choice (typeAlias:defs) <|> def <?> "datatype or variable definition"
18− where defs = map ((:[]) <$>) [ foreignDef, datatype ]
15+import qualified Parse.Declaration as Decl
1916
2017freshDef = commitIf (freshLine >> (letter <|> char '_')) $ do
2118 freshLine
22− statement <?> "another datatype or variable definition"
19+ Decl.declaration <?> "another datatype or variable definition"
2320
24−defs1 = do d <- statement <?> "at least one datatype or variable definition"
25− concat <$> (d:) <$> many freshDef
21+decls = do d <- Decl.declaration <?> "at least one datatype or variable definition"
22+ (d:) <$> many freshDef
2623
2724program = do
2825 optional freshLine
2926 (names,exports) <- option (["Main"],[]) (moduleDef `followedBy` freshLine)
3027 is <- (do try (lookAhead $ reserved "import")
3128 imports `followedBy` freshLine) <|> return []
32− statements <- defs1
29+ declarations <- decls
3330 optional freshLine ; optional spaces ; eof
34− return $ Module names exports is statements
31+ return $ Module names exports is declarations
3532
3633parseProgram = setupParser program
3734