1 module Ast where 2 3 import BasicNumber 4 5 type VarName = String 6 7 type FunName = String 8 9 -- abstract syntax tree 10 data Ast = Set VarName BasicExp -- set variable literally 11 | EvalSet VarName BasicExp -- eval and set 12 | Eval BasicExp -- eval 13 | NullCmd -- null command 14 | SyntaxError -- syntax error 15 16 -- basic expression 17 data BasicExp = Func FunName [BasicExp] 18 | Numb BasicNumber 19 | Var String 20 | EVar String 21 | BSError