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