summaryrefslogtreecommitdiffstats
path: root/src/parse.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/parse.cpp')
-rw-r--r--src/parse.cpp1617
1 files changed, 774 insertions, 843 deletions
diff --git a/src/parse.cpp b/src/parse.cpp
index d09522c..7c8b1f2 100644
--- a/src/parse.cpp
+++ b/src/parse.cpp
@@ -167,23 +167,11 @@ int parse_push(parse_context_t *parser, int token, const parse_token_value_t *va
parser->stack[++parser->top].state = 1;
break;
- case TOK_EXTRA_ARG:
- parser->stack[++parser->top].state = 1;
- break;
-
- case TOK_HEADER:
- parser->stack[++parser->top].state = 1;
- break;
-
- case TOK_SOURCE:
- parser->stack[++parser->top].state = 1;
- break;
-
case TOK_SYMBOL_LC:
parser->stack[++parser->top].state = 1;
break;
- case TOK_TYPE:
+ case '%':
parser->stack[++parser->top].state = 1;
break;
@@ -197,31 +185,16 @@ int parse_push(parse_context_t *parser, int token, const parse_token_value_t *va
case 0:
return 0;
- case TOK_EXTRA_ARG:
+ case TOK_SYMBOL_LC:
parser->stack[parser->top].value.token = *value;
parser->stack[++parser->top].state = 4;
return 1;
- case TOK_HEADER:
+ case '%':
parser->stack[parser->top].value.token = *value;
parser->stack[++parser->top].state = 5;
return 1;
- case TOK_SOURCE:
- parser->stack[parser->top].value.token = *value;
- parser->stack[++parser->top].state = 6;
- return 1;
-
- case TOK_SYMBOL_LC:
- parser->stack[parser->top].value.token = *value;
- parser->stack[++parser->top].state = 7;
- return 1;
-
- case TOK_TYPE:
- parser->stack[parser->top].value.token = *value;
- parser->stack[++parser->top].state = 8;
- return 1;
-
default:
return -1;
}
@@ -234,27 +207,12 @@ int parse_push(parse_context_t *parser, int token, const parse_token_value_t *va
parser->stack[++parser->top].state = 1;
break;
- case TOK_EXTRA_ARG:
- parser->top -= 2;
- parser->stack[++parser->top].state = 1;
- break;
-
- case TOK_HEADER:
- parser->top -= 2;
- parser->stack[++parser->top].state = 1;
- break;
-
- case TOK_SOURCE:
- parser->top -= 2;
- parser->stack[++parser->top].state = 1;
- break;
-
case TOK_SYMBOL_LC:
parser->top -= 2;
parser->stack[++parser->top].state = 1;
break;
- case TOK_TYPE:
+ case '%':
parser->top -= 2;
parser->stack[++parser->top].state = 1;
break;
@@ -272,31 +230,13 @@ int parse_push(parse_context_t *parser, int token, const parse_token_value_t *va
parser->stack[++parser->top].state = 2;
break;
- case TOK_EXTRA_ARG:
- parser->top -= 1;
- parse_reduce_3(parser->stack[parser->top + 0].value.symbol_rule, grammar);
- parser->stack[++parser->top].state = 2;
- break;
-
- case TOK_HEADER:
- parser->top -= 1;
- parse_reduce_3(parser->stack[parser->top + 0].value.symbol_rule, grammar);
- parser->stack[++parser->top].state = 2;
- break;
-
- case TOK_SOURCE:
- parser->top -= 1;
- parse_reduce_3(parser->stack[parser->top + 0].value.symbol_rule, grammar);
- parser->stack[++parser->top].state = 2;
- break;
-
case TOK_SYMBOL_LC:
parser->top -= 1;
parse_reduce_3(parser->stack[parser->top + 0].value.symbol_rule, grammar);
parser->stack[++parser->top].state = 2;
break;
- case TOK_TYPE:
+ case '%':
parser->top -= 1;
parse_reduce_3(parser->stack[parser->top + 0].value.symbol_rule, grammar);
parser->stack[++parser->top].state = 2;
@@ -309,9 +249,9 @@ int parse_push(parse_context_t *parser, int token, const parse_token_value_t *va
case 4:
switch (token) {
- case TOK_BLOCK:
+ case '|':
parser->stack[parser->top].value.token = *value;
- parser->stack[++parser->top].state = 9;
+ parser->stack[++parser->top].state = 6;
return 1;
default:
@@ -321,7 +261,22 @@ int parse_push(parse_context_t *parser, int token, const parse_token_value_t *va
case 5:
switch (token) {
- case TOK_BLOCK:
+ case 'e':
+ parser->stack[parser->top].value.token = *value;
+ parser->stack[++parser->top].state = 7;
+ return 1;
+
+ case 'h':
+ parser->stack[parser->top].value.token = *value;
+ parser->stack[++parser->top].state = 8;
+ return 1;
+
+ case 's':
+ parser->stack[parser->top].value.token = *value;
+ parser->stack[++parser->top].state = 9;
+ return 1;
+
+ case 't':
parser->stack[parser->top].value.token = *value;
parser->stack[++parser->top].state = 10;
return 1;
@@ -333,7 +288,7 @@ int parse_push(parse_context_t *parser, int token, const parse_token_value_t *va
case 6:
switch (token) {
- case TOK_BLOCK:
+ case '=':
parser->stack[parser->top].value.token = *value;
parser->stack[++parser->top].state = 11;
return 1;
@@ -345,7 +300,7 @@ int parse_push(parse_context_t *parser, int token, const parse_token_value_t *va
case 7:
switch (token) {
- case '|':
+ case 'x':
parser->stack[parser->top].value.token = *value;
parser->stack[++parser->top].state = 12;
return 1;
@@ -357,19 +312,82 @@ int parse_push(parse_context_t *parser, int token, const parse_token_value_t *va
case 8:
switch (token) {
- case TOK_CHAR:
+ case 'e':
+ parser->stack[parser->top].value.token = *value;
+ parser->stack[++parser->top].state = 13;
+ return 1;
+
+ default:
+ return -1;
+ }
+ break;
+
+ case 9:
+ switch (token) {
+ case 'o':
parser->stack[parser->top].value.token = *value;
parser->stack[++parser->top].state = 14;
return 1;
- case TOK_SYMBOL_LC:
+ default:
+ return -1;
+ }
+ break;
+
+ case 10:
+ switch (token) {
+ case 'y':
parser->stack[parser->top].value.token = *value;
parser->stack[++parser->top].state = 15;
return 1;
+ default:
+ return -1;
+ }
+ break;
+
+ case 11:
+ switch (token) {
+ case TOK_BLOCK:
+ parser->stack[parser->top].value.symbol_rhs = parse_reduce_10(grammar);
+ parser->stack[++parser->top].state = 16;
+ break;
+
+ case TOK_CHAR:
+ parser->stack[parser->top].value.symbol_rhs = parse_reduce_10(grammar);
+ parser->stack[++parser->top].state = 16;
+ break;
+
+ case TOK_STRING:
+ parser->stack[parser->top].value.symbol_rhs = parse_reduce_10(grammar);
+ parser->stack[++parser->top].state = 16;
+ break;
+
+ case TOK_SYMBOL_LC:
+ parser->stack[parser->top].value.symbol_rhs = parse_reduce_10(grammar);
+ parser->stack[++parser->top].state = 16;
+ break;
+
case TOK_SYMBOL_UC:
- parser->stack[parser->top].value.token = *value;
+ parser->stack[parser->top].value.symbol_rhs = parse_reduce_10(grammar);
+ parser->stack[++parser->top].state = 16;
+ break;
+
+ case ';':
+ parser->stack[parser->top].value.symbol_rhs = parse_reduce_10(grammar);
parser->stack[++parser->top].state = 16;
+ break;
+
+ default:
+ return -1;
+ }
+ break;
+
+ case 12:
+ switch (token) {
+ case 't':
+ parser->stack[parser->top].value.token = *value;
+ parser->stack[++parser->top].state = 17;
return 1;
default:
@@ -377,19 +395,33 @@ int parse_push(parse_context_t *parser, int token, const parse_token_value_t *va
}
break;
- case 9:
+ case 13:
switch (token) {
- case TOK_SYMBOL:
+ case 'a':
parser->stack[parser->top].value.token = *value;
parser->stack[++parser->top].state = 18;
return 1;
- case TOK_SYMBOL_LC:
+ default:
+ return -1;
+ }
+ break;
+
+ case 14:
+ switch (token) {
+ case 'u':
parser->stack[parser->top].value.token = *value;
parser->stack[++parser->top].state = 19;
return 1;
- case TOK_SYMBOL_UC:
+ default:
+ return -1;
+ }
+ break;
+
+ case 15:
+ switch (token) {
+ case 'p':
parser->stack[parser->top].value.token = *value;
parser->stack[++parser->top].state = 20;
return 1;
@@ -399,42 +431,109 @@ int parse_push(parse_context_t *parser, int token, const parse_token_value_t *va
}
break;
- case 10:
+ case 16:
switch (token) {
- case 0:
- parser->top -= 2;
- parse_reduce_7(parser->stack[parser->top + 1].value.token.str, grammar);
- parser->stack[++parser->top].state = 2;
- break;
+ case TOK_BLOCK:
+ parser->stack[parser->top].value.token = *value;
+ parser->stack[++parser->top].state = 24;
+ return 1;
- case TOK_EXTRA_ARG:
- parser->top -= 2;
- parse_reduce_7(parser->stack[parser->top + 1].value.token.str, grammar);
- parser->stack[++parser->top].state = 2;
- break;
+ case TOK_CHAR:
+ parser->stack[parser->top].value.token = *value;
+ parser->stack[++parser->top].state = 25;
+ return 1;
- case TOK_HEADER:
- parser->top -= 2;
- parse_reduce_7(parser->stack[parser->top + 1].value.token.str, grammar);
- parser->stack[++parser->top].state = 2;
- break;
+ case TOK_STRING:
+ parser->stack[parser->top].value.token = *value;
+ parser->stack[++parser->top].state = 26;
+ return 1;
- case TOK_SOURCE:
- parser->top -= 2;
- parse_reduce_7(parser->stack[parser->top + 1].value.token.str, grammar);
- parser->stack[++parser->top].state = 2;
+ case TOK_SYMBOL_LC:
+ parser->stack[parser->top].value.token = *value;
+ parser->stack[++parser->top].state = 27;
+ return 1;
+
+ case TOK_SYMBOL_UC:
+ parser->stack[parser->top].value.token = *value;
+ parser->stack[++parser->top].state = 28;
+ return 1;
+
+ case ';':
+ parser->stack[parser->top].value.token = *value;
+ parser->stack[++parser->top].state = 29;
+ return 1;
+
+ default:
+ return -1;
+ }
+ break;
+
+ case 17:
+ switch (token) {
+ case 'r':
+ parser->stack[parser->top].value.token = *value;
+ parser->stack[++parser->top].state = 30;
+ return 1;
+
+ default:
+ return -1;
+ }
+ break;
+
+ case 18:
+ switch (token) {
+ case 'd':
+ parser->stack[parser->top].value.token = *value;
+ parser->stack[++parser->top].state = 31;
+ return 1;
+
+ default:
+ return -1;
+ }
+ break;
+
+ case 19:
+ switch (token) {
+ case 'r':
+ parser->stack[parser->top].value.token = *value;
+ parser->stack[++parser->top].state = 32;
+ return 1;
+
+ default:
+ return -1;
+ }
+ break;
+
+ case 20:
+ switch (token) {
+ case 'e':
+ parser->stack[parser->top].value.token = *value;
+ parser->stack[++parser->top].state = 33;
+ return 1;
+
+ default:
+ return -1;
+ }
+ break;
+
+ case 21:
+ switch (token) {
+ case 0:
+ parser->top -= 5;
+ parser->stack[parser->top].value.symbol_rule = parse_reduce_9(parser->stack[parser->top + 0].value.token.str, parser->stack[parser->top + 3].value.symbol_rhs, parser->stack[parser->top + 4].value.symbol_action, grammar);
+ parser->stack[++parser->top].state = 3;
break;
case TOK_SYMBOL_LC:
- parser->top -= 2;
- parse_reduce_7(parser->stack[parser->top + 1].value.token.str, grammar);
- parser->stack[++parser->top].state = 2;
+ parser->top -= 5;
+ parser->stack[parser->top].value.symbol_rule = parse_reduce_9(parser->stack[parser->top + 0].value.token.str, parser->stack[parser->top + 3].value.symbol_rhs, parser->stack[parser->top + 4].value.symbol_action, grammar);
+ parser->stack[++parser->top].state = 3;
break;
- case TOK_TYPE:
- parser->top -= 2;
- parse_reduce_7(parser->stack[parser->top + 1].value.token.str, grammar);
- parser->stack[++parser->top].state = 2;
+ case '%':
+ parser->top -= 5;
+ parser->stack[parser->top].value.symbol_rule = parse_reduce_9(parser->stack[parser->top + 0].value.token.str, parser->stack[parser->top + 3].value.symbol_rhs, parser->stack[parser->top + 4].value.symbol_action, grammar);
+ parser->stack[++parser->top].state = 3;
break;
default:
@@ -442,42 +541,47 @@ int parse_push(parse_context_t *parser, int token, const parse_token_value_t *va
}
break;
- case 11:
+ case 22:
switch (token) {
- case 0:
+ case TOK_BLOCK:
parser->top -= 2;
- parse_reduce_6(parser->stack[parser->top + 1].value.token.str, grammar);
- parser->stack[++parser->top].state = 2;
+ parser->stack[parser->top].value.symbol_rhs = parse_reduce_11(parser->stack[parser->top + 0].value.symbol_rhs, parser->stack[parser->top + 1].value.symbol_symbol, grammar);
+ parser->stack[++parser->top].state = 16;
break;
- case TOK_EXTRA_ARG:
+ case TOK_CHAR:
parser->top -= 2;
- parse_reduce_6(parser->stack[parser->top + 1].value.token.str, grammar);
- parser->stack[++parser->top].state = 2;
+ parser->stack[parser->top].value.symbol_rhs = parse_reduce_11(parser->stack[parser->top + 0].value.symbol_rhs, parser->stack[parser->top + 1].value.symbol_symbol, grammar);
+ parser->stack[++parser->top].state = 16;
break;
- case TOK_HEADER:
+ case TOK_STRING:
parser->top -= 2;
- parse_reduce_6(parser->stack[parser->top + 1].value.token.str, grammar);
- parser->stack[++parser->top].state = 2;
+ parser->stack[parser->top].value.symbol_rhs = parse_reduce_11(parser->stack[parser->top + 0].value.symbol_rhs, parser->stack[parser->top + 1].value.symbol_symbol, grammar);
+ parser->stack[++parser->top].state = 16;
break;
- case TOK_SOURCE:
+ case TOK_SYMBOL_LC:
parser->top -= 2;
- parse_reduce_6(parser->stack[parser->top + 1].value.token.str, grammar);
- parser->stack[++parser->top].state = 2;
+ parser->stack[parser->top].value.symbol_rhs = parse_reduce_11(parser->stack[parser->top + 0].value.symbol_rhs, parser->stack[parser->top + 1].value.symbol_symbol, grammar);
+ parser->stack[++parser->top].state = 16;
break;
- case TOK_SYMBOL_LC:
+ case TOK_SYMBOL_UC:
parser->top -= 2;
- parse_reduce_6(parser->stack[parser->top + 1].value.token.str, grammar);
- parser->stack[++parser->top].state = 2;
+ parser->stack[parser->top].value.symbol_rhs = parse_reduce_11(parser->stack[parser->top + 0].value.symbol_rhs, parser->stack[parser->top + 1].value.symbol_symbol, grammar);
+ parser->stack[++parser->top].state = 16;
break;
- case TOK_TYPE:
+ case '(':
+ parser->stack[parser->top].value.token = *value;
+ parser->stack[++parser->top].state = 34;
+ return 1;
+
+ case ';':
parser->top -= 2;
- parse_reduce_6(parser->stack[parser->top + 1].value.token.str, grammar);
- parser->stack[++parser->top].state = 2;
+ parser->stack[parser->top].value.symbol_rhs = parse_reduce_11(parser->stack[parser->top + 0].value.symbol_rhs, parser->stack[parser->top + 1].value.symbol_symbol, grammar);
+ parser->stack[++parser->top].state = 16;
break;
default:
@@ -485,41 +589,91 @@ int parse_push(parse_context_t *parser, int token, const parse_token_value_t *va
}
break;
- case 12:
+ case 23:
switch (token) {
- case '=':
- parser->stack[parser->top].value.token = *value;
- parser->stack[++parser->top].state = 21;
- return 1;
+ case TOK_BLOCK:
+ parser->top -= 1;
+ parser->stack[parser->top].value.symbol_symbol = parse_reduce_16(parser->stack[parser->top + 0].value.symbol_term, grammar);
+ parser->stack[++parser->top].state = 22;
+ break;
+
+ case TOK_CHAR:
+ parser->top -= 1;
+ parser->stack[parser->top].value.symbol_symbol = parse_reduce_16(parser->stack[parser->top + 0].value.symbol_term, grammar);
+ parser->stack[++parser->top].state = 22;
+ break;
+
+ case TOK_STRING:
+ parser->top -= 1;
+ parser->stack[parser->top].value.symbol_symbol = parse_reduce_16(parser->stack[parser->top + 0].value.symbol_term, grammar);
+ parser->stack[++parser->top].state = 22;
+ break;
+
+ case TOK_SYMBOL_LC:
+ parser->top -= 1;
+ parser->stack[parser->top].value.symbol_symbol = parse_reduce_16(parser->stack[parser->top + 0].value.symbol_term, grammar);
+ parser->stack[++parser->top].state = 22;
+ break;
+
+ case TOK_SYMBOL_UC:
+ parser->top -= 1;
+ parser->stack[parser->top].value.symbol_symbol = parse_reduce_16(parser->stack[parser->top + 0].value.symbol_term, grammar);
+ parser->stack[++parser->top].state = 22;
+ break;
+
+ case '(':
+ parser->top -= 1;
+ parser->stack[parser->top].value.symbol_symbol = parse_reduce_16(parser->stack[parser->top + 0].value.symbol_term, grammar);
+ parser->stack[++parser->top].state = 22;
+ break;
+
+ case ';':
+ parser->top -= 1;
+ parser->stack[parser->top].value.symbol_symbol = parse_reduce_16(parser->stack[parser->top + 0].value.symbol_term, grammar);
+ parser->stack[++parser->top].state = 22;
+ break;
default:
return -1;
}
break;
- case 13:
+ case 24:
switch (token) {
- case TOK_BLOCK:
- parser->stack[parser->top].value.token = *value;
- parser->stack[++parser->top].state = 22;
- return 1;
+ case 0:
+ parser->top -= 1;
+ parser->stack[parser->top].value.symbol_action = parse_reduce_15(parser->stack[parser->top + 0].value.token.str, grammar);
+ parser->stack[++parser->top].state = 21;
+ break;
+
+ case TOK_SYMBOL_LC:
+ parser->top -= 1;
+ parser->stack[parser->top].value.symbol_action = parse_reduce_15(parser->stack[parser->top + 0].value.token.str, grammar);
+ parser->stack[++parser->top].state = 21;
+ break;
+
+ case '%':
+ parser->top -= 1;
+ parser->stack[parser->top].value.symbol_action = parse_reduce_15(parser->stack[parser->top + 0].value.token.str, grammar);
+ parser->stack[++parser->top].state = 21;
+ break;
default:
return -1;
}
break;
- case 14:
+ case 25:
switch (token) {
case TOK_BLOCK:
parser->top -= 1;
parser->stack[parser->top].value.symbol_term = parse_reduce_19(parser->stack[parser->top + 0].value.token.c, grammar);
switch (parser->stack[parser->top].state) {
- case 8:
- parser->stack[++parser->top].state = 13;
+ case 16:
+ parser->stack[++parser->top].state = 23;
break;
- case 24:
- parser->stack[++parser->top].state = 28;
+ case 33:
+ parser->stack[++parser->top].state = 38;
break;
}
break;
@@ -528,11 +682,11 @@ int parse_push(parse_context_t *parser, int token, const parse_token_value_t *va
parser->top -= 1;
parser->stack[parser->top].value.symbol_term = parse_reduce_19(parser->stack[parser->top + 0].value.token.c, grammar);
switch (parser->stack[parser->top].state) {
- case 8:
- parser->stack[++parser->top].state = 13;
+ case 16:
+ parser->stack[++parser->top].state = 23;
break;
- case 24:
- parser->stack[++parser->top].state = 28;
+ case 33:
+ parser->stack[++parser->top].state = 38;
break;
}
break;
@@ -541,11 +695,11 @@ int parse_push(parse_context_t *parser, int token, const parse_token_value_t *va
parser->top -= 1;
parser->stack[parser->top].value.symbol_term = parse_reduce_19(parser->stack[parser->top + 0].value.token.c, grammar);
switch (parser->stack[parser->top].state) {
- case 8:
- parser->stack[++parser->top].state = 13;
+ case 16:
+ parser->stack[++parser->top].state = 23;
break;
- case 24:
- parser->stack[++parser->top].state = 28;
+ case 33:
+ parser->stack[++parser->top].state = 38;
break;
}
break;
@@ -554,11 +708,11 @@ int parse_push(parse_context_t *parser, int token, const parse_token_value_t *va
parser->top -= 1;
parser->stack[parser->top].value.symbol_term = parse_reduce_19(parser->stack[parser->top + 0].value.token.c, grammar);
switch (parser->stack[parser->top].state) {
- case 8:
- parser->stack[++parser->top].state = 13;
+ case 16:
+ parser->stack[++parser->top].state = 23;
break;
- case 24:
- parser->stack[++parser->top].state = 28;
+ case 33:
+ parser->stack[++parser->top].state = 38;
break;
}
break;
@@ -567,11 +721,11 @@ int parse_push(parse_context_t *parser, int token, const parse_token_value_t *va
parser->top -= 1;
parser->stack[parser->top].value.symbol_term = parse_reduce_19(parser->stack[parser->top + 0].value.token.c, grammar);
switch (parser->stack[parser->top].state) {
- case 8:
- parser->stack[++parser->top].state = 13;
+ case 16:
+ parser->stack[++parser->top].state = 23;
break;
- case 24:
- parser->stack[++parser->top].state = 28;
+ case 33:
+ parser->stack[++parser->top].state = 38;
break;
}
break;
@@ -580,11 +734,11 @@ int parse_push(parse_context_t *parser, int token, const parse_token_value_t *va
parser->top -= 1;
parser->stack[parser->top].value.symbol_term = parse_reduce_19(parser->stack[parser->top + 0].value.token.c, grammar);
switch (parser->stack[parser->top].state) {
- case 8:
- parser->stack[++parser->top].state = 13;
+ case 16:
+ parser->stack[++parser->top].state = 23;
break;
- case 24:
- parser->stack[++parser->top].state = 28;
+ case 33:
+ parser->stack[++parser->top].state = 38;
break;
}
break;
@@ -593,11 +747,11 @@ int parse_push(parse_context_t *parser, int token, const parse_token_value_t *va
parser->top -= 1;
parser->stack[parser->top].value.symbol_term = parse_reduce_19(parser->stack[parser->top + 0].value.token.c, grammar);
switch (parser->stack[parser->top].state) {
- case 8:
- parser->stack[++parser->top].state = 13;
+ case 16:
+ parser->stack[++parser->top].state = 23;
break;
- case 24:
- parser->stack[++parser->top].state = 28;
+ case 33:
+ parser->stack[++parser->top].state = 38;
break;
}
break;
@@ -607,29 +761,109 @@ int parse_push(parse_context_t *parser, int token, const parse_token_value_t *va
}
break;
- case 15:
+ case 26:
switch (token) {
case TOK_BLOCK:
- parser->stack[parser->top].value.token = *value;
- parser->stack[++parser->top].state = 23;
- return 1;
+ parser->top -= 2;
+ parser->stack[parser->top].value.symbol_rhs = parse_reduce_13(parser->stack[parser->top + 0].value.symbol_rhs, parser->stack[parser->top + 1].value.token.str, grammar);
+ parser->stack[++parser->top].state = 16;
+ break;
+
+ case TOK_CHAR:
+ parser->top -= 2;
+ parser->stack[parser->top].value.symbol_rhs = parse_reduce_13(parser->stack[parser->top + 0].value.symbol_rhs, parser->stack[parser->top + 1].value.token.str, grammar);
+ parser->stack[++parser->top].state = 16;
+ break;
+
+ case TOK_STRING:
+ parser->top -= 2;
+ parser->stack[parser->top].value.symbol_rhs = parse_reduce_13(parser->stack[parser->top + 0].value.symbol_rhs, parser->stack[parser->top + 1].value.token.str, grammar);
+ parser->stack[++parser->top].state = 16;
+ break;
+
+ case TOK_SYMBOL_LC:
+ parser->top -= 2;
+ parser->stack[parser->top].value.symbol_rhs = parse_reduce_13(parser->stack[parser->top + 0].value.symbol_rhs, parser->stack[parser->top + 1].value.token.str, grammar);
+ parser->stack[++parser->top].state = 16;
+ break;
+
+ case TOK_SYMBOL_UC:
+ parser->top -= 2;
+ parser->stack[parser->top].value.symbol_rhs = parse_reduce_13(parser->stack[parser->top + 0].value.symbol_rhs, parser->stack[parser->top + 1].value.token.str, grammar);
+ parser->stack[++parser->top].state = 16;
+ break;
+
+ case ';':
+ parser->top -= 2;
+ parser->stack[parser->top].value.symbol_rhs = parse_reduce_13(parser->stack[parser->top + 0].value.symbol_rhs, parser->stack[parser->top + 1].value.token.str, grammar);
+ parser->stack[++parser->top].state = 16;
+ break;
default:
return -1;
}
break;
- case 16:
+ case 27:
+ switch (token) {
+ case TOK_BLOCK:
+ parser->top -= 1;
+ parser->stack[parser->top].value.symbol_symbol = parse_reduce_17(parser->stack[parser->top + 0].value.token.str, grammar);
+ parser->stack[++parser->top].state = 22;
+ break;
+
+ case TOK_CHAR:
+ parser->top -= 1;
+ parser->stack[parser->top].value.symbol_symbol = parse_reduce_17(parser->stack[parser->top + 0].value.token.str, grammar);
+ parser->stack[++parser->top].state = 22;
+ break;
+
+ case TOK_STRING:
+ parser->top -= 1;
+ parser->stack[parser->top].value.symbol_symbol = parse_reduce_17(parser->stack[parser->top + 0].value.token.str, grammar);
+ parser->stack[++parser->top].state = 22;
+ break;
+
+ case TOK_SYMBOL_LC:
+ parser->top -= 1;
+ parser->stack[parser->top].value.symbol_symbol = parse_reduce_17(parser->stack[parser->top + 0].value.token.str, grammar);
+ parser->stack[++parser->top].state = 22;
+ break;
+
+ case TOK_SYMBOL_UC:
+ parser->top -= 1;
+ parser->stack[parser->top].value.symbol_symbol = parse_reduce_17(parser->stack[parser->top + 0].value.token.str, grammar);
+ parser->stack[++parser->top].state = 22;
+ break;
+
+ case '(':
+ parser->top -= 1;
+ parser->stack[parser->top].value.symbol_symbol = parse_reduce_17(parser->stack[parser->top + 0].value.token.str, grammar);
+ parser->stack[++parser->top].state = 22;
+ break;
+
+ case ';':
+ parser->top -= 1;
+ parser->stack[parser->top].value.symbol_symbol = parse_reduce_17(parser->stack[parser->top + 0].value.token.str, grammar);
+ parser->stack[++parser->top].state = 22;
+ break;
+
+ default:
+ return -1;
+ }
+ break;
+
+ case 28:
switch (token) {
case TOK_BLOCK:
parser->top -= 1;
parser->stack[parser->top].value.symbol_term = parse_reduce_18(parser->stack[parser->top + 0].value.token.str, grammar);
switch (parser->stack[parser->top].state) {
- case 8:
- parser->stack[++parser->top].state = 13;
+ case 16:
+ parser->stack[++parser->top].state = 23;
break;
- case 24:
- parser->stack[++parser->top].state = 28;
+ case 33:
+ parser->stack[++parser->top].state = 38;
break;
}
break;
@@ -638,11 +872,11 @@ int parse_push(parse_context_t *parser, int token, const parse_token_value_t *va
parser->top -= 1;
parser->stack[parser->top].value.symbol_term = parse_reduce_18(parser->stack[parser->top + 0].value.token.str, grammar);
switch (parser->stack[parser->top].state) {
- case 8:
- parser->stack[++parser->top].state = 13;
+ case 16:
+ parser->stack[++parser->top].state = 23;
break;
- case 24:
- parser->stack[++parser->top].state = 28;
+ case 33:
+ parser->stack[++parser->top].state = 38;
break;
}
break;
@@ -651,11 +885,11 @@ int parse_push(parse_context_t *parser, int token, const parse_token_value_t *va
parser->top -= 1;
parser->stack[parser->top].value.symbol_term = parse_reduce_18(parser->stack[parser->top + 0].value.token.str, grammar);
switch (parser->stack[parser->top].state) {
- case 8:
- parser->stack[++parser->top].state = 13;
+ case 16:
+ parser->stack[++parser->top].state = 23;
break;
- case 24:
- parser->stack[++parser->top].state = 28;
+ case 33:
+ parser->stack[++parser->top].state = 38;
break;
}
break;
@@ -664,11 +898,11 @@ int parse_push(parse_context_t *parser, int token, const parse_token_value_t *va
parser->top -= 1;
parser->stack[parser->top].value.symbol_term = parse_reduce_18(parser->stack[parser->top + 0].value.token.str, grammar);
switch (parser->stack[parser->top].state) {
- case 8:
- parser->stack[++parser->top].state = 13;
+ case 16:
+ parser->stack[++parser->top].state = 23;
break;
- case 24:
- parser->stack[++parser->top].state = 28;
+ case 33:
+ parser->stack[++parser->top].state = 38;
break;
}
break;
@@ -677,11 +911,11 @@ int parse_push(parse_context_t *parser, int token, const parse_token_value_t *va
parser->top -= 1;
parser->stack[parser->top].value.symbol_term = parse_reduce_18(parser->stack[parser->top + 0].value.token.str, grammar);
switch (parser->stack[parser->top].state) {
- case 8:
- parser->stack[++parser->top].state = 13;
+ case 16:
+ parser->stack[++parser->top].state = 23;
break;
- case 24:
- parser->stack[++parser->top].state = 28;
+ case 33:
+ parser->stack[++parser->top].state = 38;
break;
}
break;
@@ -690,11 +924,11 @@ int parse_push(parse_context_t *parser, int token, const parse_token_value_t *va
parser->top -= 1;
parser->stack[parser->top].value.symbol_term = parse_reduce_18(parser->stack[parser->top + 0].value.token.str, grammar);
switch (parser->stack[parser->top].state) {
- case 8:
- parser->stack[++parser->top].state = 13;
+ case 16:
+ parser->stack[++parser->top].state = 23;
break;
- case 24:
- parser->stack[++parser->top].state = 28;
+ case 33:
+ parser->stack[++parser->top].state = 38;
break;
}
break;
@@ -703,11 +937,11 @@ int parse_push(parse_context_t *parser, int token, const parse_token_value_t *va
parser->top -= 1;
parser->stack[parser->top].value.symbol_term = parse_reduce_18(parser->stack[parser->top + 0].value.token.str, grammar);
switch (parser->stack[parser->top].state) {
- case 8:
- parser->stack[++parser->top].state = 13;
+ case 16:
+ parser->stack[++parser->top].state = 23;
break;
- case 24:
- parser->stack[++parser->top].state = 28;
+ case 33:
+ parser->stack[++parser->top].state = 38;
break;
}
break;
@@ -717,111 +951,197 @@ int parse_push(parse_context_t *parser, int token, const parse_token_value_t *va
}
break;
- case 17:
+ case 29:
switch (token) {
case 0:
- parser->top -= 3;
- parse_reduce_8(parser->stack[parser->top + 1].value.token.str, parser->stack[parser->top + 2].value.symbol_varname, grammar);
- parser->stack[++parser->top].state = 2;
+ parser->top -= 1;
+ parser->stack[parser->top].value.symbol_action = parse_reduce_14(grammar);
+ parser->stack[++parser->top].state = 21;
break;
- case TOK_EXTRA_ARG:
- parser->top -= 3;
- parse_reduce_8(parser->stack[parser->top + 1].value.token.str, parser->stack[parser->top + 2].value.symbol_varname, grammar);
- parser->stack[++parser->top].state = 2;
+ case TOK_SYMBOL_LC:
+ parser->top -= 1;
+ parser->stack[parser->top].value.symbol_action = parse_reduce_14(grammar);
+ parser->stack[++parser->top].state = 21;
break;
- case TOK_HEADER:
- parser->top -= 3;
- parse_reduce_8(parser->stack[parser->top + 1].value.token.str, parser->stack[parser->top + 2].value.symbol_varname, grammar);
- parser->stack[++parser->top].state = 2;
+ case '%':
+ parser->top -= 1;
+ parser->stack[parser->top].value.symbol_action = parse_reduce_14(grammar);
+ parser->stack[++parser->top].state = 21;
break;
- case TOK_SOURCE:
- parser->top -= 3;
- parse_reduce_8(parser->stack[parser->top + 1].value.token.str, parser->stack[parser->top + 2].value.symbol_varname, grammar);
- parser->stack[++parser->top].state = 2;
- break;
+ default:
+ return -1;
+ }
+ break;
+
+ case 30:
+ switch (token) {
+ case 'a':
+ parser->stack[parser->top].value.token = *value;
+ parser->stack[++parser->top].state = 35;
+ return 1;
+
+ default:
+ return -1;
+ }
+ break;
+
+ case 31:
+ switch (token) {
+ case 'e':
+ parser->stack[parser->top].value.token = *value;
+ parser->stack[++parser->top].state = 36;
+ return 1;
+
+ default:
+ return -1;
+ }
+ break;
+
+ case 32:
+ switch (token) {
+ case 'c':
+ parser->stack[parser->top].value.token = *value;
+ parser->stack[++parser->top].state = 37;
+ return 1;
+
+ default:
+ return -1;
+ }
+ break;
+
+ case 33:
+ switch (token) {
+ case TOK_CHAR:
+ parser->stack[parser->top].value.token = *value;
+ parser->stack[++parser->top].state = 25;
+ return 1;
case TOK_SYMBOL_LC:
- parser->top -= 3;
- parse_reduce_8(parser->stack[parser->top + 1].value.token.str, parser->stack[parser->top + 2].value.symbol_varname, grammar);
- parser->stack[++parser->top].state = 2;
- break;
+ parser->stack[parser->top].value.token = *value;
+ parser->stack[++parser->top].state = 39;
+ return 1;
- case TOK_TYPE:
- parser->top -= 3;
- parse_reduce_8(parser->stack[parser->top + 1].value.token.str, parser->stack[parser->top + 2].value.symbol_varname, grammar);
- parser->stack[++parser->top].state = 2;
- break;
+ case TOK_SYMBOL_UC:
+ parser->stack[parser->top].value.token = *value;
+ parser->stack[++parser->top].state = 28;
+ return 1;
default:
return -1;
}
break;
- case 18:
+ case 34:
switch (token) {
- case 0:
- parser->top -= 1;
- parser->stack[parser->top].value.symbol_varname = parse_reduce_22(parser->stack[parser->top + 0].value.token.str, grammar);
- switch (parser->stack[parser->top].state) {
- case 9:
- parser->stack[++parser->top].state = 17;
- break;
- case 22:
- parser->stack[++parser->top].state = 25;
- break;
- case 33:
- parser->stack[++parser->top].state = 34;
- break;
- }
- break;
+ case TOK_SYMBOL:
+ parser->stack[parser->top].value.token = *value;
+ parser->stack[++parser->top].state = 41;
+ return 1;
- case TOK_EXTRA_ARG:
- parser->top -= 1;
- parser->stack[parser->top].value.symbol_varname = parse_reduce_22(parser->stack[parser->top + 0].value.token.str, grammar);
- switch (parser->stack[parser->top].state) {
- case 9:
- parser->stack[++parser->top].state = 17;
- break;
- case 22:
- parser->stack[++parser->top].state = 25;
- break;
- case 33:
- parser->stack[++parser->top].state = 34;
- break;
- }
- break;
+ case TOK_SYMBOL_LC:
+ parser->stack[parser->top].value.token = *value;
+ parser->stack[++parser->top].state = 42;
+ return 1;
- case TOK_HEADER:
- parser->top -= 1;
- parser->stack[parser->top].value.symbol_varname = parse_reduce_22(parser->stack[parser->top + 0].value.token.str, grammar);
- switch (parser->stack[parser->top].state) {
- case 9:
- parser->stack[++parser->top].state = 17;
- break;
- case 22:
- parser->stack[++parser->top].state = 25;
- break;
- case 33:
- parser->stack[++parser->top].state = 34;
- break;
- }
- break;
+ case TOK_SYMBOL_UC:
+ parser->stack[parser->top].value.token = *value;
+ parser->stack[++parser->top].state = 43;
+ return 1;
+
+ default:
+ return -1;
+ }
+ break;
+
+ case 35:
+ switch (token) {
+ case '_':
+ parser->stack[parser->top].value.token = *value;
+ parser->stack[++parser->top].state = 44;
+ return 1;
+
+ default:
+ return -1;
+ }
+ break;
+
+ case 36:
+ switch (token) {
+ case 'r':
+ parser->stack[parser->top].value.token = *value;
+ parser->stack[++parser->top].state = 45;
+ return 1;
+
+ default:
+ return -1;
+ }
+ break;
+
+ case 37:
+ switch (token) {
+ case 'e':
+ parser->stack[parser->top].value.token = *value;
+ parser->stack[++parser->top].state = 46;
+ return 1;
+
+ default:
+ return -1;
+ }
+ break;
- case TOK_SOURCE:
+ case 38:
+ switch (token) {
+ case TOK_BLOCK:
+ parser->stack[parser->top].value.token = *value;
+ parser->stack[++parser->top].state = 47;
+ return 1;
+
+ default:
+ return -1;
+ }
+ break;
+
+ case 39:
+ switch (token) {
+ case TOK_BLOCK:
+ parser->stack[parser->top].value.token = *value;
+ parser->stack[++parser->top].state = 48;
+ return 1;
+
+ default:
+ return -1;
+ }
+ break;
+
+ case 40:
+ switch (token) {
+ case ')':
+ parser->stack[parser->top].value.token = *value;
+ parser->stack[++parser->top].state = 49;
+ return 1;
+
+ default:
+ return -1;
+ }
+ break;
+
+ case 41:
+ switch (token) {
+ case 0:
parser->top -= 1;
parser->stack[parser->top].value.symbol_varname = parse_reduce_22(parser->stack[parser->top + 0].value.token.str, grammar);
switch (parser->stack[parser->top].state) {
- case 9:
- parser->stack[++parser->top].state = 17;
+ case 34:
+ parser->stack[++parser->top].state = 40;
break;
- case 22:
- parser->stack[++parser->top].state = 25;
+ case 47:
+ parser->stack[++parser->top].state = 53;
break;
- case 33:
- parser->stack[++parser->top].state = 34;
+ case 56:
+ parser->stack[++parser->top].state = 57;
break;
}
break;
@@ -830,30 +1150,30 @@ int parse_push(parse_context_t *parser, int token, const parse_token_value_t *va
parser->top -= 1;
parser->stack[parser->top].value.symbol_varname = parse_reduce_22(parser->stack[parser->top + 0].value.token.str, grammar);
switch (parser->stack[parser->top].state) {
- case 9:
- parser->stack[++parser->top].state = 17;
+ case 34:
+ parser->stack[++parser->top].state = 40;
break;
- case 22:
- parser->stack[++parser->top].state = 25;
+ case 47:
+ parser->stack[++parser->top].state = 53;
break;
- case 33:
- parser->stack[++parser->top].state = 34;
+ case 56:
+ parser->stack[++parser->top].state = 57;
break;
}
break;
- case TOK_TYPE:
+ case '%':
parser->top -= 1;
parser->stack[parser->top].value.symbol_varname = parse_reduce_22(parser->stack[parser->top + 0].value.token.str, grammar);
switch (parser->stack[parser->top].state) {
- case 9:
- parser->stack[++parser->top].state = 17;
+ case 34:
+ parser->stack[++parser->top].state = 40;
break;
- case 22:
- parser->stack[++parser->top].state = 25;
+ case 47:
+ parser->stack[++parser->top].state = 53;
break;
- case 33:
- parser->stack[++parser->top].state = 34;
+ case 56:
+ parser->stack[++parser->top].state = 57;
break;
}
break;
@@ -862,14 +1182,14 @@ int parse_push(parse_context_t *parser, int token, const parse_token_value_t *va
parser->top -= 1;
parser->stack[parser->top].value.symbol_varname = parse_reduce_22(parser->stack[parser->top + 0].value.token.str, grammar);
switch (parser->stack[parser->top].state) {
- case 9:
- parser->stack[++parser->top].state = 17;
+ case 34:
+ parser->stack[++parser->top].state = 40;
break;
- case 22:
- parser->stack[++parser->top].state = 25;
+ case 47:
+ parser->stack[++parser->top].state = 53;
break;
- case 33:
- parser->stack[++parser->top].state = 34;
+ case 56:
+ parser->stack[++parser->top].state = 57;
break;
}
break;
@@ -879,68 +1199,20 @@ int parse_push(parse_context_t *parser, int token, const parse_token_value_t *va
}
break;
- case 19:
+ case 42:
switch (token) {
case 0:
parser->top -= 1;
parser->stack[parser->top].value.symbol_varname = parse_reduce_20(parser->stack[parser->top + 0].value.token.str, grammar);
switch (parser->stack[parser->top].state) {
- case 9:
- parser->stack[++parser->top].state = 17;
+ case 34:
+ parser->stack[++parser->top].state = 40;
break;
- case 22:
- parser->stack[++parser->top].state = 25;
+ case 47:
+ parser->stack[++parser->top].state = 53;
break;
- case 33:
- parser->stack[++parser->top].state = 34;
- break;
- }
- break;
-
- case TOK_EXTRA_ARG:
- parser->top -= 1;
- parser->stack[parser->top].value.symbol_varname = parse_reduce_20(parser->stack[parser->top + 0].value.token.str, grammar);
- switch (parser->stack[parser->top].state) {
- case 9:
- parser->stack[++parser->top].state = 17;
- break;
- case 22:
- parser->stack[++parser->top].state = 25;
- break;
- case 33:
- parser->stack[++parser->top].state = 34;
- break;
- }
- break;
-
- case TOK_HEADER:
- parser->top -= 1;
- parser->stack[parser->top].value.symbol_varname = parse_reduce_20(parser->stack[parser->top + 0].value.token.str, grammar);
- switch (parser->stack[parser->top].state) {
- case 9:
- parser->stack[++parser->top].state = 17;
- break;
- case 22:
- parser->stack[++parser->top].state = 25;
- break;
- case 33:
- parser->stack[++parser->top].state = 34;
- break;
- }
- break;
-
- case TOK_SOURCE:
- parser->top -= 1;
- parser->stack[parser->top].value.symbol_varname = parse_reduce_20(parser->stack[parser->top + 0].value.token.str, grammar);
- switch (parser->stack[parser->top].state) {
- case 9:
- parser->stack[++parser->top].state = 17;
- break;
- case 22:
- parser->stack[++parser->top].state = 25;
- break;
- case 33:
- parser->stack[++parser->top].state = 34;
+ case 56:
+ parser->stack[++parser->top].state = 57;
break;
}
break;
@@ -949,30 +1221,30 @@ int parse_push(parse_context_t *parser, int token, const parse_token_value_t *va
parser->top -= 1;
parser->stack[parser->top].value.symbol_varname = parse_reduce_20(parser->stack[parser->top + 0].value.token.str, grammar);
switch (parser->stack[parser->top].state) {
- case 9:
- parser->stack[++parser->top].state = 17;
+ case 34:
+ parser->stack[++parser->top].state = 40;
break;
- case 22:
- parser->stack[++parser->top].state = 25;
+ case 47:
+ parser->stack[++parser->top].state = 53;
break;
- case 33:
- parser->stack[++parser->top].state = 34;
+ case 56:
+ parser->stack[++parser->top].state = 57;
break;
}
break;
- case TOK_TYPE:
+ case '%':
parser->top -= 1;
parser->stack[parser->top].value.symbol_varname = parse_reduce_20(parser->stack[parser->top + 0].value.token.str, grammar);
switch (parser->stack[parser->top].state) {
- case 9:
- parser->stack[++parser->top].state = 17;
+ case 34:
+ parser->stack[++parser->top].state = 40;
break;
- case 22:
- parser->stack[++parser->top].state = 25;
+ case 47:
+ parser->stack[++parser->top].state = 53;
break;
- case 33:
- parser->stack[++parser->top].state = 34;
+ case 56:
+ parser->stack[++parser->top].state = 57;
break;
}
break;
@@ -981,14 +1253,14 @@ int parse_push(parse_context_t *parser, int token, const parse_token_value_t *va
parser->top -= 1;
parser->stack[parser->top].value.symbol_varname = parse_reduce_20(parser->stack[parser->top + 0].value.token.str, grammar);
switch (parser->stack[parser->top].state) {
- case 9:
- parser->stack[++parser->top].state = 17;
+ case 34:
+ parser->stack[++parser->top].state = 40;
break;
- case 22:
- parser->stack[++parser->top].state = 25;
+ case 47:
+ parser->stack[++parser->top].state = 53;
break;
- case 33:
- parser->stack[++parser->top].state = 34;
+ case 56:
+ parser->stack[++parser->top].state = 57;
break;
}
break;
@@ -998,68 +1270,20 @@ int parse_push(parse_context_t *parser, int token, const parse_token_value_t *va
}
break;
- case 20:
+ case 43:
switch (token) {
case 0:
parser->top -= 1;
parser->stack[parser->top].value.symbol_varname = parse_reduce_21(parser->stack[parser->top + 0].value.token.str, grammar);
switch (parser->stack[parser->top].state) {
- case 9:
- parser->stack[++parser->top].state = 17;
- break;
- case 22:
- parser->stack[++parser->top].state = 25;
- break;
- case 33:
- parser->stack[++parser->top].state = 34;
- break;
- }
- break;
-
- case TOK_EXTRA_ARG:
- parser->top -= 1;
- parser->stack[parser->top].value.symbol_varname = parse_reduce_21(parser->stack[parser->top + 0].value.token.str, grammar);
- switch (parser->stack[parser->top].state) {
- case 9:
- parser->stack[++parser->top].state = 17;
- break;
- case 22:
- parser->stack[++parser->top].state = 25;
- break;
- case 33:
- parser->stack[++parser->top].state = 34;
- break;
- }
- break;
-
- case TOK_HEADER:
- parser->top -= 1;
- parser->stack[parser->top].value.symbol_varname = parse_reduce_21(parser->stack[parser->top + 0].value.token.str, grammar);
- switch (parser->stack[parser->top].state) {
- case 9:
- parser->stack[++parser->top].state = 17;
- break;
- case 22:
- parser->stack[++parser->top].state = 25;
- break;
- case 33:
- parser->stack[++parser->top].state = 34;
- break;
- }
- break;
-
- case TOK_SOURCE:
- parser->top -= 1;
- parser->stack[parser->top].value.symbol_varname = parse_reduce_21(parser->stack[parser->top + 0].value.token.str, grammar);
- switch (parser->stack[parser->top].state) {
- case 9:
- parser->stack[++parser->top].state = 17;
+ case 34:
+ parser->stack[++parser->top].state = 40;
break;
- case 22:
- parser->stack[++parser->top].state = 25;
+ case 47:
+ parser->stack[++parser->top].state = 53;
break;
- case 33:
- parser->stack[++parser->top].state = 34;
+ case 56:
+ parser->stack[++parser->top].state = 57;
break;
}
break;
@@ -1068,30 +1292,30 @@ int parse_push(parse_context_t *parser, int token, const parse_token_value_t *va
parser->top -= 1;
parser->stack[parser->top].value.symbol_varname = parse_reduce_21(parser->stack[parser->top + 0].value.token.str, grammar);
switch (parser->stack[parser->top].state) {
- case 9:
- parser->stack[++parser->top].state = 17;
+ case 34:
+ parser->stack[++parser->top].state = 40;
break;
- case 22:
- parser->stack[++parser->top].state = 25;
+ case 47:
+ parser->stack[++parser->top].state = 53;
break;
- case 33:
- parser->stack[++parser->top].state = 34;
+ case 56:
+ parser->stack[++parser->top].state = 57;
break;
}
break;
- case TOK_TYPE:
+ case '%':
parser->top -= 1;
parser->stack[parser->top].value.symbol_varname = parse_reduce_21(parser->stack[parser->top + 0].value.token.str, grammar);
switch (parser->stack[parser->top].state) {
- case 9:
- parser->stack[++parser->top].state = 17;
+ case 34:
+ parser->stack[++parser->top].state = 40;
break;
- case 22:
- parser->stack[++parser->top].state = 25;
+ case 47:
+ parser->stack[++parser->top].state = 53;
break;
- case 33:
- parser->stack[++parser->top].state = 34;
+ case 56:
+ parser->stack[++parser->top].state = 57;
break;
}
break;
@@ -1100,14 +1324,14 @@ int parse_push(parse_context_t *parser, int token, const parse_token_value_t *va
parser->top -= 1;
parser->stack[parser->top].value.symbol_varname = parse_reduce_21(parser->stack[parser->top + 0].value.token.str, grammar);
switch (parser->stack[parser->top].state) {
- case 9:
- parser->stack[++parser->top].state = 17;
+ case 34:
+ parser->stack[++parser->top].state = 40;
break;
- case 22:
- parser->stack[++parser->top].state = 25;
+ case 47:
+ parser->stack[++parser->top].state = 53;
break;
- case 33:
- parser->stack[++parser->top].state = 34;
+ case 56:
+ parser->stack[++parser->top].state = 57;
break;
}
break;
@@ -1117,58 +1341,23 @@ int parse_push(parse_context_t *parser, int token, const parse_token_value_t *va
}
break;
- case 21:
+ case 44:
switch (token) {
- case TOK_BLOCK:
- parser->stack[parser->top].value.symbol_rhs = parse_reduce_10(grammar);
- parser->stack[++parser->top].state = 24;
- break;
-
- case TOK_CHAR:
- parser->stack[parser->top].value.symbol_rhs = parse_reduce_10(grammar);
- parser->stack[++parser->top].state = 24;
- break;
-
- case TOK_STRING:
- parser->stack[parser->top].value.symbol_rhs = parse_reduce_10(grammar);
- parser->stack[++parser->top].state = 24;
- break;
-
- case TOK_SYMBOL_LC:
- parser->stack[parser->top].value.symbol_rhs = parse_reduce_10(grammar);
- parser->stack[++parser->top].state = 24;
- break;
-
- case TOK_SYMBOL_UC:
- parser->stack[parser->top].value.symbol_rhs = parse_reduce_10(grammar);
- parser->stack[++parser->top].state = 24;
- break;
-
- case ';':
- parser->stack[parser->top].value.symbol_rhs = parse_reduce_10(grammar);
- parser->stack[++parser->top].state = 24;
- break;
+ case 'a':
+ parser->stack[parser->top].value.token = *value;
+ parser->stack[++parser->top].state = 50;
+ return 1;
default:
return -1;
}
break;
- case 22:
+ case 45:
switch (token) {
- case TOK_SYMBOL:
- parser->stack[parser->top].value.token = *value;
- parser->stack[++parser->top].state = 18;
- return 1;
-
- case TOK_SYMBOL_LC:
- parser->stack[parser->top].value.token = *value;
- parser->stack[++parser->top].state = 19;
- return 1;
-
- case TOK_SYMBOL_UC:
+ case TOK_BLOCK:
parser->stack[parser->top].value.token = *value;
- parser->stack[++parser->top].state = 20;
+ parser->stack[++parser->top].state = 51;
return 1;
default:
@@ -1176,79 +1365,33 @@ int parse_push(parse_context_t *parser, int token, const parse_token_value_t *va
}
break;
- case 23:
+ case 46:
switch (token) {
- case 0:
- parser->top -= 3;
- parse_reduce_4(parser->stack[parser->top + 1].value.token.str, parser->stack[parser->top + 2].value.token.str, grammar);
- parser->stack[++parser->top].state = 2;
- break;
-
- case TOK_EXTRA_ARG:
- parser->top -= 3;
- parse_reduce_4(parser->stack[parser->top + 1].value.token.str, parser->stack[parser->top + 2].value.token.str, grammar);
- parser->stack[++parser->top].state = 2;
- break;
-
- case TOK_HEADER:
- parser->top -= 3;
- parse_reduce_4(parser->stack[parser->top + 1].value.token.str, parser->stack[parser->top + 2].value.token.str, grammar);
- parser->stack[++parser->top].state = 2;
- break;
-
- case TOK_SOURCE:
- parser->top -= 3;
- parse_reduce_4(parser->stack[parser->top + 1].value.token.str, parser->stack[parser->top + 2].value.token.str, grammar);
- parser->stack[++parser->top].state = 2;
- break;
-
- case TOK_SYMBOL_LC:
- parser->top -= 3;
- parse_reduce_4(parser->stack[parser->top + 1].value.token.str, parser->stack[parser->top + 2].value.token.str, grammar);
- parser->stack[++parser->top].state = 2;
- break;
-
- case TOK_TYPE:
- parser->top -= 3;
- parse_reduce_4(parser->stack[parser->top + 1].value.token.str, parser->stack[parser->top + 2].value.token.str, grammar);
- parser->stack[++parser->top].state = 2;
- break;
+ case TOK_BLOCK:
+ parser->stack[parser->top].value.token = *value;
+ parser->stack[++parser->top].state = 52;
+ return 1;
default:
return -1;
}
break;
- case 24:
+ case 47:
switch (token) {
- case TOK_BLOCK:
- parser->stack[parser->top].value.token = *value;
- parser->stack[++parser->top].state = 29;
- return 1;
-
- case TOK_CHAR:
- parser->stack[parser->top].value.token = *value;
- parser->stack[++parser->top].state = 14;
- return 1;
-
- case TOK_STRING:
+ case TOK_SYMBOL:
parser->stack[parser->top].value.token = *value;
- parser->stack[++parser->top].state = 30;
+ parser->stack[++parser->top].state = 41;
return 1;
case TOK_SYMBOL_LC:
parser->stack[parser->top].value.token = *value;
- parser->stack[++parser->top].state = 31;
+ parser->stack[++parser->top].state = 42;
return 1;
case TOK_SYMBOL_UC:
parser->stack[parser->top].value.token = *value;
- parser->stack[++parser->top].state = 16;
- return 1;
-
- case ';':
- parser->stack[parser->top].value.token = *value;
- parser->stack[++parser->top].state = 32;
+ parser->stack[++parser->top].state = 43;
return 1;
default:
@@ -1256,41 +1399,23 @@ int parse_push(parse_context_t *parser, int token, const parse_token_value_t *va
}
break;
- case 25:
+ case 48:
switch (token) {
case 0:
- parser->top -= 4;
- parse_reduce_5(parser->stack[parser->top + 1].value.symbol_term, parser->stack[parser->top + 2].value.token.str, parser->stack[parser->top + 3].value.symbol_varname, grammar);
- parser->stack[++parser->top].state = 2;
- break;
-
- case TOK_EXTRA_ARG:
- parser->top -= 4;
- parse_reduce_5(parser->stack[parser->top + 1].value.symbol_term, parser->stack[parser->top + 2].value.token.str, parser->stack[parser->top + 3].value.symbol_varname, grammar);
- parser->stack[++parser->top].state = 2;
- break;
-
- case TOK_HEADER:
- parser->top -= 4;
- parse_reduce_5(parser->stack[parser->top + 1].value.symbol_term, parser->stack[parser->top + 2].value.token.str, parser->stack[parser->top + 3].value.symbol_varname, grammar);
- parser->stack[++parser->top].state = 2;
- break;
-
- case TOK_SOURCE:
- parser->top -= 4;
- parse_reduce_5(parser->stack[parser->top + 1].value.symbol_term, parser->stack[parser->top + 2].value.token.str, parser->stack[parser->top + 3].value.symbol_varname, grammar);
+ parser->top -= 7;
+ parse_reduce_4(parser->stack[parser->top + 5].value.token.str, parser->stack[parser->top + 6].value.token.str, grammar);
parser->stack[++parser->top].state = 2;
break;
case TOK_SYMBOL_LC:
- parser->top -= 4;
- parse_reduce_5(parser->stack[parser->top + 1].value.symbol_term, parser->stack[parser->top + 2].value.token.str, parser->stack[parser->top + 3].value.symbol_varname, grammar);
+ parser->top -= 7;
+ parse_reduce_4(parser->stack[parser->top + 5].value.token.str, parser->stack[parser->top + 6].value.token.str, grammar);
parser->stack[++parser->top].state = 2;
break;
- case TOK_TYPE:
- parser->top -= 4;
- parse_reduce_5(parser->stack[parser->top + 1].value.symbol_term, parser->stack[parser->top + 2].value.token.str, parser->stack[parser->top + 3].value.symbol_varname, grammar);
+ case '%':
+ parser->top -= 7;
+ parse_reduce_4(parser->stack[parser->top + 5].value.token.str, parser->stack[parser->top + 6].value.token.str, grammar);
parser->stack[++parser->top].state = 2;
break;
@@ -1299,42 +1424,42 @@ int parse_push(parse_context_t *parser, int token, const parse_token_value_t *va
}
break;
- case 26:
+ case 49:
switch (token) {
- case 0:
+ case TOK_BLOCK:
parser->top -= 5;
- parser->stack[parser->top].value.symbol_rule = parse_reduce_9(parser->stack[parser->top + 0].value.token.str, parser->stack[parser->top + 3].value.symbol_rhs, parser->stack[parser->top + 4].value.symbol_action, grammar);
- parser->stack[++parser->top].state = 3;
+ parser->stack[parser->top].value.symbol_rhs = parse_reduce_12(parser->stack[parser->top + 0].value.symbol_rhs, parser->stack[parser->top + 1].value.symbol_symbol, parser->stack[parser->top + 3].value.symbol_varname, grammar);
+ parser->stack[++parser->top].state = 16;
break;
- case TOK_EXTRA_ARG:
+ case TOK_CHAR:
parser->top -= 5;
- parser->stack[parser->top].value.symbol_rule = parse_reduce_9(parser->stack[parser->top + 0].value.token.str, parser->stack[parser->top + 3].value.symbol_rhs, parser->stack[parser->top + 4].value.symbol_action, grammar);
- parser->stack[++parser->top].state = 3;
+ parser->stack[parser->top].value.symbol_rhs = parse_reduce_12(parser->stack[parser->top + 0].value.symbol_rhs, parser->stack[parser->top + 1].value.symbol_symbol, parser->stack[parser->top + 3].value.symbol_varname, grammar);
+ parser->stack[++parser->top].state = 16;
break;
- case TOK_HEADER:
+ case TOK_STRING:
parser->top -= 5;
- parser->stack[parser->top].value.symbol_rule = parse_reduce_9(parser->stack[parser->top + 0].value.token.str, parser->stack[parser->top + 3].value.symbol_rhs, parser->stack[parser->top + 4].value.symbol_action, grammar);
- parser->stack[++parser->top].state = 3;
+ parser->stack[parser->top].value.symbol_rhs = parse_reduce_12(parser->stack[parser->top + 0].value.symbol_rhs, parser->stack[parser->top + 1].value.symbol_symbol, parser->stack[parser->top + 3].value.symbol_varname, grammar);
+ parser->stack[++parser->top].state = 16;
break;
- case TOK_SOURCE:
+ case TOK_SYMBOL_LC:
parser->top -= 5;
- parser->stack[parser->top].value.symbol_rule = parse_reduce_9(parser->stack[parser->top + 0].value.token.str, parser->stack[parser->top + 3].value.symbol_rhs, parser->stack[parser->top + 4].value.symbol_action, grammar);
- parser->stack[++parser->top].state = 3;
+ parser->stack[parser->top].value.symbol_rhs = parse_reduce_12(parser->stack[parser->top + 0].value.symbol_rhs, parser->stack[parser->top + 1].value.symbol_symbol, parser->stack[parser->top + 3].value.symbol_varname, grammar);
+ parser->stack[++parser->top].state = 16;
break;
- case TOK_SYMBOL_LC:
+ case TOK_SYMBOL_UC:
parser->top -= 5;
- parser->stack[parser->top].value.symbol_rule = parse_reduce_9(parser->stack[parser->top + 0].value.token.str, parser->stack[parser->top + 3].value.symbol_rhs, parser->stack[parser->top + 4].value.symbol_action, grammar);
- parser->stack[++parser->top].state = 3;
+ parser->stack[parser->top].value.symbol_rhs = parse_reduce_12(parser->stack[parser->top + 0].value.symbol_rhs, parser->stack[parser->top + 1].value.symbol_symbol, parser->stack[parser->top + 3].value.symbol_varname, grammar);
+ parser->stack[++parser->top].state = 16;
break;
- case TOK_TYPE:
+ case ';':
parser->top -= 5;
- parser->stack[parser->top].value.symbol_rule = parse_reduce_9(parser->stack[parser->top + 0].value.token.str, parser->stack[parser->top + 3].value.symbol_rhs, parser->stack[parser->top + 4].value.symbol_action, grammar);
- parser->stack[++parser->top].state = 3;
+ parser->stack[parser->top].value.symbol_rhs = parse_reduce_12(parser->stack[parser->top + 0].value.symbol_rhs, parser->stack[parser->top + 1].value.symbol_symbol, parser->stack[parser->top + 3].value.symbol_varname, grammar);
+ parser->stack[++parser->top].state = 16;
break;
default:
@@ -1342,96 +1467,36 @@ int parse_push(parse_context_t *parser, int token, const parse_token_value_t *va
}
break;
- case 27:
+ case 50:
switch (token) {
- case TOK_BLOCK:
- parser->top -= 2;
- parser->stack[parser->top].value.symbol_rhs = parse_reduce_11(parser->stack[parser->top + 0].value.symbol_rhs, parser->stack[parser->top + 1].value.symbol_symbol, grammar);
- parser->stack[++parser->top].state = 24;
- break;
-
- case TOK_CHAR:
- parser->top -= 2;
- parser->stack[parser->top].value.symbol_rhs = parse_reduce_11(parser->stack[parser->top + 0].value.symbol_rhs, parser->stack[parser->top + 1].value.symbol_symbol, grammar);
- parser->stack[++parser->top].state = 24;
- break;
-
- case TOK_STRING:
- parser->top -= 2;
- parser->stack[parser->top].value.symbol_rhs = parse_reduce_11(parser->stack[parser->top + 0].value.symbol_rhs, parser->stack[parser->top + 1].value.symbol_symbol, grammar);
- parser->stack[++parser->top].state = 24;
- break;
-
- case TOK_SYMBOL_LC:
- parser->top -= 2;
- parser->stack[parser->top].value.symbol_rhs = parse_reduce_11(parser->stack[parser->top + 0].value.symbol_rhs, parser->stack[parser->top + 1].value.symbol_symbol, grammar);
- parser->stack[++parser->top].state = 24;
- break;
-
- case TOK_SYMBOL_UC:
- parser->top -= 2;
- parser->stack[parser->top].value.symbol_rhs = parse_reduce_11(parser->stack[parser->top + 0].value.symbol_rhs, parser->stack[parser->top + 1].value.symbol_symbol, grammar);
- parser->stack[++parser->top].state = 24;
- break;
-
- case '(':
+ case 'r':
parser->stack[parser->top].value.token = *value;
- parser->stack[++parser->top].state = 33;
+ parser->stack[++parser->top].state = 54;
return 1;
- case ';':
- parser->top -= 2;
- parser->stack[parser->top].value.symbol_rhs = parse_reduce_11(parser->stack[parser->top + 0].value.symbol_rhs, parser->stack[parser->top + 1].value.symbol_symbol, grammar);
- parser->stack[++parser->top].state = 24;
- break;
-
default:
return -1;
}
break;
- case 28:
+ case 51:
switch (token) {
- case TOK_BLOCK:
- parser->top -= 1;
- parser->stack[parser->top].value.symbol_symbol = parse_reduce_16(parser->stack[parser->top + 0].value.symbol_term, grammar);
- parser->stack[++parser->top].state = 27;
- break;
-
- case TOK_CHAR:
- parser->top -= 1;
- parser->stack[parser->top].value.symbol_symbol = parse_reduce_16(parser->stack[parser->top + 0].value.symbol_term, grammar);
- parser->stack[++parser->top].state = 27;
- break;
-
- case TOK_STRING:
- parser->top -= 1;
- parser->stack[parser->top].value.symbol_symbol = parse_reduce_16(parser->stack[parser->top + 0].value.symbol_term, grammar);
- parser->stack[++parser->top].state = 27;
+ case 0:
+ parser->top -= 8;
+ parse_reduce_7(parser->stack[parser->top + 7].value.token.str, grammar);
+ parser->stack[++parser->top].state = 2;
break;
case TOK_SYMBOL_LC:
- parser->top -= 1;
- parser->stack[parser->top].value.symbol_symbol = parse_reduce_16(parser->stack[parser->top + 0].value.symbol_term, grammar);
- parser->stack[++parser->top].state = 27;
- break;
-
- case TOK_SYMBOL_UC:
- parser->top -= 1;
- parser->stack[parser->top].value.symbol_symbol = parse_reduce_16(parser->stack[parser->top + 0].value.symbol_term, grammar);
- parser->stack[++parser->top].state = 27;
- break;
-
- case '(':
- parser->top -= 1;
- parser->stack[parser->top].value.symbol_symbol = parse_reduce_16(parser->stack[parser->top + 0].value.symbol_term, grammar);
- parser->stack[++parser->top].state = 27;
+ parser->top -= 8;
+ parse_reduce_7(parser->stack[parser->top + 7].value.token.str, grammar);
+ parser->stack[++parser->top].state = 2;
break;
- case ';':
- parser->top -= 1;
- parser->stack[parser->top].value.symbol_symbol = parse_reduce_16(parser->stack[parser->top + 0].value.symbol_term, grammar);
- parser->stack[++parser->top].state = 27;
+ case '%':
+ parser->top -= 8;
+ parse_reduce_7(parser->stack[parser->top + 7].value.token.str, grammar);
+ parser->stack[++parser->top].state = 2;
break;
default:
@@ -1439,42 +1504,24 @@ int parse_push(parse_context_t *parser, int token, const parse_token_value_t *va
}
break;
- case 29:
+ case 52:
switch (token) {
case 0:
- parser->top -= 1;
- parser->stack[parser->top].value.symbol_action = parse_reduce_15(parser->stack[parser->top + 0].value.token.str, grammar);
- parser->stack[++parser->top].state = 26;
- break;
-
- case TOK_EXTRA_ARG:
- parser->top -= 1;
- parser->stack[parser->top].value.symbol_action = parse_reduce_15(parser->stack[parser->top + 0].value.token.str, grammar);
- parser->stack[++parser->top].state = 26;
- break;
-
- case TOK_HEADER:
- parser->top -= 1;
- parser->stack[parser->top].value.symbol_action = parse_reduce_15(parser->stack[parser->top + 0].value.token.str, grammar);
- parser->stack[++parser->top].state = 26;
- break;
-
- case TOK_SOURCE:
- parser->top -= 1;
- parser->stack[parser->top].value.symbol_action = parse_reduce_15(parser->stack[parser->top + 0].value.token.str, grammar);
- parser->stack[++parser->top].state = 26;
+ parser->top -= 8;
+ parse_reduce_6(parser->stack[parser->top + 7].value.token.str, grammar);
+ parser->stack[++parser->top].state = 2;
break;
case TOK_SYMBOL_LC:
- parser->top -= 1;
- parser->stack[parser->top].value.symbol_action = parse_reduce_15(parser->stack[parser->top + 0].value.token.str, grammar);
- parser->stack[++parser->top].state = 26;
+ parser->top -= 8;
+ parse_reduce_6(parser->stack[parser->top + 7].value.token.str, grammar);
+ parser->stack[++parser->top].state = 2;
break;
- case TOK_TYPE:
- parser->top -= 1;
- parser->stack[parser->top].value.symbol_action = parse_reduce_15(parser->stack[parser->top + 0].value.token.str, grammar);
- parser->stack[++parser->top].state = 26;
+ case '%':
+ parser->top -= 8;
+ parse_reduce_6(parser->stack[parser->top + 7].value.token.str, grammar);
+ parser->stack[++parser->top].state = 2;
break;
default:
@@ -1482,42 +1529,24 @@ int parse_push(parse_context_t *parser, int token, const parse_token_value_t *va
}
break;
- case 30:
+ case 53:
switch (token) {
- case TOK_BLOCK:
- parser->top -= 2;
- parser->stack[parser->top].value.symbol_rhs = parse_reduce_13(parser->stack[parser->top + 0].value.symbol_rhs, parser->stack[parser->top + 1].value.token.str, grammar);
- parser->stack[++parser->top].state = 24;
- break;
-
- case TOK_CHAR:
- parser->top -= 2;
- parser->stack[parser->top].value.symbol_rhs = parse_reduce_13(parser->stack[parser->top + 0].value.symbol_rhs, parser->stack[parser->top + 1].value.token.str, grammar);
- parser->stack[++parser->top].state = 24;
- break;
-
- case TOK_STRING:
- parser->top -= 2;
- parser->stack[parser->top].value.symbol_rhs = parse_reduce_13(parser->stack[parser->top + 0].value.symbol_rhs, parser->stack[parser->top + 1].value.token.str, grammar);
- parser->stack[++parser->top].state = 24;
+ case 0:
+ parser->top -= 8;
+ parse_reduce_5(parser->stack[parser->top + 5].value.symbol_term, parser->stack[parser->top + 6].value.token.str, parser->stack[parser->top + 7].value.symbol_varname, grammar);
+ parser->stack[++parser->top].state = 2;
break;
case TOK_SYMBOL_LC:
- parser->top -= 2;
- parser->stack[parser->top].value.symbol_rhs = parse_reduce_13(parser->stack[parser->top + 0].value.symbol_rhs, parser->stack[parser->top + 1].value.token.str, grammar);
- parser->stack[++parser->top].state = 24;
- break;
-
- case TOK_SYMBOL_UC:
- parser->top -= 2;
- parser->stack[parser->top].value.symbol_rhs = parse_reduce_13(parser->stack[parser->top + 0].value.symbol_rhs, parser->stack[parser->top + 1].value.token.str, grammar);
- parser->stack[++parser->top].state = 24;
+ parser->top -= 8;
+ parse_reduce_5(parser->stack[parser->top + 5].value.symbol_term, parser->stack[parser->top + 6].value.token.str, parser->stack[parser->top + 7].value.symbol_varname, grammar);
+ parser->stack[++parser->top].state = 2;
break;
- case ';':
- parser->top -= 2;
- parser->stack[parser->top].value.symbol_rhs = parse_reduce_13(parser->stack[parser->top + 0].value.symbol_rhs, parser->stack[parser->top + 1].value.token.str, grammar);
- parser->stack[++parser->top].state = 24;
+ case '%':
+ parser->top -= 8;
+ parse_reduce_5(parser->stack[parser->top + 5].value.symbol_term, parser->stack[parser->top + 6].value.token.str, parser->stack[parser->top + 7].value.symbol_varname, grammar);
+ parser->stack[++parser->top].state = 2;
break;
default:
@@ -1525,113 +1554,45 @@ int parse_push(parse_context_t *parser, int token, const parse_token_value_t *va
}
break;
- case 31:
+ case 54:
switch (token) {
- case TOK_BLOCK:
- parser->top -= 1;
- parser->stack[parser->top].value.symbol_symbol = parse_reduce_17(parser->stack[parser->top + 0].value.token.str, grammar);
- parser->stack[++parser->top].state = 27;
- break;
-
- case TOK_CHAR:
- parser->top -= 1;
- parser->stack[parser->top].value.symbol_symbol = parse_reduce_17(parser->stack[parser->top + 0].value.token.str, grammar);
- parser->stack[++parser->top].state = 27;
- break;
-
- case TOK_STRING:
- parser->top -= 1;
- parser->stack[parser->top].value.symbol_symbol = parse_reduce_17(parser->stack[parser->top + 0].value.token.str, grammar);
- parser->stack[++parser->top].state = 27;
- break;
-
- case TOK_SYMBOL_LC:
- parser->top -= 1;
- parser->stack[parser->top].value.symbol_symbol = parse_reduce_17(parser->stack[parser->top + 0].value.token.str, grammar);
- parser->stack[++parser->top].state = 27;
- break;
-
- case TOK_SYMBOL_UC:
- parser->top -= 1;
- parser->stack[parser->top].value.symbol_symbol = parse_reduce_17(parser->stack[parser->top + 0].value.token.str, grammar);
- parser->stack[++parser->top].state = 27;
- break;
-
- case '(':
- parser->top -= 1;
- parser->stack[parser->top].value.symbol_symbol = parse_reduce_17(parser->stack[parser->top + 0].value.token.str, grammar);
- parser->stack[++parser->top].state = 27;
- break;
-
- case ';':
- parser->top -= 1;
- parser->stack[parser->top].value.symbol_symbol = parse_reduce_17(parser->stack[parser->top + 0].value.token.str, grammar);
- parser->stack[++parser->top].state = 27;
- break;
+ case 'g':
+ parser->stack[parser->top].value.token = *value;
+ parser->stack[++parser->top].state = 55;
+ return 1;
default:
return -1;
}
break;
- case 32:
+ case 55:
switch (token) {
- case 0:
- parser->top -= 1;
- parser->stack[parser->top].value.symbol_action = parse_reduce_14(grammar);
- parser->stack[++parser->top].state = 26;
- break;
-
- case TOK_EXTRA_ARG:
- parser->top -= 1;
- parser->stack[parser->top].value.symbol_action = parse_reduce_14(grammar);
- parser->stack[++parser->top].state = 26;
- break;
-
- case TOK_HEADER:
- parser->top -= 1;
- parser->stack[parser->top].value.symbol_action = parse_reduce_14(grammar);
- parser->stack[++parser->top].state = 26;
- break;
-
- case TOK_SOURCE:
- parser->top -= 1;
- parser->stack[parser->top].value.symbol_action = parse_reduce_14(grammar);
- parser->stack[++parser->top].state = 26;
- break;
-
- case TOK_SYMBOL_LC:
- parser->top -= 1;
- parser->stack[parser->top].value.symbol_action = parse_reduce_14(grammar);
- parser->stack[++parser->top].state = 26;
- break;
-
- case TOK_TYPE:
- parser->top -= 1;
- parser->stack[parser->top].value.symbol_action = parse_reduce_14(grammar);
- parser->stack[++parser->top].state = 26;
- break;
+ case TOK_BLOCK:
+ parser->stack[parser->top].value.token = *value;
+ parser->stack[++parser->top].state = 56;
+ return 1;
default:
return -1;
}
break;
- case 33:
+ case 56:
switch (token) {
case TOK_SYMBOL:
parser->stack[parser->top].value.token = *value;
- parser->stack[++parser->top].state = 18;
+ parser->stack[++parser->top].state = 41;
return 1;
case TOK_SYMBOL_LC:
parser->stack[parser->top].value.token = *value;
- parser->stack[++parser->top].state = 19;
+ parser->stack[++parser->top].state = 42;
return 1;
case TOK_SYMBOL_UC:
parser->stack[parser->top].value.token = *value;
- parser->stack[++parser->top].state = 20;
+ parser->stack[++parser->top].state = 43;
return 1;
default:
@@ -1639,54 +1600,24 @@ int parse_push(parse_context_t *parser, int token, const parse_token_value_t *va
}
break;
- case 34:
+ case 57:
switch (token) {
- case ')':
- parser->stack[parser->top].value.token = *value;
- parser->stack[++parser->top].state = 35;
- return 1;
-
- default:
- return -1;
- }
- break;
-
- case 35:
- switch (token) {
- case TOK_BLOCK:
- parser->top -= 5;
- parser->stack[parser->top].value.symbol_rhs = parse_reduce_12(parser->stack[parser->top + 0].value.symbol_rhs, parser->stack[parser->top + 1].value.symbol_symbol, parser->stack[parser->top + 3].value.symbol_varname, grammar);
- parser->stack[++parser->top].state = 24;
- break;
-
- case TOK_CHAR:
- parser->top -= 5;
- parser->stack[parser->top].value.symbol_rhs = parse_reduce_12(parser->stack[parser->top + 0].value.symbol_rhs, parser->stack[parser->top + 1].value.symbol_symbol, parser->stack[parser->top + 3].value.symbol_varname, grammar);
- parser->stack[++parser->top].state = 24;
- break;
-
- case TOK_STRING:
- parser->top -= 5;
- parser->stack[parser->top].value.symbol_rhs = parse_reduce_12(parser->stack[parser->top + 0].value.symbol_rhs, parser->stack[parser->top + 1].value.symbol_symbol, parser->stack[parser->top + 3].value.symbol_varname, grammar);
- parser->stack[++parser->top].state = 24;
+ case 0:
+ parser->top -= 12;
+ parse_reduce_8(parser->stack[parser->top + 10].value.token.str, parser->stack[parser->top + 11].value.symbol_varname, grammar);
+ parser->stack[++parser->top].state = 2;
break;
case TOK_SYMBOL_LC:
- parser->top -= 5;
- parser->stack[parser->top].value.symbol_rhs = parse_reduce_12(parser->stack[parser->top + 0].value.symbol_rhs, parser->stack[parser->top + 1].value.symbol_symbol, parser->stack[parser->top + 3].value.symbol_varname, grammar);
- parser->stack[++parser->top].state = 24;
- break;
-
- case TOK_SYMBOL_UC:
- parser->top -= 5;
- parser->stack[parser->top].value.symbol_rhs = parse_reduce_12(parser->stack[parser->top + 0].value.symbol_rhs, parser->stack[parser->top + 1].value.symbol_symbol, parser->stack[parser->top + 3].value.symbol_varname, grammar);
- parser->stack[++parser->top].state = 24;
+ parser->top -= 12;
+ parse_reduce_8(parser->stack[parser->top + 10].value.token.str, parser->stack[parser->top + 11].value.symbol_varname, grammar);
+ parser->stack[++parser->top].state = 2;
break;
- case ';':
- parser->top -= 5;
- parser->stack[parser->top].value.symbol_rhs = parse_reduce_12(parser->stack[parser->top + 0].value.symbol_rhs, parser->stack[parser->top + 1].value.symbol_symbol, parser->stack[parser->top + 3].value.symbol_varname, grammar);
- parser->stack[++parser->top].state = 24;
+ case '%':
+ parser->top -= 12;
+ parse_reduce_8(parser->stack[parser->top + 10].value.token.str, parser->stack[parser->top + 11].value.symbol_varname, grammar);
+ parser->stack[++parser->top].state = 2;
break;
default: