lrama 0.5.0 → 0.5.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,263 @@
1
+ Grammar
2
+
3
+ 0 $accept: list "end of file"
4
+
5
+ 1 list: ε
6
+ 2 | list LF
7
+ 3 | list expr LF
8
+
9
+ 4 expr: NUM
10
+ 5 | expr '+' expr
11
+ 6 | expr '-' expr
12
+ 7 | expr '*' expr
13
+ 8 | expr '/' expr
14
+ 9 | '(' expr ')'
15
+
16
+
17
+ State 0
18
+
19
+ 0 $accept: • list "end of file"
20
+ 1 list: ε •
21
+ 2 | • list LF
22
+ 3 | • list expr LF
23
+
24
+ $default reduce using rule 1 (list)
25
+
26
+ list go to state 1
27
+
28
+
29
+ State 1
30
+
31
+ 0 $accept: list • "end of file"
32
+ 2 list: list • LF
33
+ 3 | list • expr LF
34
+ 4 expr: • NUM
35
+ 5 | • expr '+' expr
36
+ 6 | • expr '-' expr
37
+ 7 | • expr '*' expr
38
+ 8 | • expr '/' expr
39
+ 9 | • '(' expr ')'
40
+
41
+ "end of file" shift, and go to state 2
42
+ LF shift, and go to state 3
43
+ NUM shift, and go to state 4
44
+ '(' shift, and go to state 5
45
+
46
+ expr go to state 6
47
+
48
+
49
+ State 2
50
+
51
+ 0 $accept: list "end of file" •
52
+
53
+ $default accept
54
+
55
+
56
+ State 3
57
+
58
+ 2 list: list LF •
59
+
60
+ $default reduce using rule 2 (list)
61
+
62
+
63
+ State 4
64
+
65
+ 4 expr: NUM •
66
+
67
+ $default reduce using rule 4 (expr)
68
+
69
+
70
+ State 5
71
+
72
+ 4 expr: • NUM
73
+ 5 | • expr '+' expr
74
+ 6 | • expr '-' expr
75
+ 7 | • expr '*' expr
76
+ 8 | • expr '/' expr
77
+ 9 | • '(' expr ')'
78
+ 9 | '(' • expr ')'
79
+
80
+ NUM shift, and go to state 4
81
+ '(' shift, and go to state 5
82
+
83
+ expr go to state 7
84
+
85
+
86
+ State 6
87
+
88
+ 3 list: list expr • LF
89
+ 5 expr: expr • '+' expr
90
+ 6 | expr • '-' expr
91
+ 7 | expr • '*' expr
92
+ 8 | expr • '/' expr
93
+
94
+ LF shift, and go to state 8
95
+ '+' shift, and go to state 9
96
+ '-' shift, and go to state 10
97
+ '*' shift, and go to state 11
98
+ '/' shift, and go to state 12
99
+
100
+
101
+ State 7
102
+
103
+ 5 expr: expr • '+' expr
104
+ 6 | expr • '-' expr
105
+ 7 | expr • '*' expr
106
+ 8 | expr • '/' expr
107
+ 9 | '(' expr • ')'
108
+
109
+ '+' shift, and go to state 9
110
+ '-' shift, and go to state 10
111
+ '*' shift, and go to state 11
112
+ '/' shift, and go to state 12
113
+ ')' shift, and go to state 13
114
+
115
+
116
+ State 8
117
+
118
+ 3 list: list expr LF •
119
+
120
+ $default reduce using rule 3 (list)
121
+
122
+
123
+ State 9
124
+
125
+ 4 expr: • NUM
126
+ 5 | • expr '+' expr
127
+ 5 | expr '+' • expr
128
+ 6 | • expr '-' expr
129
+ 7 | • expr '*' expr
130
+ 8 | • expr '/' expr
131
+ 9 | • '(' expr ')'
132
+
133
+ NUM shift, and go to state 4
134
+ '(' shift, and go to state 5
135
+
136
+ expr go to state 14
137
+
138
+
139
+ State 10
140
+
141
+ 4 expr: • NUM
142
+ 5 | • expr '+' expr
143
+ 6 | • expr '-' expr
144
+ 6 | expr '-' • expr
145
+ 7 | • expr '*' expr
146
+ 8 | • expr '/' expr
147
+ 9 | • '(' expr ')'
148
+
149
+ NUM shift, and go to state 4
150
+ '(' shift, and go to state 5
151
+
152
+ expr go to state 15
153
+
154
+
155
+ State 11
156
+
157
+ 4 expr: • NUM
158
+ 5 | • expr '+' expr
159
+ 6 | • expr '-' expr
160
+ 7 | • expr '*' expr
161
+ 7 | expr '*' • expr
162
+ 8 | • expr '/' expr
163
+ 9 | • '(' expr ')'
164
+
165
+ NUM shift, and go to state 4
166
+ '(' shift, and go to state 5
167
+
168
+ expr go to state 16
169
+
170
+
171
+ State 12
172
+
173
+ 4 expr: • NUM
174
+ 5 | • expr '+' expr
175
+ 6 | • expr '-' expr
176
+ 7 | • expr '*' expr
177
+ 8 | • expr '/' expr
178
+ 8 | expr '/' • expr
179
+ 9 | • '(' expr ')'
180
+
181
+ NUM shift, and go to state 4
182
+ '(' shift, and go to state 5
183
+
184
+ expr go to state 17
185
+
186
+
187
+ State 13
188
+
189
+ 9 expr: '(' expr ')' •
190
+
191
+ $default reduce using rule 9 (expr)
192
+
193
+
194
+ State 14
195
+
196
+ 5 expr: expr • '+' expr
197
+ 5 | expr '+' expr • [LF, '+', '-', ')']
198
+ 6 | expr • '-' expr
199
+ 7 | expr • '*' expr
200
+ 8 | expr • '/' expr
201
+
202
+ '*' shift, and go to state 11
203
+ '/' shift, and go to state 12
204
+
205
+ $default reduce using rule 5 (expr)
206
+
207
+ Conflict between rule 5 and token '+' resolved as reduce (%left '+').
208
+ Conflict between rule 5 and token '-' resolved as reduce (%left '-').
209
+ Conflict between rule 5 and token '*' resolved as shift ('+' < '*').
210
+ Conflict between rule 5 and token '/' resolved as shift ('+' < '/').
211
+
212
+
213
+ State 15
214
+
215
+ 5 expr: expr • '+' expr
216
+ 6 | expr • '-' expr
217
+ 6 | expr '-' expr • [LF, '+', '-', ')']
218
+ 7 | expr • '*' expr
219
+ 8 | expr • '/' expr
220
+
221
+ '*' shift, and go to state 11
222
+ '/' shift, and go to state 12
223
+
224
+ $default reduce using rule 6 (expr)
225
+
226
+ Conflict between rule 6 and token '+' resolved as reduce (%left '+').
227
+ Conflict between rule 6 and token '-' resolved as reduce (%left '-').
228
+ Conflict between rule 6 and token '*' resolved as shift ('-' < '*').
229
+ Conflict between rule 6 and token '/' resolved as shift ('-' < '/').
230
+
231
+
232
+ State 16
233
+
234
+ 5 expr: expr • '+' expr
235
+ 6 | expr • '-' expr
236
+ 7 | expr • '*' expr
237
+ 7 | expr '*' expr • [LF, '+', '-', '*', '/', ')']
238
+ 8 | expr • '/' expr
239
+
240
+ $default reduce using rule 7 (expr)
241
+
242
+ Conflict between rule 7 and token '+' resolved as reduce ('+' < '*').
243
+ Conflict between rule 7 and token '-' resolved as reduce ('-' < '*').
244
+ Conflict between rule 7 and token '*' resolved as reduce (%left '*').
245
+ Conflict between rule 7 and token '/' resolved as reduce (%left '/').
246
+
247
+
248
+ State 17
249
+
250
+ 5 expr: expr • '+' expr
251
+ 6 | expr • '-' expr
252
+ 7 | expr • '*' expr
253
+ 8 | expr • '/' expr
254
+ 8 | expr '/' expr • [LF, '+', '-', '*', '/', ')']
255
+
256
+ $default reduce using rule 8 (expr)
257
+
258
+ Conflict between rule 8 and token '+' resolved as reduce ('+' < '/').
259
+ Conflict between rule 8 and token '-' resolved as reduce ('-' < '/').
260
+ Conflict between rule 8 and token '*' resolved as reduce (%left '*').
261
+ Conflict between rule 8 and token '/' resolved as reduce (%left '/').
262
+
263
+
data/sample/calc.y ADDED
@@ -0,0 +1,98 @@
1
+ /*
2
+ * How to build and run:
3
+ *
4
+ * $ lrama -d calc.y -o calc.c && gcc -Wall calc.c -o calc && ./calc
5
+ * 1
6
+ * => 1
7
+ * 1+2*3
8
+ * => 7
9
+ * (1+2)*3
10
+ * => 9
11
+ *
12
+ */
13
+
14
+ %{
15
+ #include <stdio.h>
16
+ #include <stdlib.h>
17
+ #include <ctype.h>
18
+
19
+ #include "calc.h"
20
+
21
+ static int yylex(YYSTYPE *val, YYLTYPE *loc);
22
+ static int yyerror(YYLTYPE *loc, const char *str);
23
+ %}
24
+
25
+ %union {
26
+ int val;
27
+ }
28
+ %token LF
29
+ %token <val> NUM
30
+ %type <val> expr
31
+ %left '+' '-'
32
+ %left '*' '/'
33
+
34
+ %%
35
+
36
+ list : /* empty */
37
+ | list LF
38
+ | list expr LF { printf("=> %d\n", $2); }
39
+ ;
40
+ expr : NUM
41
+ | expr '+' expr { $$ = $1 + $3; }
42
+ | expr '-' expr { $$ = $1 - $3; }
43
+ | expr '*' expr { $$ = $1 * $3; }
44
+ | expr '/' expr { $$ = $1 / $3; }
45
+ | '(' expr ')' { $$ = $2; }
46
+ ;
47
+
48
+ %%
49
+
50
+ static int yylex(YYSTYPE *yylval, YYLTYPE *loc) {
51
+ int c = getchar();
52
+ int val;
53
+
54
+ switch (c) {
55
+ case ' ': case '\t':
56
+ return yylex(yylval, loc);
57
+
58
+ case '0': case '1': case '2': case '3': case '4':
59
+ case '5': case '6': case '7': case '8': case '9':
60
+ val = c - '0';
61
+ while (1) {
62
+ c = getchar();
63
+ if (isdigit(c)) {
64
+ val = val * 10 + (c - '0');
65
+ }
66
+ else {
67
+ ungetc(c, stdin);
68
+ break;
69
+ }
70
+ }
71
+ yylval->val = val;
72
+ return NUM;
73
+
74
+ case '\n':
75
+ return LF;
76
+
77
+ case '+': case '-': case '*': case '/': case '(': case ')':
78
+ return c;
79
+
80
+ case EOF:
81
+ exit(0);
82
+
83
+ default:
84
+ fprintf(stderr, "unknown character: %c\n", c);
85
+ exit(1);
86
+ }
87
+ }
88
+
89
+ static int yyerror(YYLTYPE *loc, const char *str) {
90
+ fprintf(stderr, "parse error: %s\n", str);
91
+ return 0;
92
+ }
93
+
94
+ int main() {
95
+ printf("Enter the formula:\n");
96
+ yyparse();
97
+ return 0;
98
+ }
@@ -0,0 +1,7 @@
1
+ module Lrama
2
+ module Bitmap
3
+ def self.from_array: (Array[int] ary) -> Integer
4
+
5
+ def self.to_array: (Integer int) -> Array[Integer]
6
+ end
7
+ end
@@ -0,0 +1,15 @@
1
+ module Lrama
2
+ class Report
3
+ module Profile
4
+ def self.report_profile: { -> void } -> StackProf::result
5
+ end
6
+
7
+ module Duration
8
+ self.@_report_duration_enabled: bool | nil
9
+
10
+ def self.enable: -> void
11
+ def self.enabled?: -> bool
12
+ def report_duration: [T] (_ToS method_name) { -> T } -> T
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,16 @@
1
+ module Lrama
2
+ class Warning
3
+ interface _Appendable
4
+ def <<: (String message) -> self
5
+ end
6
+
7
+ @out: _Appendable
8
+
9
+ attr_reader errors: Array[String]
10
+ attr_reader warns: Array[String]
11
+ def initialize: (?_Appendable out) -> void
12
+ def error: (String message) -> void
13
+ def warn: (String message) -> void
14
+ def has_error?: -> bool
15
+ end
16
+ end
@@ -114,7 +114,7 @@
114
114
  #ifndef YYDEBUG
