|
|
@ -1,6 +1,6 @@ |
|
|
|
# main.leg -- C parser + interpreter |
|
|
|
# |
|
|
|
# Last edited: 2025-02-03 11:58:41 by piumarta on xubuntu |
|
|
|
# Last edited: 2025-02-03 13:38:56 by piumarta on zora-1043.local |
|
|
|
|
|
|
|
%{ |
|
|
|
; |
|
|
@ -1364,6 +1364,10 @@ void printiln(oop obj, int indent) |
|
|
|
switch (getType(obj)) { |
|
|
|
case Undefined: printf("nil\n"); break; |
|
|
|
case Input: printf("<%s>\n", get(obj, Input,name)); break; |
|
|
|
case Token: printf("Token<%s:%d %s>\n", |
|
|
|
get(obj, Token,file), |
|
|
|
get(obj, Token,line), |
|
|
|
get(obj, Token,text)); break; |
|
|
|
case Integer: printf("%ld\n", integerValue(obj)); break; |
|
|
|
case Float: printf("%f\n", floatValue(obj)); break; |
|
|
|
case Pointer: { |
|
|
@ -3540,6 +3544,7 @@ oop eval(oop exp) |
|
|
|
switch (getType(exp)) { |
|
|
|
case Undefined: assert(!"this cannot happen"); |
|
|
|
case Input: assert(!"this cannot happen"); |
|
|
|
case Token: assert(!"this cannot happen"); |
|
|
|
case Integer: RETURN(exp); |
|
|
|
case Float: RETURN(exp); |
|
|
|
case Pointer: RETURN(exp); |
|
|
@ -3821,6 +3826,7 @@ oop eval(oop exp) |
|
|
|
switch (getType(type)) { |
|
|
|
case Tpointer: { |
|
|
|
if (is(Pointer,rhs)) RETURN(castPointer(rhs, type)); |
|
|
|
default: break; |
|
|
|
} |
|
|
|
} |
|
|
|
RETURN(cvt(rhs)); |
|
|
@ -3933,6 +3939,7 @@ oop preval(oop exp) |
|
|
|
switch (getType(exp)) { |
|
|
|
case Undefined: return exp; |
|
|
|
case Input: break; |
|
|
|
case Token: break; |
|
|
|
case Integer: return exp; |
|
|
|
case Float: return exp; |
|
|
|
case Pointer: return exp; |
|
|
@ -4391,6 +4398,7 @@ void compileOn(oop exp, oop program, oop cs, oop bs) |
|
|
|
switch (getType(exp)) { |
|
|
|
case Undefined: EMITio(iPUSH, exp); return; |
|
|
|
case Input: EMITio(iPUSH, exp); return; |
|
|
|
case Token: assert(!"this cannot happen"); |
|
|
|
case Integer: EMITio(iPUSH, exp); return; |
|
|
|
case Float: EMITio(iPUSH, exp); return; |
|
|
|
case Pointer: assert(!"unimplemented"); |
|
|
|