stuff (more)
This commit is contained in:
@ -24,9 +24,6 @@ let rec lookup v = function
|
||||
| (v', k) :: vtab -> if v = v' then k else lookup v vtab
|
||||
| (_ : SymTab) -> failwith ("unbound variable : " + v)
|
||||
|
||||
(* HELP FUNCTIONS *)
|
||||
let VALUEtoint = function INT x -> x
|
||||
|
||||
(* EVALUATION *)
|
||||
|
||||
(*****************************************************
|
||||
@ -42,8 +39,8 @@ let rec eval (vtab : SymTab) (e : EXP) : VALUE =
|
||||
| VARIABLE v ->
|
||||
lookup v vtab
|
||||
| OPERATE (op, e1, e2) ->
|
||||
let exp1 = VALUEtoint (eval vtab e1)
|
||||
let exp2 = VALUEtoint (eval vtab e2)
|
||||
let (INT exp1) = eval vtab e1
|
||||
let (INT exp2) = eval vtab e2
|
||||
match op with
|
||||
| BPLUS -> INT (exp1 + exp2)
|
||||
| BMINUS -> INT (exp1 - exp2)
|
||||
@ -53,8 +50,8 @@ let rec eval (vtab : SymTab) (e : EXP) : VALUE =
|
||||
let vtab = bind var exp1 vtab
|
||||
eval vtab e2
|
||||
| OVER (rop, var, e1, e2, e3) ->
|
||||
let exp1 = VALUEtoint (eval vtab e1)
|
||||
let exp2 = VALUEtoint (eval vtab e2)
|
||||
let (INT exp1) = eval vtab e1
|
||||
let (INT exp2) = eval vtab e2
|
||||
let results = [
|
||||
for i in exp1..exp2 ->
|
||||
let vtab = bind var (INT i) vtab
|
||||
|
Reference in New Issue
Block a user