(Left e, _) = Left $ toString e
parseProgram :: Parser Token AST
(Left e, _) = Left $ toString e
parseProgram :: Parser Token AST
parseFunDecl :: Parser Token FunDecl
parseFunDecl = liftM5 FunDecl
(parseIdent <* satTok BraceOpenToken)
(parseSepList CommaToken parseIdent <* satTok BraceCloseToken)
parseFunDecl :: Parser Token FunDecl
parseFunDecl = liftM5 FunDecl
(parseIdent <* satTok BraceOpenToken)
(parseSepList CommaToken parseIdent <* satTok BraceCloseToken)
parseVoidOrType :: Parser Token (Maybe Type)
parseVoidOrType = (satTok VoidToken *> pure Nothing) <|>
parseVoidOrType :: Parser Token (Maybe Type)
parseVoidOrType = (satTok VoidToken *> pure Nothing) <|>
instance print FunDecl where
print (FunDecl i as t vs ss) =
["\n", i, " (":printersperse "," as] ++
instance print FunDecl where
print (FunDecl i as t vs ss) =
["\n", i, " (":printersperse "," as] ++