소스 검색

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
#
# 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");

불러오는 중...
취소
저장