115
115
  # define YYDEBUG 0
116
116
  #endif
117
- #if YYDEBUG
117
+ #if YYDEBUG && !defined(yydebug)
118
118
  extern int yydebug;
119
119
  #endif
120
120
  <%-# b4_percent_code_get([[requires]]). %code is not supported -%>
@@ -731,7 +731,7 @@ do { \
731
731
 
732
732
  /* Temporary convenience wrapper in case some people defined the
733
733
  undocumented and private YY_LOCATION_PRINT macros. */
734
- # define YYLOCATION_PRINT(File, Loc) YY_LOCATION_PRINT(File, *(Loc))
734
+ # define YYLOCATION_PRINT(File, Loc<%= output.user_args %>) YY_LOCATION_PRINT(File, *(Loc)<%= output.user_args %>)
735
735
 
736
736
  # elif defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
737
737
 
@@ -767,11 +767,11 @@ yy_location_print_ (FILE *yyo, YYLTYPE const * const yylocp)
767
767
 
768
768
  /* Temporary convenience wrapper in case some people defined the
769
769
  undocumented and private YY_LOCATION_PRINT macros. */
770
- # define YY_LOCATION_PRINT(File, Loc) YYLOCATION_PRINT(File, &(Loc))
770
+ # define YY_LOCATION_PRINT(File, Loc<%= output.user_args %>) YYLOCATION_PRINT(File, &(Loc)<%= output.user_args %>)
771
771
 
772
772
  # else
773
773
 
774
- # define YYLOCATION_PRINT(File, Loc) ((void) 0)
774
+ # define YYLOCATION_PRINT(File, Loc<%= output.user_args %>) ((void) 0)
775
775
  /* Temporary convenience wrapper in case some people defined the
776
776
  undocumented and private YY_LOCATION_PRINT macros. */
777
777
  # define YY_LOCATION_PRINT YYLOCATION_PRINT
@@ -780,13 +780,13 @@ yy_location_print_ (FILE *yyo, YYLTYPE const * const yylocp)
780
780
  # endif /* !defined YYLOCATION_PRINT */
781
781
 
782
782
 
783
- # define YY_SYMBOL_PRINT(Title, Kind, Value, Location) \
783
+ # define YY_SYMBOL_PRINT(Title, Kind, Value, Location<%= output.user_args %>) \
784
784
  do { \
785
785
  if (yydebug) \
786
786
  { \
787
787
  YYFPRINTF (stderr, "%s ", Title); \
788
788
  yy_symbol_print (stderr, \
789
- Kind, Value, Location, p); \
789
+ Kind, Value, Location<%= output.user_args %>); \
790
790
  YYFPRINTF (stderr, "\n"); \
791
791
  } \
792
792
  } while (0)
