|
@@ -79,45 +79,3 @@ exception EmptyError
|
|
|
|
|
|
|
|
exception InvalidNode
|
|
exception InvalidNode
|
|
|
exception InvalidInput of string
|
|
exception InvalidInput of string
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
-(*
|
|
|
|
|
- * Template for node matching follows below.
|
|
|
|
|
- *
|
|
|
|
|
- * let rec visit = function
|
|
|
|
|
- * | Program (decls, loc) ->
|
|
|
|
|
- * | Param (ctype, name, loc) ->
|
|
|
|
|
- * | FunDec (ret_type, name, params, loc) ->
|
|
|
|
|
- * | FunDef (export, ret_type, name, params, body, loc) ->
|
|
|
|
|
- * | GlobalDec (ctype, name, loc) ->
|
|
|
|
|
- * | GlobalDef (export, ctype, name, None, loc) ->
|
|
|
|
|
- * | GlobalDef (export, ctype, name, Some init, loc) ->
|
|
|
|
|
- *
|
|
|
|
|
- * | VarDec (ctype, name, None, loc) ->
|
|
|
|
|
- * | VarDec (ctype, name, Some init, loc) ->
|
|
|
|
|
- * | Assign (name, value, loc) ->
|
|
|
|
|
- * | Return (value, loc) ->
|
|
|
|
|
- * | If (cond, body, loc) ->
|
|
|
|
|
- * | IfElse (cond, true_body, false_body, loc) ->
|
|
|
|
|
- * | While (cond, body, loc) ->
|
|
|
|
|
- * | DoWhile (cond, body, loc) ->
|
|
|
|
|
- * | For (counter, start, stop, step, body, loc) ->
|
|
|
|
|
- * | Expr (value) ->
|
|
|
|
|
- * | Block (stats) ->
|
|
|
|
|
- *
|
|
|
|
|
- * | BoolConst (value, loc) ->
|
|
|
|
|
- * | IntConst (value, loc) ->
|
|
|
|
|
- * | FloatConst (value, loc) ->
|
|
|
|
|
- * | ArrayConst (dims, loc) ->
|
|
|
|
|
- * | ArrayScalar (value, loc) ->
|
|
|
|
|
- * | Var (name, loc) ->
|
|
|
|
|
- * | Deref (name, dims, loc) ->
|
|
|
|
|
- * | Monop (op, value, loc) ->
|
|
|
|
|
- * | Binop (op, left, right, loc) ->
|
|
|
|
|
- * | Cond (cond, true_expr, false_expr, loc) ->
|
|
|
|
|
- * | TypeCast (ctype, value, loc) ->
|
|
|
|
|
- * | FunCall (name, args, loc) ->
|
|
|
|
|
- *
|
|
|
|
|
- * | node -> transform visit node
|
|
|
|
|
- *
|
|
|
|
|
- *)
|
|
|