summaryrefslogtreecommitdiff
path: root/khb/khs_ast.ml
diff options
context:
space:
mode:
Diffstat (limited to 'khb/khs_ast.ml')
-rw-r--r--khb/khs_ast.ml36
1 files changed, 36 insertions, 0 deletions
diff --git a/khb/khs_ast.ml b/khb/khs_ast.ml
new file mode 100644
index 0000000..f5b2c8d
--- /dev/null
+++ b/khb/khs_ast.ml
@@ -0,0 +1,36 @@
+
+type khs_binop =
+ | PLUS | MINUS
+ | TIMES | DIV | MOD
+ | EQUAL | NEQUAL
+ | GT | LT | GE | LE
+ | AND | OR | XOR
+
+type khs_unop =
+ | MINUS | NOT
+
+type khs_expr =
+ | EEmpty
+ | EInt of int
+ | EStr of string
+ | EBool of bool
+ | EFrame
+ | ELocal of string
+ | EBinary of khs_expr * khs_binop * khs_expr
+ | EUnary of khs_unop * khs_expr
+ | ETernary of khs_expr * khs_expr * khs_expr
+ | ECat of khs_expr * khs_expr
+ | ELoad of khs_expr
+ | ENewChan
+
+type khs_stmt =
+ | SLabel of string
+ | SSet of khs_expr * khs_expr
+ | SGoto of khs_expr
+ | SPar of khs_expr
+ (* RECV and SEND do a load on their second argument (the chan),
+ (ie they expect an address and not a value) *)
+ | SRecv of khs_expr * khs_expr
+ | SSend of khs_expr * khs_expr
+ | SUnset of khs_expr list
+ | SExit