codea: uhhh, bug bei O_EQ imm vergleich
authorBernhard Urban <lewurm@gmail.com>
Mon, 17 May 2010 16:04:14 +0000 (18:04 +0200)
committerBernhard Urban <lewurm@gmail.com>
Mon, 17 May 2010 16:04:14 +0000 (18:04 +0200)
codea/code.bfe
codea/tree.c

index a1eb1e184db6e7d1d3f943e803cc5d4f6822f17c..0819bc97fc77d2c8ba85111d279c78b9b8f89964 100644 (file)
@@ -165,12 +165,13 @@ imm: O_ADD(imm,imm)  # 0 # BN_VAL = KID_VAL(0) + KID_VAL(1);
 imm: O_SUB(imm,imm)  # 0 # BN_VAL = KID_VAL(0) - KID_VAL(1);
 imm: O_MUL(imm,imm)  # 0 # BN_VAL = KID_VAL(0) * KID_VAL(1);
 imm: O_LESS(imm,imm) # 0 # BN_VAL = KID_VAL(0) < KID_VAL(1) ? 1 : 0;
-imm: O_EQ(imm,imm)   # 0 # BN_VAL = KID_VAL(0) = KID_VAL(1) ? 1 : 0;
+imm: O_EQ(imm,imm)   # 0 # BN_VAL = KID_VAL(0) == KID_VAL(1) ? 1 : 0;
 imm: O_NUM # 0 #
 imm: O_MONE # 0 #
 imm: O_MTWO # 0 #
 imm: O_MFOUR # 0 #
 imm: O_MEIGHT # 0 #
+imm: O_NULL # 0 #
 
 %%
 
index 098f975e14bb3442c29cc0951becc55d2c6dcfce..3669383c735c89b7907e38b4cfbe416ab1fdb4b0 100644 (file)
@@ -70,14 +70,17 @@ struct treenode *new_number(long val, int exprcount)
        /* TODO: maximal groesse? */
 #define BUFMAX 40
        char *t = (char*) malloc(BUFMAX);
-       if(val == -2) {
+
+       if (val == 0) {
+               new = _new_plain(O_NULL);
+       } else if(val == -1) {
+               new = _new_plain(O_MONE);
+       } else if(val == -2) {
                new = _new_plain(O_MTWO);
        } else if(val == -4) {
                new = _new_plain(O_MFOUR);
        } else if(val == -8) {
                new = _new_plain(O_MEIGHT);
-       } else if(val == -1) {
-               new = _new_plain(O_MONE);
        } else {
                new = _new_plain(O_NUM);
        }