]> Shamusworld >> Repos - rmac/blobdiff - expr.c
Forgot minor release number bump. :-P
[rmac] / expr.c
diff --git a/expr.c b/expr.c
index 0335fbd12de4f46173e5efb254b85c5302126ad3..6f0b619492824e65031011f6c9317e7e8cfcf5f8 100644 (file)
--- a/expr.c
+++ b/expr.c
@@ -71,7 +71,7 @@ static VALUE str_value(char * p)
 //
 // Initialize Expression Analyzer
 //
-void init_expr(void)
+void InitExpression(void)
 {
        int i;                                                                  // Iterator
        char * p;                                                               // Token pointer
@@ -323,8 +323,8 @@ int expr(TOKEN * otk, VALUE * a_value, WORD * a_attr, SYM ** a_esym)
                                *a_esym = NULL;
 
                        tok++;
-                       *evalTokenBuffer++ = ENDEXPR;
-                       return OK;
+//                     *evalTokenBuffer++ = ENDEXPR;
+//                     return OK;
                }
                else if (*tok == CONST)
                {
@@ -334,6 +334,8 @@ int expr(TOKEN * otk, VALUE * a_value, WORD * a_attr, SYM ** a_esym)
 
                        if (a_esym != NULL)
                                *a_esym = NULL;
+
+                       tok += 2;
                }
                else if (*tok == '*')
                {
@@ -349,9 +351,10 @@ int expr(TOKEN * otk, VALUE * a_value, WORD * a_attr, SYM ** a_esym)
                        if (a_esym != NULL)
                                *a_esym = NULL;
 
-                       tok--;
+//                     tok--;
+                       tok++;
                }
-               else
+               else if (*tok == STRING || *tok == SYMBOL)
                {
                        p = string[tok[1]];
                        j = (*p == '.' ? curenv : 0);
@@ -410,9 +413,19 @@ thrown away right here. What the hell is it for?
 
                        if ((symbol->sattr & (GLOBAL | DEFINED)) == GLOBAL && a_esym != NULL)
                                *a_esym = symbol;
+
+                       tok += 2;
+               }
+               else
+               {
+                       // Unknown type here... Alert the user!
+                       error("undefined RISC register in expression");
+                       // Prevent spurious error reporting...
+                       tok++;
+                       return ERROR;
                }
 
-               tok += 2;
+//             tok += 2;
                *evalTokenBuffer++ = ENDEXPR;
                return OK;
        }