@@ -828,9 +828,9 @@ yy_symbol_print (FILE *yyo,
828
828
  YYFPRINTF (yyo, "%s %s (",
829
829
  yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind));
830
830
 
831
- YYLOCATION_PRINT (yyo, yylocationp);
831
+ YYLOCATION_PRINT (yyo, yylocationp<%= output.user_args %>);
832
832
  YYFPRINTF (yyo, ": ");
833
- yy_symbol_value_print (yyo, yykind, yyvaluep, yylocationp, p);
833
+ yy_symbol_value_print (yyo, yykind, yyvaluep, yylocationp<%= output.user_args %>);
834
834
  YYFPRINTF (yyo, ")");
835
835
  }
836
836
 
@@ -840,7 +840,7 @@ yy_symbol_print (FILE *yyo,
840
840
  `------------------------------------------------------------------*/
841
841
 
842
842
  static void
843
- yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop)
843
+ yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop<%= output.user_formals %>)
844
844
  {
845
845
  YYFPRINTF (stderr, "Stack now");
846
846
  for (; yybottom <= yytop; yybottom++)
@@ -851,10 +851,10 @@ yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop)
851
851
  YYFPRINTF (stderr, "\n");
852
852
  }
853
853
 
854
- # define YY_STACK_PRINT(Bottom, Top) \
854
+ # define YY_STACK_PRINT(Bottom, Top<%= output.user_args %>) \
855
855
  do { \
856
856
  if (yydebug) \
857
- yy_stack_print ((Bottom), (Top)); \
857
+ yy_stack_print ((Bottom), (Top)<%= output.user_args %>); \
858
858
  } while (0)
859
859
 
860
860
 
@@ -878,25 +878,27 @@ yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp, YYLTYPE *yylsp,
878
878
  yy_symbol_print (stderr,
879
879
  YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]),
880
880
  &yyvsp[(yyi + 1) - (yynrhs)],
881
- &(yylsp[(yyi + 1) - (yynrhs)]), p);
881
+ &(yylsp[(yyi + 1) - (yynrhs)])<%= output.user_args %>);
882
882
  YYFPRINTF (stderr, "\n");
883
883
  }
884
884
  }
885
885
 
886
- # define YY_REDUCE_PRINT(Rule) \
886
+ # define YY_REDUCE_PRINT(Rule<%= output.user_args %>) \
887
887
  do { \
888
888
  if (yydebug) \
889
- yy_reduce_print (yyssp, yyvsp, yylsp, Rule, p); \
889
+ yy_reduce_print (yyssp, yyvsp, yylsp, Rule<%= output.user_args %>); \
890
890
  } while (0)
891
891
 
892
892
  /* Nonzero means print parse trace. It is left uninitialized so that
893
893
  multiple parsers can coexist. */
894
+ #ifndef yydebug
894
895
  int yydebug;
896
+ #endif
895
897
  #else /* !YYDEBUG */
896
898
  # define YYDPRINTF(Args) ((void) 0)
897
- # define YY_SYMBOL_PRINT(Title, Kind, Value, Location)
898
- # define YY_STACK_PRINT(Bottom, Top)
899
- # define YY_REDUCE_PRINT(Rule)
899
+ # define YY_SYMBOL_PRINT(Title, Kind, Value, Location<%= output.user_args %>)
900
+ # define YY_STACK_PRINT(Bottom, Top<%= output.user_args %>)
901
+ # define YY_REDUCE_PRINT(Rule<%= output.user_args %>)
900
902
  #endif /* !YYDEBUG */
901
903
 
902
904
 
@@ -1110,7 +1112,7 @@ yy_syntax_error_arguments (const yypcontext_t *yyctx,
1110
1112
  required number of bytes is too large to store. */
1111
1113
  static int
1112
1114
  yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg,
1113
- const yypcontext_t *yyctx)
1115
+ const yypcontext_t *yyctx<%= output.user_formals %>)
1114
1116
  {
1115
1117
  enum { YYARGS_MAX = 5 };
1116
1118
  /* Internationalized format string. */
@@ -1200,7 +1202,7 @@ yydestruct (const char *yymsg,
1200
1202
  <%= output.parse_param_use("yyvaluep", "yylocationp") %>
1201
1203
  if (!yymsg)
1202
1204
  yymsg = "Deleting";
1203
- YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp);
1205
+ YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp<%= output.user_args %>);
1204
1206
 
1205
1207
  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1206
1208
  YY_USE (yykind);
@@ -1227,11 +1229,11 @@ int yychar;
1227
1229
  /* The semantic value of the lookahead symbol. */
1228
1230
  /* Default value used for initialization, for pacifying older GCCs
1229
1231
  or non-GCC compilers. */
1230
- YY_INITIAL_VALUE (static YYSTYPE yyval_default;)
1232
+ YY_INITIAL_VALUE (static const YYSTYPE yyval_default;)
1231
1233
  YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default);
1232
1234
 
1233
1235
  /* Location data for the lookahead symbol. */
1234
- static YYLTYPE yyloc_default
1236
+ static const YYLTYPE yyloc_default
1235
1237
  # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
1236
1238
  = { 1, 1, 1, 1 }
1237
1239
  # endif
@@ -1322,7 +1324,7 @@ yysetstate:
1322
1324
  YY_IGNORE_USELESS_CAST_BEGIN
1323
1325
  *yyssp = YY_CAST (yy_state_t, yystate);
1324
1326
  YY_IGNORE_USELESS_CAST_END
1325
- YY_STACK_PRINT (yyss, yyssp);
1327
+ YY_STACK_PRINT (yyss, yyssp<%= output.user_args %>);
1326
1328
 
1327
1329
  if (yyss + yystacksize - 1 <= yyssp)
1328
1330
  #if !defined yyoverflow && !defined YYSTACK_RELOCATE
@@ -1440,7 +1442,7 @@ yybackup:
1440
1442
  else
1441
1443
  {
1442
1444
  yytoken = YYTRANSLATE (yychar);
1443
- YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
1445
+ YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc<%= output.user_args %>);
1444
1446
  }
1445
1447
 
1446
1448
  /* If the proper action on seeing token YYTOKEN is to reduce or to
@@ -1463,7 +1465,7 @@ yybackup:
1463
1465
  yyerrstatus--;
1464
1466
 
1465
1467
  /* Shift the lookahead token. */
1466
- YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
1468
+ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc<%= output.user_args %>);
1467
1469
  yystate = yyn;
1468
1470
  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1469
1471
  *++yyvsp = yylval;
@@ -1505,7 +1507,7 @@ yyreduce:
1505
1507
  /* Default location. */
1506
1508
  YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);
1507
1509
  yyerror_range[1] = yyloc;
1508
- YY_REDUCE_PRINT (yyn);
1510
+ YY_REDUCE_PRINT (yyn<%= output.user_args %>);
1509
1511
  switch (yyn)
1510
1512
  {
1511
1513
  <%= output.user_actions -%>
@@ -1523,7 +1525,7 @@ yyreduce:
1523
1525
  case of YYERROR or YYBACKUP, subsequent parser actions might lead
1524
1526
  to an incorrect destructor call or verbose syntax error message
1525
1527
  before the lookahead is translated. */
1526
- YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc);
1528
+ YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc<%= output.user_args %>);
1527
1529
 
1528
1530
  YYPOPSTACK (yylen);
1529
1531
  yylen = 0;
@@ -1561,7 +1563,7 @@ yyerrlab:
1561
1563
  = {yyssp, yytoken, &yylloc};
1562
1564
  char const *yymsgp = YY_("syntax error");
1563
1565
  int yysyntax_error_status;
1564
- yysyntax_error_status = yysyntax_error (&yymsg_alloc, &yymsg, &yyctx);
1566
+ yysyntax_error_status = yysyntax_error (&yymsg_alloc, &yymsg, &yyctx<%= output.user_args %>);
1565
1567
  if (yysyntax_error_status == 0)
1566
1568
  yymsgp = yymsg;
1567
1569
  else if (yysyntax_error_status == -1)
@@ -1573,7 +1575,7 @@ yyerrlab:
1573
1575
  if (yymsg)
1574
1576
  {
1575
1577
  yysyntax_error_status
1576
- = yysyntax_error (&yymsg_alloc, &yymsg, &yyctx);
1578
+ = yysyntax_error (&yymsg_alloc, &yymsg, &yyctx<%= output.user_args %>);
1577
1579
  yymsgp = yymsg;
1578
1580
  }
1579
1581
  else
@@ -1628,7 +1630,7 @@ yyerrorlab:
1628
1630
  this YYERROR. */
1629
1631
  YYPOPSTACK (yylen);
1630
1632
  yylen = 0;
1631
- YY_STACK_PRINT (yyss, yyssp);
1633
+ YY_STACK_PRINT (yyss, yyssp<%= output.user_args %>);
1632
1634
  yystate = *yyssp;
1633
1635
  goto yyerrlab1;
1634
1636
 
@@ -1663,7 +1665,7 @@ yyerrlab1:
1663
1665
  YY_ACCESSING_SYMBOL (yystate), yyvsp, yylsp<%= output.user_args %>);
1664
1666
  YYPOPSTACK (1);
1665
1667
  yystate = *yyssp;
1666
- YY_STACK_PRINT (yyss, yyssp);
1668
+ YY_STACK_PRINT (yyss, yyssp<%= output.user_args %>);
1667
1669
  }
1668
1670
 
1669
1671
  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
@@ -1675,7 +1677,7 @@ yyerrlab1:
1675
1677
  YYLLOC_DEFAULT (*yylsp, yyerror_range, 2);
1676
1678
 
1677
1679
  /* Shift the error token. */
1678
- YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp);
1680
+ YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp<%= output.user_args %>);
1679
1681
 
1680
1682
  yystate = yyn;
1681
1683
  goto yynewstate;
@@ -1721,7 +1723,7 @@ yyreturnlab:
1721
1723
  /* Do not reclaim the symbols of the rule whose action triggered
1722
1724
  this YYABORT or YYACCEPT. */
1723
1725
  YYPOPSTACK (yylen);
1724
- YY_STACK_PRINT (yyss, yyssp);
1726
+ YY_STACK_PRINT (yyss, yyssp<%= output.user_args %>);
1725
1727
  while (yyssp != yyss)
1726
1728
  {
1727
1729
  yydestruct ("Cleanup: popping",