From a538c4b31d16359873a097b1aaef28d5916e9bc2 Mon Sep 17 00:00:00 2001 From: Ian Piumarta Date: Wed, 22 Jan 2025 15:12:06 +0900 Subject: [PATCH] handle global variables and addition --- main.leg | 64 ++++++++++++++++++++++++++++---------------------------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/main.leg b/main.leg index 322bda5..e1f6bf2 100644 --- a/main.leg +++ b/main.leg @@ -1,6 +1,6 @@ # main.leg -- C parser + interpreter # -# Last edited: 2025-01-22 15:10:04 by piumarta on zora +# Last edited: 2025-01-22 15:11:35 by piumarta on zora %{ ; @@ -1914,33 +1914,33 @@ oop preval(oop exp) { if (opt_v > 2) { printf("PREVAL "); println(exp); } switch (getType(exp)) { - case Undefined: assert(!"this cannot happen"); - case Input: assert(!"this cannot happen"); - case Integer: assert(!"this cannot happen"); - case Float: assert(!"this cannot happen"); - case Symbol: assert(!"this cannot happen"); - case Pair: assert(!"this cannot happen"); - case String: assert(!"this cannot happen"); - case Array: assert(!"this cannot happen"); - case Primitive: assert(!"this cannot happen"); - case Closure: assert(!"this cannot happen"); - case Call: assert(!"this cannot happen"); - case Block: assert(!"this cannot happen"); - case Unary: assert(!"this cannot happen"); - case Binary: assert(!"this cannot happen"); - case Assign: assert(!"this cannot happen"); - case Cast: assert(!"this cannot happen"); - case While: assert(!"this cannot happen"); - case For: assert(!"this cannot happen"); - case If: assert(!"this cannot happen"); - case Return: assert(!"this cannot happen"); - case Continue: assert(!"this cannot happen"); - case Break: assert(!"this cannot happen"); - case Tbase: assert(!"this cannot happen"); - case Tpointer: assert(!"this cannot happen"); - case Tarray: assert(!"this cannot happen"); - case Tstruct: assert(!"this cannot happen"); - case Tfunction: assert(!"this cannot happen"); + case Undefined: break; + case Input: break; + case Integer: return exp; + case Float: return exp; + case Symbol: break; + case Pair: break; + case String: break; + case Array: break; + case Primitive: break; + case Closure: break; + case Call: break; + case Block: break; + case Unary: break; + case Binary: break; + case Assign: break; + case Cast: break; + case While: break; + case For: break; + case If: break; + case Return: break; + case Continue: break; + case Break: break; + case Tbase: break; + case Tpointer: break; + case Tarray: break; + case Tstruct: break; + case Tfunction: break; case VarDecls: { oop vars = get(exp, VarDecls,variables); Array_do(vars, var) { @@ -1950,10 +1950,10 @@ oop preval(oop exp) } return nil; } - case Scope: assert(!"this cannot happen"); - case TypeName: assert(!"this cannot happen"); - case Variable: assert(!"this cannot happen"); - case Constant: assert(!"this cannot happen"); + case Scope: break; + case TypeName: break; + case Variable: break; + case Constant: break; case Function: { assert(Scope_lookup(get(exp, Function,name))); return exp;