Website Summary Files Commits Branches @commit @diff @stats
path: root / spasm / src / asm / lexer.cpp
diff options
context:
space:
mode:
Commit72d9bbcc3154142af79fb686d9dc7e4d1fa1badb (patch)
Author
 dtrendafilov <trendafilov.dn@gmail.com>
2018-11-29 09:13:12 +0200
Committer
 GitHub <noreply@github.com>
2018-11-29 09:13:12 +0200
Files3cea4377cba9370f3f2248557f82831d617d89d1 /spasm/src/asm/lexer.cpp
IPL-72d9bbcc3154142af79fb686d9dc7e4d1fa1badb.tar
IPL-72d9bbcc3154142af79fb686d9dc7e4d1fa1badb.tar.gz
IPL-72d9bbcc3154142af79fb686d9dc7e4d1fa1badb.zip
Parentcdfd42d72030a031e5c5d810fcd53441902b5cff (diff)
Feature/strings (#75)
* The assembler supports string opcode * disabled the string test until implmented * strings can be printed
1 files changed, 532 insertions, 347 deletions
-rw-r--r--spasm/src/asm/lexer.cpp879
diff --git a/spasm/src/asm/lexer.cpp b/spasm/src/asm/lexer.cpp
index 5be7836..996762c 100644
--- a/spasm/src/asm/lexer.cpp
+++ b/spasm/src/asm/lexer.cpp
@@ -1,4 +1,4 @@
-/* Generated by re2c 1.1.1 on Thu Nov 22 14:23:32 2018 */
+/* Generated by re2c 1.1.1 on Wed Nov 28 21:13:09 2018 */
#line 1 "lexer.re"
#include <iostream>
@@ -34,7 +34,7 @@ bool Lexer::tokenize(TokenStream& ts)
#line 41 "lexer.cpp"
{
char yych;
- if ((limit - cursor) < 6)
+ if ((limit - cursor) < 7)
return true;
yych = *cursor;
switch (yych)
@@ -45,12 +45,16 @@ bool Lexer::tokenize(TokenStream& ts)
goto yy6;
case ' ':
goto yy8;
- case '#':
+ case '"':
goto yy11;
- case '-':
+ case '#':
goto yy13;
+ case '\'':
+ goto yy15;
+ case '-':
+ goto yy17;
case '0':
- goto yy14;
+ goto yy18;
case '1':
case '2':
case '3':
@@ -60,9 +64,9 @@ bool Lexer::tokenize(TokenStream& ts)
case '7':
case '8':
case '9':
- goto yy16;
+ goto yy20;
case ':':
- goto yy18;
+ goto yy22;
case 'A':
case 'B':
case 'C':
@@ -107,55 +111,55 @@ bool Lexer::tokenize(TokenStream& ts)
case 'x':
case 'y':
case 'z':
- goto yy20;
+ goto yy24;
case 'a':
- goto yy23;
+ goto yy27;
case 'c':
- goto yy24;
+ goto yy28;
case 'd':
- goto yy25;
+ goto yy29;
case 'j':
- goto yy26;
+ goto yy30;
case 'l':
- goto yy27;
+ goto yy31;
case 'm':
- goto yy28;
+ goto yy32;
case 'p':
- goto yy29;
+ goto yy33;
case 'r':
- goto yy30;
+ goto yy34;
case 's':
- goto yy31;
+ goto yy35;
default:
goto yy4;
}
yy2:
++cursor;
-#line 274 "lexer.re"
+#line 290 "lexer.re"
{
ts.push_token(Token(Token::EndInput, lineno));
break;
}
-#line 126 "lexer.cpp"
+#line 128 "lexer.cpp"
yy4:
++cursor;
yy5:
-#line 280 "lexer.re"
+#line 296 "lexer.re"
{
return false;
}
-#line 134 "lexer.cpp"
+#line 136 "lexer.cpp"
yy6:
++cursor;
-#line 267 "lexer.re"
+#line 283 "lexer.re"
{
++lineno;
token_start = cursor;
continue;
}
-#line 144 "lexer.cpp"
+#line 146 "lexer.cpp"
yy8:
++cursor;
if (limit <= cursor)
@@ -169,13 +173,13 @@ bool Lexer::tokenize(TokenStream& ts)
goto yy10;
}
yy10:
-#line 251 "lexer.re"
+#line 267 "lexer.re"
{
token_start = cursor;
continue;
}
-#line 160 "lexer.cpp"
+#line 162 "lexer.cpp"
yy11:
++cursor;
if (limit <= cursor)
@@ -183,21 +187,49 @@ bool Lexer::tokenize(TokenStream& ts)
yych = *cursor;
switch (yych)
{
- case '\n':
- goto yy32;
+ case '"':
+ goto yy36;
+ case '\\':
+ goto yy38;
default:
goto yy11;
}
yy13:
+ ++cursor;
+ if (limit <= cursor)
+ return true;
+ yych = *cursor;
+ switch (yych)
+ {
+ case '\n':
+ goto yy40;
+ default:
+ goto yy13;
+ }
+ yy15:
+ ++cursor;
+ if (limit <= cursor)
+ return true;
+ yych = *cursor;
+ switch (yych)
+ {
+ case '\'':
+ goto yy36;
+ case '\\':
+ goto yy42;
+ default:
+ goto yy15;
+ }
+ yy17:
yych = *++cursor;
switch (yych)
{
case '0':
- goto yy34;
+ goto yy44;
default:
goto yy5;
}
- yy14:
+ yy18:
yych = *(marker = ++cursor);
switch (yych)
{
@@ -212,23 +244,23 @@ bool Lexer::tokenize(TokenStream& ts)
case '8':
case '9':
case ':':
- goto yy36;
+ goto yy46;
case 'X':
case 'x':
- goto yy38;
+ goto yy48;
default:
- goto yy15;
+ goto yy19;
}
- yy15:
-#line 60 "lexer.re"
+ yy19:
+#line 62 "lexer.re"
{
ts.push_token(Token(Token::Integer, lineno, token_start, cursor));
token_start = cursor;
continue;
}
-#line 202 "lexer.cpp"
- yy16:
+#line 222 "lexer.cpp"
+ yy20:
marker = ++cursor;
if ((limit - cursor) < 2)
return true;
@@ -236,7 +268,7 @@ bool Lexer::tokenize(TokenStream& ts)
switch (yych)
{
case '.':
- goto yy39;
+ goto yy49;
case '0':
case '1':
case '2':
@@ -247,27 +279,27 @@ bool Lexer::tokenize(TokenStream& ts)
case '7':
case '8':
case '9':
- goto yy16;
+ goto yy20;
case ':':
- goto yy18;
+ goto yy22;
default:
- goto yy15;
+ goto yy19;
}
- yy18:
+ yy22:
++cursor;
-#line 256 "lexer.re"
+#line 272 "lexer.re"
{
token_start = cursor;
continue;
}
-#line 230 "lexer.cpp"
- yy20:
+#line 250 "lexer.cpp"
+ yy24:
++cursor;
if (limit <= cursor)
return true;
yych = *cursor;
- yy21:
+ yy25:
switch (yych)
{
case '0':
@@ -333,25 +365,25 @@ bool Lexer::tokenize(TokenStream& ts)
case 'x':
case 'y':
case 'z':
- goto yy20;
+ goto yy24;
default:
- goto yy22;
+ goto yy26;
}
- yy22:
-#line 243 "lexer.re"
+ yy26:
+#line 252 "lexer.re"
{
ts.push_token(Token(Token::Ident, lineno, token_start, cursor));
token_start = cursor;
continue;
}
-#line 311 "lexer.cpp"
- yy23:
+#line 331 "lexer.cpp"
+ yy27:
yych = *++cursor;
switch (yych)
{
case '0':
- goto yy40;
+ goto yy50;
case '1':
case '2':
case '3':
@@ -361,84 +393,84 @@ bool Lexer::tokenize(TokenStream& ts)
case '7':
case '8':
case '9':
- goto yy42;
+ goto yy52;
case 'd':
- goto yy44;
+ goto yy54;
default:
- goto yy21;
+ goto yy25;
}
- yy24:
+ yy28:
yych = *++cursor;
switch (yych)
{
case 'a':
- goto yy45;
+ goto yy55;
case 'o':
- goto yy46;
+ goto yy56;
default:
- goto yy21;
+ goto yy25;
}
- yy25:
+ yy29:
yych = *++cursor;
switch (yych)
{
case 'i':
- goto yy47;
+ goto yy57;
case 'u':
- goto yy48;
+ goto yy58;
default:
- goto yy21;
+ goto yy25;
}
- yy26:
+ yy30:
yych = *++cursor;
switch (yych)
{
case 'm':
- goto yy49;
+ goto yy59;
default:
- goto yy21;
+ goto yy25;
}
- yy27:
+ yy31:
yych = *++cursor;
switch (yych)
{
case 'a':
- goto yy50;
+ goto yy60;
case 'e':
- goto yy51;
+ goto yy61;
default:
- goto yy21;
+ goto yy25;
}
- yy28:
+ yy32:
yych = *++cursor;
switch (yych)
{
case 'o':
- goto yy52;
+ goto yy62;
case 'u':
- goto yy53;
+ goto yy63;
default:
- goto yy21;
+ goto yy25;
}
- yy29:
+ yy33:
yych = *++cursor;
switch (yych)
{
case 'o':
- goto yy54;
+ goto yy64;
case 'r':
- goto yy55;
+ goto yy65;
case 'u':
- goto yy56;
+ goto yy66;
default:
- goto yy21;
+ goto yy25;
}
- yy30:
+ yy34:
yych = *++cursor;
switch (yych)
{
case '0':
- goto yy57;
+ goto yy67;
case '1':
case '2':
case '3':
@@ -448,40 +480,77 @@ bool Lexer::tokenize(TokenStream& ts)
case '7':
case '8':
case '9':
- goto yy59;
+ goto yy69;
case 'e':
- goto yy61;
+ goto yy71;
default:
- goto yy21;
+ goto yy25;
}
- yy31:
+ yy35:
yych = *++cursor;
switch (yych)
{
+ case 't':
+ goto yy72;
case 'u':
- goto yy62;
+ goto yy73;
default:
- goto yy21;
+ goto yy25;
}
- yy32:
+ yy36:
+ ++cursor;
+#line 259 "lexer.re"
+ {
+ ts.push_token(Token(Token::StringValue, lineno, token_start + 1,
+ cursor - 1));
+ token_start = cursor;
+
+ continue;
+ }
+#line 423 "lexer.cpp"
+ yy38:
+ ++cursor;
+ if (limit <= cursor)
+ return true;
+ yych = *cursor;
+ switch (yych)
+ {
+ case '\\':
+ goto yy38;
+ default:
+ goto yy11;
+ }
+ yy40:
++cursor;
-#line 261 "lexer.re"
+#line 277 "lexer.re"
{
++lineno;
token_start = cursor;
continue;
}
-#line 401 "lexer.cpp"
- yy34:
+#line 441 "lexer.cpp"
+ yy42:
++cursor;
- goto yy15;
- yy35:
+ if (limit <= cursor)
+ return true;
+ yych = *cursor;
+ switch (yych)
+ {
+ case '\\':
+ goto yy42;
+ default:
+ goto yy15;
+ }
+ yy44:
+ ++cursor;
+ goto yy19;
+ yy45:
++cursor;
if (limit <= cursor)
return true;
yych = *cursor;
- yy36:
+ yy46:
switch (yych)
{
case '0':
@@ -494,16 +563,16 @@ bool Lexer::tokenize(TokenStream& ts)
case '7':
case '8':
case '9':
- goto yy35;
+ goto yy45;
case ':':
- goto yy18;
+ goto yy22;
default:
- goto yy37;
+ goto yy47;
}
- yy37:
+ yy47:
cursor = marker;
- goto yy15;
- yy38:
+ goto yy19;
+ yy48:
yych = *++cursor;
switch (yych)
{
@@ -529,16 +598,16 @@ bool Lexer::tokenize(TokenStream& ts)
case 'd':
case 'e':
case 'f':
- goto yy63;
+ goto yy74;
default:
- goto yy37;
+ goto yy47;
}
- yy39:
+ yy49:
yych = *++cursor;
switch (yych)
{
case '0':
- goto yy66;
+ goto yy77;
case '1':
case '2':
case '3':
@@ -548,11 +617,11 @@ bool Lexer::tokenize(TokenStream& ts)
case '7':
case '8':
case '9':
- goto yy68;
+ goto yy79;
default:
- goto yy37;
+ goto yy47;
}
- yy40:
+ yy50:
yych = *++cursor;
switch (yych)
{
@@ -619,12 +688,12 @@ bool Lexer::tokenize(TokenStream& ts)
case 'x':
case 'y':
case 'z':
- goto yy20;
+ goto yy24;
default:
- goto yy41;
+ goto yy51;
}
- yy41:
-#line 84 "lexer.re"
+ yy51:
+#line 86 "lexer.re"
{
Token t(Token::Integer, lineno, token_start + 1, cursor);
t.set_int(-t.value_int());
@@ -632,8 +701,8 @@ bool Lexer::tokenize(TokenStream& ts)
token_start = cursor;
continue;
}
-#line 547 "lexer.cpp"
- yy42:
+#line 595 "lexer.cpp"
+ yy52:
++cursor;
if (limit <= cursor)
return true;
@@ -650,7 +719,7 @@ bool Lexer::tokenize(TokenStream& ts)
case '7':
case '8':
case '9':
- goto yy42;
+ goto yy52;
case 'A':
case 'B':
case 'C':
@@ -704,130 +773,130 @@ bool Lexer::tokenize(TokenStream& ts)
case 'x':
case 'y':
case 'z':
- goto yy20;
+ goto yy24;
default:
- goto yy41;
+ goto yy51;
}
- yy44:
+ yy54:
yych = *++cursor;
switch (yych)
{
case 'd':
- goto yy70;
+ goto yy81;
default:
- goto yy21;
+ goto yy25;
}
- yy45:
+ yy55:
yych = *++cursor;
switch (yych)
{
case 'l':
- goto yy72;
+ goto yy83;
default:
- goto yy21;
+ goto yy25;
}
- yy46:
+ yy56:
yych = *++cursor;
switch (yych)
{
case 'n':
- goto yy73;
+ goto yy84;
default:
- goto yy21;
+ goto yy25;
}
- yy47:
+ yy57:
yych = *++cursor;
switch (yych)
{
case 'v':
- goto yy74;
+ goto yy85;
default:
- goto yy21;
+ goto yy25;
}
- yy48:
+ yy58:
yych = *++cursor;
switch (yych)
{
case 'p':
- goto yy76;
+ goto yy87;
default:
- goto yy21;
+ goto yy25;
}
- yy49:
+ yy59:
yych = *++cursor;
switch (yych)
{
case 'p':
- goto yy78;
+ goto yy89;
default:
- goto yy21;
+ goto yy25;
}
- yy50:
+ yy60:
yych = *++cursor;
switch (yych)
{
case 'b':
- goto yy80;
+ goto yy91;
default:
- goto yy21;
+ goto yy25;
}
- yy51:
+ yy61:
yych = *++cursor;
switch (yych)
{
case 'q':
- goto yy81;
+ goto yy92;
case 's':
- goto yy83;
+ goto yy94;
default:
- goto yy21;
+ goto yy25;
}
- yy52:
+ yy62:
yych = *++cursor;
switch (yych)
{
case 'd':
- goto yy84;
+ goto yy95;
default:
- goto yy21;
+ goto yy25;
}
- yy53:
+ yy63:
yych = *++cursor;
switch (yych)
{
case 'l':
- goto yy86;
+ goto yy97;
default:
- goto yy21;
+ goto yy25;
}
- yy54:
+ yy64:
yych = *++cursor;
switch (yych)
{
case 'p':
- goto yy88;
+ goto yy99;
default:
- goto yy21;
+ goto yy25;
}
- yy55:
+ yy65:
yych = *++cursor;
switch (yych)
{
case 'i':
- goto yy90;
+ goto yy101;
default:
- goto yy21;
+ goto yy25;
}
- yy56:
+ yy66:
yych = *++cursor;
switch (yych)
{
case 's':
- goto yy91;
+ goto yy102;
default:
- goto yy21;
+ goto yy25;
}
- yy57:
+ yy67:
yych = *++cursor;
switch (yych)
{
@@ -894,12 +963,12 @@ bool Lexer::tokenize(TokenStream& ts)
case 'x':
case 'y':
case 'z':
- goto yy20;
+ goto yy24;
default:
- goto yy58;
+ goto yy68;
}
- yy58:
-#line 77 "lexer.re"
+ yy68:
+#line 79 "lexer.re"
{
ts.push_token(
Token(Token::Integer, lineno, token_start + 1, cursor));
@@ -907,8 +976,8 @@ bool Lexer::tokenize(TokenStream& ts)
continue;
}
-#line 774 "lexer.cpp"
- yy59:
+#line 822 "lexer.cpp"
+ yy69:
++cursor;
if (limit <= cursor)
return true;
@@ -925,7 +994,7 @@ bool Lexer::tokenize(TokenStream& ts)
case '7':
case '8':
case '9':
- goto yy59;
+ goto yy69;
case 'A':
case 'B':
case 'C':
@@ -979,31 +1048,40 @@ bool Lexer::tokenize(TokenStream& ts)
case 'x':
case 'y':
case 'z':
- goto yy20;
+ goto yy24;
default:
- goto yy58;
+ goto yy68;
}
- yy61:
+ yy71:
yych = *++cursor;
switch (yych)
{
case 'a':
- goto yy92;
+ goto yy103;
case 't':
- goto yy93;
+ goto yy104;
default:
- goto yy21;
+ goto yy25;
}
- yy62:
+ yy72:
+ yych = *++cursor;
+ switch (yych)
+ {
+ case 'r':
+ goto yy106;
+ default:
+ goto yy25;
+ }
+ yy73:
yych = *++cursor;
switch (yych)
{
case 'b':
- goto yy95;
+ goto yy107;
default:
- goto yy21;
+ goto yy25;
}
- yy63:
+ yy74:
++cursor;
if (limit <= cursor)
return true;
@@ -1032,23 +1110,23 @@ bool Lexer::tokenize(TokenStream& ts)
case 'd':
case 'e':
case 'f':
- goto yy63;
+ goto yy74;
default:
- goto yy65;
+ goto yy76;
}
- yy65:
-#line 93 "lexer.re"
+ yy76:
+#line 95 "lexer.re"
{
ts.push_token(Token(Token::XInteger, lineno, token_start, cursor));
token_start = cursor;
continue;
}
-#line 896 "lexer.cpp"
- yy66:
+#line 950 "lexer.cpp"
+ yy77:
++cursor;
- yy67:
-#line 68 "lexer.re"
+ yy78:
+#line 70 "lexer.re"
{
ts.push_token(
Token(Token::FloatingPoint, lineno, token_start, cursor));
@@ -1056,8 +1134,8 @@ bool Lexer::tokenize(TokenStream& ts)
continue;
}
-#line 909 "lexer.cpp"
- yy68:
+#line 963 "lexer.cpp"
+ yy79:
++cursor;
if (limit <= cursor)
return true;
@@ -1074,11 +1152,11 @@ bool Lexer::tokenize(TokenStream& ts)
case '7':
case '8':
case '9':
- goto yy68;
+ goto yy79;
default:
- goto yy67;
+ goto yy78;
}
- yy70:
+ yy81:
yych = *++cursor;
switch (yych)
{
@@ -1145,38 +1223,38 @@ bool Lexer::tokenize(TokenStream& ts)
case 'x':
case 'y':
case 'z':
- goto yy20;
+ goto yy24;
default:
- goto yy71;
+ goto yy82;
}
- yy71:
-#line 147 "lexer.re"
+ yy82:
+#line 149 "lexer.re"
{
ts.push_token(Token(Token::Add, lineno));
token_start = cursor;
continue;
}
-#line 1003 "lexer.cpp"
- yy72:
+#line 1057 "lexer.cpp"
+ yy83:
yych = *++cursor;
switch (yych)
{
case 'l':
- goto yy97;
+ goto yy109;
default:
- goto yy21;
+ goto yy25;
}
- yy73:
+ yy84:
yych = *++cursor;
switch (yych)
{
case 's':
- goto yy99;
+ goto yy111;
default:
- goto yy21;
+ goto yy25;
}
- yy74:
+ yy85:
yych = *++cursor;
switch (yych)
{
@@ -1243,20 +1321,20 @@ bool Lexer::tokenize(TokenStream& ts)
case 'x':
case 'y':
case 'z':
- goto yy20;
+ goto yy24;
default:
- goto yy75;
+ goto yy86;
}
- yy75:
-#line 168 "lexer.re"
+ yy86:
+#line 170 "lexer.re"
{
ts.push_token(Token(Token::Div, lineno));
token_start = cursor;
continue;
}
-#line 1092 "lexer.cpp"
- yy76:
+#line 1146 "lexer.cpp"
+ yy87:
yych = *++cursor;
switch (yych)
{
@@ -1323,20 +1401,20 @@ bool Lexer::tokenize(TokenStream& ts)
case 'x':
case 'y':
case 'z':
- goto yy20;
+ goto yy24;
default:
- goto yy77;
+ goto yy88;
}
- yy77:
-#line 126 "lexer.re"
+ yy88:
+#line 128 "lexer.re"
{
ts.push_token(Token(Token::Dup, lineno));
token_start = cursor;
continue;
}
-#line 1169 "lexer.cpp"
- yy78:
+#line 1223 "lexer.cpp"
+ yy89:
yych = *++cursor;
switch (yych)
{
@@ -1401,33 +1479,33 @@ bool Lexer::tokenize(TokenStream& ts)
case 'x':
case 'y':
case 'z':
- goto yy20;
+ goto yy24;
case 'f':
- goto yy100;
+ goto yy112;
case 't':
- goto yy102;
+ goto yy114;
default:
- goto yy79;
+ goto yy90;
}
- yy79:
-#line 196 "lexer.re"
+ yy90:
+#line 198 "lexer.re"
{
ts.push_token(Token(Token::Jump, lineno));
token_start = cursor;
continue;
}
-#line 1246 "lexer.cpp"
- yy80:
+#line 1300 "lexer.cpp"
+ yy91:
yych = *++cursor;
switch (yych)
{
case 'e':
- goto yy104;
+ goto yy116;
default:
- goto yy21;
+ goto yy25;
}
- yy81:
+ yy92:
yych = *++cursor;
switch (yych)
{
@@ -1494,29 +1572,29 @@ bool Lexer::tokenize(TokenStream& ts)
case 'x':
case 'y':
case 'z':
- goto yy20;
+ goto yy24;
default:
- goto yy82;
+ goto yy93;
}
- yy82:
-#line 223 "lexer.re"
+ yy93:
+#line 232 "lexer.re"
{
ts.push_token(Token(Token::LessEq, lineno));
token_start = cursor;
continue;
}
-#line 1329 "lexer.cpp"
- yy83:
+#line 1383 "lexer.cpp"
+ yy94:
yych = *++cursor;
switch (yych)
{
case 's':
- goto yy105;
+ goto yy117;
default:
- goto yy21;
+ goto yy25;
}
- yy84:
+ yy95:
yych = *++cursor;
switch (yych)
{
@@ -1583,20 +1661,20 @@ bool Lexer::tokenize(TokenStream& ts)
case 'x':
case 'y':
case 'z':
- goto yy20;
+ goto yy24;
default:
- goto yy85;
+ goto yy96;
}
- yy85:
-#line 175 "lexer.re"
+ yy96:
+#line 177 "lexer.re"
{
ts.push_token(Token(Token::Mod, lineno));
token_start = cursor;
continue;
}
-#line 1412 "lexer.cpp"
- yy86:
+#line 1466 "lexer.cpp"
+ yy97:
yych = *++cursor;
switch (yych)
{
@@ -1663,20 +1741,20 @@ bool Lexer::tokenize(TokenStream& ts)
case 'x':
case 'y':
case 'z':
- goto yy20;
+ goto yy24;
default:
- goto yy87;
+ goto yy98;
}
- yy87:
-#line 161 "lexer.re"
+ yy98:
+#line 163 "lexer.re"
{
ts.push_token(Token(Token::Mul, lineno));
token_start = cursor;
continue;
}
-#line 1489 "lexer.cpp"
- yy88:
+#line 1543 "lexer.cpp"
+ yy99:
yych = *++cursor;
switch (yych)
{
@@ -1742,49 +1820,49 @@ bool Lexer::tokenize(TokenStream& ts)
case 'x':
case 'y':
case 'z':
- goto yy20;
+ goto yy24;
case 'r':
- goto yy107;
+ goto yy119;
default:
- goto yy89;
+ goto yy100;
}
- yy89:
-#line 113 "lexer.re"
+ yy100:
+#line 115 "lexer.re"
{
ts.push_token(Token(Token::Pop, lineno));
token_start = cursor;
continue;
}
-#line 1566 "lexer.cpp"
- yy90:
+#line 1620 "lexer.cpp"
+ yy101:
yych = *++cursor;
switch (yych)
{
case 'n':
- goto yy109;
+ goto yy121;
default:
- goto yy21;
+ goto yy25;
}
- yy91:
+ yy102:
yych = *++cursor;
switch (yych)
{
case 'h':
- goto yy110;
+ goto yy122;
default:
- goto yy21;
+ goto yy25;
}
- yy92:
+ yy103:
yych = *++cursor;
switch (yych)
{
case 'd':
- goto yy112;
+ goto yy124;
default:
- goto yy21;
+ goto yy25;
}
- yy93:
+ yy104:
yych = *++cursor;
switch (yych)
{
@@ -1851,20 +1929,29 @@ bool Lexer::tokenize(TokenStream& ts)
case 'x':
case 'y':
case 'z':
- goto yy20;
+ goto yy24;
default:
- goto yy94;
+ goto yy105;
}
- yy94:
-#line 216 "lexer.re"
+ yy105:
+#line 225 "lexer.re"
{
ts.push_token(Token(Token::Ret, lineno));
token_start = cursor;
continue;
}
-#line 1661 "lexer.cpp"
- yy95:
+#line 1715 "lexer.cpp"
+ yy106:
+ yych = *++cursor;
+ switch (yych)
+ {
+ case 'i':
+ goto yy126;
+ default:
+ goto yy25;
+ }
+ yy107:
yych = *++cursor;
switch (yych)
{
@@ -1931,20 +2018,20 @@ bool Lexer::tokenize(TokenStream& ts)
case 'x':
case 'y':
case 'z':
- goto yy20;
+ goto yy24;
default:
- goto yy96;
+ goto yy108;
}
- yy96:
-#line 154 "lexer.re"
+ yy108:
+#line 156 "lexer.re"
{
ts.push_token(Token(Token::Sub, lineno));
token_start = cursor;
continue;
}
-#line 1738 "lexer.cpp"
- yy97:
+#line 1798 "lexer.cpp"
+ yy109:
yych = *++cursor;
switch (yych)
{
@@ -2011,29 +2098,29 @@ bool Lexer::tokenize(TokenStream& ts)
case 'x':
case 'y':
case 'z':
- goto yy20;
+ goto yy24;
default:
- goto yy98;
+ goto yy110;
}
- yy98:
-#line 209 "lexer.re"
+ yy110:
+#line 218 "lexer.re"
{
ts.push_token(Token(Token::Call, lineno));
token_start = cursor;
continue;
}
-#line 1815 "lexer.cpp"
- yy99:
+#line 1875 "lexer.cpp"
+ yy111:
yych = *++cursor;
switch (yych)
{
case 't':
- goto yy114;
+ goto yy127;
default:
- goto yy21;
+ goto yy25;
}
- yy100:
+ yy112:
yych = *++cursor;
switch (yych)
{
@@ -2100,20 +2187,20 @@ bool Lexer::tokenize(TokenStream& ts)
case 'x':
case 'y':
case 'z':
- goto yy20;
+ goto yy24;
default:
- goto yy101;
+ goto yy113;
}
- yy101:
-#line 189 "lexer.re"
+ yy113:
+#line 191 "lexer.re"
{
ts.push_token(Token(Token::JumpF, lineno));
token_start = cursor;
continue;
}
-#line 1898 "lexer.cpp"
- yy102:
+#line 1958 "lexer.cpp"
+ yy114:
yych = *++cursor;
switch (yych)
{
@@ -2180,29 +2267,29 @@ bool Lexer::tokenize(TokenStream& ts)
case 'x':
case 'y':
case 'z':
- goto yy20;
+ goto yy24;
default:
- goto yy103;
+ goto yy115;
}
- yy103:
-#line 182 "lexer.re"
+ yy115:
+#line 184 "lexer.re"
{
ts.push_token(Token(Token::JumpT, lineno));
token_start = cursor;
continue;
}
-#line 1975 "lexer.cpp"
- yy104:
+#line 2035 "lexer.cpp"
+ yy116:
yych = *++cursor;
switch (yych)
{
case 'l':
- goto yy116;
+ goto yy129;
default:
- goto yy21;
+ goto yy25;
}
- yy105:
+ yy117:
yych = *++cursor;
switch (yych)
{
@@ -2269,20 +2356,20 @@ bool Lexer::tokenize(TokenStream& ts)
case 'x':
case 'y':
case 'z':
- goto yy20;
+ goto yy24;
default:
- goto yy106;
+ goto yy118;
}
- yy106:
-#line 229 "lexer.re"
+ yy118:
+#line 238 "lexer.re"
{
ts.push_token(Token(Token::Less, lineno));
token_start = cursor;
continue;
}
-#line 2058 "lexer.cpp"
- yy107:
+#line 2118 "lexer.cpp"
+ yy119:
yych = *++cursor;
switch (yych)
{
@@ -2349,29 +2436,29 @@ bool Lexer::tokenize(TokenStream& ts)
case 'x':
case 'y':
case 'z':
- goto yy20;
+ goto yy24;
default:
- goto yy108;
+ goto yy120;
}
- yy108:
-#line 119 "lexer.re"
+ yy120:
+#line 121 "lexer.re"
{
ts.push_token(Token(Token::PopTo, lineno));
token_start = cursor;
continue;
}
-#line 2135 "lexer.cpp"
- yy109:
+#line 2195 "lexer.cpp"
+ yy121:
yych = *++cursor;
switch (yych)
{
case 't':
- goto yy118;
+ goto yy131;
default:
- goto yy21;
+ goto yy25;
}
- yy110:
+ yy122:
yych = *++cursor;
switch (yych)
{
@@ -2437,22 +2524,22 @@ bool Lexer::tokenize(TokenStream& ts)
case 'x':
case 'y':
case 'z':
- goto yy20;
+ goto yy24;
case 'r':
- goto yy120;
+ goto yy133;
default:
- goto yy111;
+ goto yy123;
}
- yy111:
-#line 107 "lexer.re"
+ yy123:
+#line 109 "lexer.re"
{
ts.push_token(Token(Token::Push, lineno));
token_start = cursor;
continue;
}
-#line 2218 "lexer.cpp"
- yy112:
+#line 2278 "lexer.cpp"
+ yy124:
yych = *++cursor;
switch (yych)
{
@@ -2519,20 +2606,29 @@ bool Lexer::tokenize(TokenStream& ts)
case 'x':
case 'y':
case 'z':
- goto yy20;
+ goto yy24;
default:
- goto yy113;
+ goto yy125;
}
- yy113:
-#line 133 "lexer.re"
+ yy125:
+#line 135 "lexer.re"
{
ts.push_token(Token(Token::Read, lineno));
token_start = cursor;
continue;
}
-#line 2295 "lexer.cpp"
- yy114:
+#line 2355 "lexer.cpp"
+ yy126:
+ yych = *++cursor;
+ switch (yych)
+ {
+ case 'n':
+ goto yy135;
+ default:
+ goto yy25;
+ }
+ yy127:
yych = *++cursor;
switch (yych)
{
@@ -2599,20 +2695,20 @@ bool Lexer::tokenize(TokenStream& ts)
case 'x':
case 'y':
case 'z':
- goto yy20;
+ goto yy24;
default:
- goto yy115;
+ goto yy128;
}
- yy115:
-#line 202 "lexer.re"
+ yy128:
+#line 204 "lexer.re"
{
ts.push_token(Token(Token::Const, lineno));
token_start = cursor;
continue;
}
-#line 2372 "lexer.cpp"
- yy116:
+#line 2438 "lexer.cpp"
+ yy129:
yych = *++cursor;
switch (yych)
{
@@ -2679,20 +2775,20 @@ bool Lexer::tokenize(TokenStream& ts)
case 'x':
case 'y':
case 'z':
- goto yy20;
+ goto yy24;
default:
- goto yy117;
+ goto yy130;
}
- yy117:
-#line 236 "lexer.re"
+ yy130:
+#line 245 "lexer.re"
{
ts.push_token(Token(Token::Label, lineno));
token_start = cursor;
continue;
}
-#line 2449 "lexer.cpp"
- yy118:
+#line 2515 "lexer.cpp"
+ yy131:
yych = *++cursor;
switch (yych)
{
@@ -2759,20 +2855,20 @@ bool Lexer::tokenize(TokenStream& ts)
case 'x':
case 'y':
case 'z':
- goto yy20;
+ goto yy24;
default:
- goto yy119;
+ goto yy132;
}
- yy119:
-#line 140 "lexer.re"
+ yy132:
+#line 142 "lexer.re"
{
ts.push_token(Token(Token::Print, lineno));
token_start = cursor;
continue;
}
-#line 2526 "lexer.cpp"
- yy120:
+#line 2592 "lexer.cpp"
+ yy133:
yych = *++cursor;
switch (yych)
{
@@ -2839,21 +2935,110 @@ bool Lexer::tokenize(TokenStream& ts)
case 'x':
case 'y':
case 'z':
- goto yy20;
+ goto yy24;
default:
- goto yy121;
+ goto yy134;
}
- yy121:
-#line 101 "lexer.re"
+ yy134:
+#line 103 "lexer.re"
{
ts.push_token(Token(Token::PushFrom, lineno));
token_start = cursor;
continue;
}
-#line 2603 "lexer.cpp"
+#line 2669 "lexer.cpp"
+ yy135:
+ yych = *++cursor;
+ switch (yych)
+ {
+ case 'g':
+ goto yy136;
+ default:
+ goto yy25;
+ }
+ yy136:
+ yych = *++cursor;
+ switch (yych)
+ {
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z':
+ case '_':
+ case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z':
+ goto yy24;
+ default:
+ goto yy137;
+ }
+ yy137:
+#line 211 "lexer.re"
+ {
+ ts.push_token(Token(Token::String, lineno));
+ token_start = cursor;
+
+ continue;
+ }
+#line 2752 "lexer.cpp"
}
-#line 284 "lexer.re"
+#line 300 "lexer.re"
}
return true;
}