from Data.Either import :: Either
from Data.Maybe import :: Maybe
+from StdString import class toString
import lex
-:: ParserOutput :== Either String AST
+:: ParserOutput :== Either Error AST
:: AST = AST [VarDecl] [FunDecl]
:: VarDecl = VarDecl Type String Expr
:: Op1 = UnNegation | UnMinus
:: Op2 = BiPlus | BiMinus | BiTimes | BiDivide | BiMod | BiEquals | BiLesser |
BiGreater | BiLesserEq | BiGreaterEq | BiUnEqual | BiAnd | BiOr | BiCons
-:: FunDecl = FunDecl String [String] FunType [VarDecl] [Stmt]
+:: FunDecl = FunDecl String [String] (Maybe FunType) [VarDecl] [Stmt]
:: FunType = FunType [Type] (Maybe Type)
:: FunCall = FunCall String [Expr]
:: Stmt