from Data.Maybe import :: Maybe
from StdString import class toString
-import lex
+from lex import :: LexerOutput, :: Error, :: Token, :: TokenValue, :: Pos
+from AST import :: AST, :: Expr
:: ParserOutput :== Either Error AST
-:: AST = AST [VarDecl] [FunDecl]
-:: VarDecl = VarDecl Type String Expr
-:: Type
- = TupleType (Type, Type)
- | ListType Type
- | IdType String
- | IntType
- | BoolType
- | CharType
- | VarType
-:: Expr
- = VarExpr VarDef
- | Op2Expr Expr Op2 Expr
- | Op1Expr Op1 Expr
- | IntExpr Int
- | CharExpr Char
- | BoolExpr Bool
- | FunExpr FunCall
- | EmptyListExpr
- | TupleExpr (Expr, Expr)
-:: VarDef = VarDef String [FieldSelector]
-:: FieldSelector = FieldHd | FieldTl | FieldFst | FieldSnd
-:: Op1 = UnNegation | UnMinus
-:: Op2 = BiPlus | BiMinus | BiTimes | BiDivide | BiMod | BiEquals | BiLesser |
- BiGreater | BiLesserEq | BiGreaterEq | BiUnEqual | BiAnd | BiOr | BiCons
-:: FunDecl = FunDecl String [String] (Maybe FunType) [VarDecl] [Stmt]
-:: FunType = FunType [Type] (Maybe Type)
-:: FunCall = FunCall String [Expr]
-:: Stmt
- = IfStmt Expr [Stmt] [Stmt]
- | WhileStmt Expr [Stmt]
- | AssStmt VarDef Expr
- | FunStmt FunCall
- | ReturnStmt (Maybe Expr)
-
-instance toString AST
-
-parser :: LexerOutput -> ParserOutput
+parser :: [Token] -> ParserOutput
+makeStrExpr :: Pos [Char] -> Expr