-- UUAGC 0.9.5 (src/TigerAS.ag) module TigerAS where import TigerTypes import UU.Scanner.Position -- Args -------------------------------------------------------- type Args = [Expr] -- AssignField ------------------------------------------------- data AssignField = AssignField (VarIdent) (Expr) -- AssignFields ------------------------------------------------ type AssignFields = [AssignField] -- DeclGroup --------------------------------------------------- data DeclGroup = FunDecs (FunDecs) | TypeDecs (TypeDecs) | VarDec (Pos) (VarIdent) (Maybe TypeIdent) (Expr) -- Declarations ------------------------------------------------ type Declarations = [DeclGroup] -- Expr -------------------------------------------------------- data Expr = Apply (VarIdent) (Args) | ArrayVal (TypeIdent) (Expr) (Expr) | Assign (LValue) (Pos) (Expr) | Break (Pos) | For (Pos) (VarIdent) (Expr) (Expr) (Expr) | If (Pos) (Expr) (Expr) (Expr) | IntLit (Integer) (Pos) | LValue (LValue) | Let (Pos) (Declarations) (Expr) | Nil (Pos) | Op (String) (Pos) (Expr) (Expr) | RecordVal (TypeIdent) (AssignFields) | Sequence (Expr) (Expr) | Skip | StringLit (String) (Pos) | UnOp (Pos) (String) (Expr) | While (Pos) (Expr) (Expr) -- FunDec ------------------------------------------------------ data FunDec = FunDec (Pos) (VarIdent) ([TypedVar]) (Maybe TypeIdent) (Expr) -- FunDecs ----------------------------------------------------- type FunDecs = [FunDec] -- LValue ------------------------------------------------------ data LValue = Dot (Pos) (LValue) (VarIdent) | Ident (VarIdent) | Sub (Pos) (LValue) (Expr) -- Program ----------------------------------------------------- data Program = Program (Expr) -- TypeDec ----------------------------------------------------- data TypeDec = TypeDec (Pos) (TypeIdent) (Type) -- TypeDecs ---------------------------------------------------- type TypeDecs = [TypeDec]