瀏覽代碼

add missing cases for Token

master
Ian Piumarta 3 月之前
父節點
當前提交
fda0129a1a
共有 1 個檔案被更改,包括 9 行新增1 行删除
  1. +9
    -1
      main.leg

+ 9
- 1
main.leg 查看文件

@ -1,6 +1,6 @@
# main.leg -- C parser + interpreter # 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)) { switch (getType(obj)) {
case Undefined: printf("nil\n"); break; case Undefined: printf("nil\n"); break;
case Input: printf("<%s>\n", get(obj, Input,name)); 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 Integer: printf("%ld\n", integerValue(obj)); break;
case Float: printf("%f\n", floatValue(obj)); break; case Float: printf("%f\n", floatValue(obj)); break;
case Pointer: { case Pointer: {
@ -3540,6 +3544,7 @@ oop eval(oop exp)
switch (getType(exp)) { switch (getType(exp)) {
case Undefined: assert(!"this cannot happen"); case Undefined: assert(!"this cannot happen");
case Input: assert(!"this cannot happen"); case Input: assert(!"this cannot happen");
case Token: assert(!"this cannot happen");
case Integer: RETURN(exp); case Integer: RETURN(exp);
case Float: RETURN(exp); case Float: RETURN(exp);
case Pointer: RETURN(exp); case Pointer: RETURN(exp);
@ -3821,6 +3826,7 @@ oop eval(oop exp)
switch (getType(type)) { switch (getType(type)) {
case Tpointer: { case Tpointer: {
if (is(Pointer,rhs)) RETURN(castPointer(rhs, type)); if (is(Pointer,rhs)) RETURN(castPointer(rhs, type));
default: break;
} }
} }
RETURN(cvt(rhs)); RETURN(cvt(rhs));
@ -3933,6 +3939,7 @@ oop preval(oop exp)
switch (getType(exp)) { switch (getType(exp)) {
case Undefined: return exp; case Undefined: return exp;
case Input: break; case Input: break;
case Token: break;
case Integer: return exp; case Integer: return exp;
case Float: return exp; case Float: return exp;
case Pointer: return exp; case Pointer: return exp;
@ -4391,6 +4398,7 @@ void compileOn(oop exp, oop program, oop cs, oop bs)
switch (getType(exp)) { switch (getType(exp)) {
case Undefined: EMITio(iPUSH, exp); return; case Undefined: EMITio(iPUSH, exp); return;
case Input: EMITio(iPUSH, exp); return; case Input: EMITio(iPUSH, exp); return;
case Token: assert(!"this cannot happen");
case Integer: EMITio(iPUSH, exp); return; case Integer: EMITio(iPUSH, exp); return;
case Float: EMITio(iPUSH, exp); return; case Float: EMITio(iPUSH, exp); return;
case Pointer: assert(!"unimplemented"); case Pointer: assert(!"unimplemented");

Loading…
取消
儲存