nand2tetris/compiler/backend/lib/ast.ml

41 lines
591 B
OCaml
Raw Normal View History

type arithmetic_command =
| Add
| Sub
| Neg
| Eq
| Gt
| Lt
| And
| Or
| Not
type memory_segment =
| Argument
| Local
| Static
| Constant
| This
| That
| Pointer
| Temp
type memory_command =
| Push
| Pop
type branching_command =
| Label
| Goto
| Ifgoto
type function_command =
| Function
| Call
type expr =
| ArithmeticCommand of arithmetic_command
| MemoryAccessCommand of memory_command * memory_segment * int
| ProgramFlowCommand of branching_command * string
| FunctionCallCommand of function_command * string * int
| Return