ソースを参照

handle global variables and addition

master
Ian Piumarta 3ヶ月前
コミット
a538c4b31d
1個のファイルの変更32行の追加32行の削除
  1. +32
    -32
      main.leg

+ 32
- 32
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;

読み込み中…
キャンセル
保存