add terminal ! and ? to lexer
authorJim Pryor <profjim@jimpryor.net>
Sun, 26 Sep 2010 20:41:27 +0000 (16:41 -0400)
committerJim Pryor <profjim@jimpryor.net>
Sun, 26 Sep 2010 20:46:55 +0000 (16:46 -0400)
Signed-off-by: Jim Pryor <profjim@jimpryor.net>
code/tokens.js

index 559c437..53639a8 100644 (file)
@@ -84,7 +84,18 @@ String.prototype.tokens = function (prefix, suffix) {
                         (c >= '0' && c <= '9') || c === '_' || c === '-') {
                     str += c;
                     i += 1;
                         (c >= '0' && c <= '9') || c === '_' || c === '-') {
                     str += c;
                     i += 1;
-                } else {
+                               } else if (c === '?' || c === '!') {
+                               // should only be terminal
+                    str += c;
+                    i += 1;
+                               // make sure next character is not an identifier
+                                       if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') ||
+                                               (c >= '0' && c <= '9') || c === '_' || c === '-' || c === '?' || c === '!') {
+                                               str += c;
+                                               i += 1;
+                                               make('name', str).error("Bad identifier");
+                                       }
+                               } else {
                     break;
                 }
             }
                     break;
                 }
             }