)
class Section1(Section1Or2):
+ class Debug(Item):
+ # GENERATE ELEMENT() BEGIN
+ def __init__(
+ self,
+ tag = 'PYACC_Section1_Debug',
+ attrib = {},
+ text = '',
+ children = []
+ ):
+ Item.__init__(
+ self,
+ tag,
+ attrib,
+ text,
+ children
+ )
+ def copy(self, factory = None):
+ result = Item.copy(
+ self,
+ Debug if factory is None else factory
+ )
+ return result
+ def __repr__(self):
+ params = []
+ self.repr_serialize(params)
+ return 'ast.PYACC.Section1.Debug({0:s})'.format(', '.join(params))
+ # GENERATE END
+ def post_process(
+ self,
+ pyacc,
+ section,
+ character_to_symbol,
+ name_to_symbol,
+ string_to_symbol,
+ name_to_tag
+ ):
+ self.debug = True
+
class Define(Item):
# GENERATE ELEMENT() BEGIN
def __init__(
else:
assert False
elif name == 'parse.error':
- section.parse_error = value
+ if value == 'verbose':
+ section.error_verbose = True
+ elif value == 'simple':
+ section.error_verbose = False
+ else:
+ assert False
elif name == 'parse.lac':
section.parse_lac = value
elif name == 'parse.trace':
if value == '' or value == 'true':
- section.parse_trace = True
+ section.debug = True
elif value == 'false':
- section.parse_trace = False
+ section.debug = False
else:
assert False
else:
self.repr_serialize(params)
return 'ast.PYACC.Section1.ErrorVerbose({0:s})'.format(', '.join(params))
# GENERATE END
-
+ def post_process(
+ self,
+ pyacc,
+ section,
+ character_to_symbol,
+ name_to_symbol,
+ string_to_symbol,
+ name_to_tag
+ ):
+ section.error_verbose = True
+
class Expect(Item):
# GENERATE ELEMENT(int value) BEGIN
def __init__(
return 'ast.PYACC.Section1.FilePrefix({0:s})'.format(', '.join(params))
# GENERATE END
- class Flag(Item):
- # GENERATE ELEMENT() BEGIN
- def __init__(
- self,
- tag = 'PYACC_Section1_Flag',
- attrib = {},
- text = '',
- children = []
- ):
- Item.__init__(
- self,
- tag,
- attrib,
- text,
- children
- )
- def copy(self, factory = None):
- result = Item.copy(
- self,
- Flag if factory is None else factory
- )
- return result
- def __repr__(self):
- params = []
- self.repr_serialize(params)
- return 'ast.PYACC.Section1.Flag({0:s})'.format(', '.join(params))
- # GENERATE END
-
class GLRParser(Item):
# GENERATE ELEMENT() BEGIN
def __init__(
return 'ast.PYACC.Section1.Lines({0:s})'.format(', '.join(params))
# GENERATE END
+ class Locations(Item):
+ # GENERATE ELEMENT() BEGIN
+ def __init__(
+ self,
+ tag = 'PYACC_Section1_Locations',
+ attrib = {},
+ text = '',
+ children = []
+ ):
+ Item.__init__(
+ self,
+ tag,
+ attrib,
+ text,
+ children
+ )
+ def copy(self, factory = None):
+ result = Item.copy(
+ self,
+ Locations if factory is None else factory
+ )
+ return result
+ def __repr__(self):
+ params = []
+ self.repr_serialize(params)
+ return 'ast.PYACC.Section1.Locations({0:s})'.format(', '.join(params))
+ # GENERATE END
+ def post_process(
+ self,
+ pyacc,
+ section,
+ character_to_symbol,
+ name_to_symbol,
+ string_to_symbol,
+ name_to_tag
+ ):
+ section.locations = True
+
class NamePrefix(Item):
# GENERATE ELEMENT() BEGIN
def __init__(
pyacc.after_union_code
).append(self[0])
+ class PureParser(Item):
+ # GENERATE ELEMENT() BEGIN
+ def __init__(
+ self,
+ tag = 'PYACC_Section1_PureParser',
+ attrib = {},
+ text = '',
+ children = []
+ ):
+ Item.__init__(
+ self,
+ tag,
+ attrib,
+ text,
+ children
+ )
+ def copy(self, factory = None):
+ result = Item.copy(
+ self,
+ PureParser if factory is None else factory
+ )
+ return result
+ def __repr__(self):
+ params = []
+ self.repr_serialize(params)
+ return 'ast.PYACC.Section1.PureParser({0:s})'.format(', '.join(params))
+ # GENERATE END
+ def post_process(
+ self,
+ pyacc,
+ section,
+ character_to_symbol,
+ name_to_symbol,
+ string_to_symbol,
+ name_to_tag
+ ):
+ section.api_pure = 1
+
class Require(Item):
# GENERATE ELEMENT() BEGIN
def __init__(
return 'ast.PYACC.Section1.YACC({0:s})'.format(', '.join(params))
# GENERATE END
- # GENERATE ELEMENT(str api_prefix, int api_pure, bool locations, str parse_error, str parse_lac, bool parse_trace, bool defines, int expect, bool verbose) BEGIN
+ # GENERATE ELEMENT(str api_prefix, int api_pure, bool locations, bool error_verbose, str parse_lac, bool debug, bool defines, int expect, bool verbose) BEGIN
def __init__(
self,
tag = 'PYACC_Section1',
api_prefix = '',
api_pure = -1,
locations = False,
- parse_error = '',
+ error_verbose = False,
parse_lac = '',
- parse_trace = False,
+ debug = False,
defines = False,
expect = -1,
verbose = False
if isinstance(locations, str) else
locations
)
- self.parse_error = parse_error
+ self.error_verbose = (
+ element.deserialize_bool(error_verbose)
+ if isinstance(error_verbose, str) else
+ error_verbose
+ )
self.parse_lac = parse_lac
- self.parse_trace = (
- element.deserialize_bool(parse_trace)
- if isinstance(parse_trace, str) else
- parse_trace
+ self.debug = (
+ element.deserialize_bool(debug)
+ if isinstance(debug, str) else
+ debug
)
self.defines = (
element.deserialize_bool(defines)
self.set('api_prefix', element.serialize_str(self.api_prefix))
self.set('api_pure', element.serialize_int(self.api_pure))
self.set('locations', element.serialize_bool(self.locations))
- self.set('parse_error', element.serialize_str(self.parse_error))
+ self.set('error_verbose', element.serialize_bool(self.error_verbose))
self.set('parse_lac', element.serialize_str(self.parse_lac))
- self.set('parse_trace', element.serialize_bool(self.parse_trace))
+ self.set('debug', element.serialize_bool(self.debug))
self.set('defines', element.serialize_bool(self.defines))
self.set('expect', element.serialize_int(self.expect))
self.set('verbose', element.serialize_bool(self.verbose))
self.api_prefix = element.deserialize_str(self.get('api_prefix', ''))
self.api_pure = element.deserialize_int(self.get('api_pure', '-1'))
self.locations = element.deserialize_bool(self.get('locations', 'false'))
- self.parse_error = element.deserialize_str(self.get('parse_error', ''))
+ self.error_verbose = element.deserialize_bool(self.get('error_verbose', 'false'))
self.parse_lac = element.deserialize_str(self.get('parse_lac', ''))
- self.parse_trace = element.deserialize_bool(self.get('parse_trace', 'false'))
+ self.debug = element.deserialize_bool(self.get('debug', 'false'))
self.defines = element.deserialize_bool(self.get('defines', 'false'))
self.expect = element.deserialize_int(self.get('expect', '-1'))
self.verbose = element.deserialize_bool(self.get('verbose', 'false'))
result.api_prefix = self.api_prefix
result.api_pure = self.api_pure
result.locations = self.locations
- result.parse_error = self.parse_error
+ result.error_verbose = self.error_verbose
result.parse_lac = self.parse_lac
- result.parse_trace = self.parse_trace
+ result.debug = self.debug
result.defines = self.defines
result.expect = self.expect
result.verbose = self.verbose
params.append(
'locations = {0:s}'.format(repr(self.locations))
)
- if self.parse_error != '':
+ if self.error_verbose != False:
params.append(
- 'parse_error = {0:s}'.format(repr(self.parse_error))
+ 'error_verbose = {0:s}'.format(repr(self.error_verbose))
)
if self.parse_lac != '':
params.append(
'parse_lac = {0:s}'.format(repr(self.parse_lac))
)
- if self.parse_trace != False:
+ if self.debug != False:
params.append(
- 'parse_trace = {0:s}'.format(repr(self.parse_trace))
+ 'debug = {0:s}'.format(repr(self.debug))
)
if self.defines != False:
params.append(
self.api_prefix = ''
self.api_pure = 0
self.locations = False
- self.parse_error = ''
+ self.error_verbose = False
self.parse_lac = ''
- self.parse_trace = False
+ self.debug = False
self.defines = False
self.expect = -1
self.verbose = False
#if self.api_pure != 0:
# sys.stderr.write('warning: ignoring %define api.pure\n')
#if self.locations:
- # sys.stderr.write('warning: ignoring %define locations\n')
- if len(self.parse_error):
- sys.stderr.write('warning: ignoring %define parse.error\n')
+ # sys.stderr.write('warning: ignoring %locations\n')
+ #if self.error_verbose:
+ # sys.stderr.write('warning: ignoring %error-verbose\n')
if len(self.parse_lac):
sys.stderr.write('warning: ignoring %define parse.lac\n')
- if self.parse_trace:
- sys.stderr.write('warning: ignoring %define parse.trace\n')
+ #if self.debug:
+ # sys.stderr.write('warning: ignoring %debug\n')
if self.defines:
sys.stderr.write('warning: ignoring %defines\n')
if self.expect != -1:
'PYACC_Section1Or2_Type': PYACC.Section1Or2.Type,
'PYACC_Section1Or2_Union': PYACC.Section1Or2.Union,
'PYACC_Section1': PYACC.Section1,
+ 'PYACC_Section1_Debug': PYACC.Section1.Debug,
'PYACC_Section1_Define': PYACC.Section1.Define,
'PYACC_Section1_Defines': PYACC.Section1.Defines,
'PYACC_Section1_ErrorVerbose': PYACC.Section1.ErrorVerbose,
'PYACC_Section1_Expect': PYACC.Section1.Expect,
'PYACC_Section1_ExpectRR': PYACC.Section1.ExpectRR,
'PYACC_Section1_FilePrefix': PYACC.Section1.FilePrefix,
- 'PYACC_Section1_Flag': PYACC.Section1.Flag,
'PYACC_Section1_GLRParser': PYACC.Section1.GLRParser,
'PYACC_Section1_InitialAction': PYACC.Section1.InitialAction,
'PYACC_Section1_Language': PYACC.Section1.Language,
'PYACC_Section1_Lines': PYACC.Section1.Lines,
+ 'PYACC_Section1_Locations': PYACC.Section1.Locations,
'PYACC_Section1_NamePrefix': PYACC.Section1.NamePrefix,
'PYACC_Section1_NonDeterministicParser': PYACC.Section1.NonDeterministicParser,
'PYACC_Section1_Output': PYACC.Section1.Output,
'PYACC_Section1_Param': PYACC.Section1.Param,
'PYACC_Section1_Prologue': PYACC.Section1.Prologue,
+ 'PYACC_Section1_PureParser': PYACC.Section1.PureParser,
'PYACC_Section1_Require': PYACC.Section1.Require,
'PYACC_Section1_Skeleton': PYACC.Section1.Skeleton,
'PYACC_Section1_TokenTable': PYACC.Section1.TokenTable,
''.join([i.get_text() for i in pyacc.before_union_code])
)
)
+ elif line == '/* GENERATE YYERROR_VERBOSE */\n':
+ fout.write(
+ '''/* GENERATE YYERROR_VERBOSE BEGIN */
+#ifdef YYERROR_VERBOSE
+# undef YYERROR_VERBOSE
+# define YYERROR_VERBOSE 1
+#else
+# define YYERROR_VERBOSE {0:d}
+#endif
+/* GENERATE YYERROR_VERBOSE END */
+'''.format(
+ int(pyacc[0].error_verbose)
+ )
+ )
elif line == '/* GENERATE SECTION1REQUIRES */\n':
fout.write(
'''/* GENERATE SECTION1REQUIRES BEGIN */
''.join([i.get_text() for i in pyacc.requires_code])
)
)
+ elif line == '/* GENERATE YYDEBUG */\n':
+ fout.write(
+ '''/* GENERATE YYDEBUG BEGIN */
+#ifndef YYDEBUG
+# define YYDEBUG {0:d}
+#endif
+/* GENERATE YYDEBUG END */
+'''.format(
+ int(pyacc[0].debug)
+ )
+ )
elif line == '/* GENERATE TOKENSEQUAL */\n':
fout.write(
'''/* GENERATE TOKENSEQUAL BEGIN */{0:s}
}};
#endif
-#if YYDEBUG || YYERROR_VERBOSE || 0
+#if YYDEBUG || YYERROR_VERBOSE || {9:d}
/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
First, the terminals, then, starting at YYNTOKENS, nonterminals. */
static const char *const yytname[] =
-{{{9:s}
+{{{10:s}
}};
#endif
/* YYTOKNUM[NUM] -- (External) token number corresponding to the
(internal) symbol number NUM (which must be that of a token). */
static const yytype_int16 yytoknum[] =
-{{{10:s}
+{{{11:s}
}};
# endif
-#define YYPACT_NINF {11:d}
+#define YYPACT_NINF {12:d}
#define yypact_value_is_default(Yystate) \\
- (!!((Yystate) == ({12:d})))
+ (!!((Yystate) == ({13:d})))
#define YYTABLE_NINF -1
/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
STATE-NUM. */
static const yytype_int16 yypact[] =
-{{{13:s}
+{{{14:s}
}};
/* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
Performed when YYTABLE does not specify something else to do. Zero
means the default is an error. */
static const yytype_int16 yydefact[] =
-{{{14:s}
+{{{15:s}
}};
/* YYPGOTO[NTERM-NUM]. */
static const yytype_int16 yypgoto[] =
-{{{15:s}
+{{{16:s}
}};
/* YYDEFGOTO[NTERM-NUM]. */
static const yytype_int16 yydefgoto[] =
-{{{16:s}
+{{{17:s}
}};
/* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
positive, shift that token. If negative, reduce the rule whose
number is the opposite. If YYTABLE_NINF, syntax error. */
static const yytype_int16 yytable[] =
-{{{17:s}
+{{{18:s}
}};
static const yytype_int16 yycheck[] =
-{{{18:s}
+{{{19:s}
}};
/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
symbol of state STATE-NUM. */
static const yytype_int16 yystos[] =
-{{{19:s}
+{{{20:s}
}};
/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
static const yytype_int16 yyr1[] =
-{{{20:s}
+{{{21:s}
}};
/* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */
static const yytype_int16 yyr2[] =
-{{{21:s}
+{{{22:s}
}};
/* GENERATE TABLES END */
'''.format(
for i in range(0, yyrline.shape[0], 10)
]
),
+ # YYERROR_VERBOSE (strangely the defined value is repeated)
+ int(pyacc[0].error_verbose),
# yytname
','.join(
['\n {0:s}'.format(', '.join(i)) for i in yytname_lines]
---- y.tab.c.orig 2018-07-29 18:45:32.543635165 +1000
-+++ y.tab.c 2018-07-29 19:01:47.335660891 +1000
+--- y.tab.c.orig 2018-07-29 19:39:22.183720400 +1000
++++ y.tab.c 2018-07-29 19:40:01.175721429 +1000
@@ -50,7 +50,7 @@
#define YYSKELETON_NAME "yacc.c"
# ifndef YY_NULLPTR
# if defined __cplusplus && 201103L <= __cplusplus
-@@ -97,28 +97,26 @@
+@@ -73,21 +73,14 @@
+ # endif
+
+ /* Enabling verbose error messages. */
+-#ifdef YYERROR_VERBOSE
+-# undef YYERROR_VERBOSE
+-# define YYERROR_VERBOSE 1
+-#else
+-# define YYERROR_VERBOSE 0
+-#endif
++/* GENERATE YYERROR_VERBOSE */
+
+ /* In a future release of Bison, this section will be replaced
+ by #include "y.tab.h". */
+ #ifndef YY_YY_Y_TAB_H_INCLUDED
+ # define YY_YY_Y_TAB_H_INCLUDED
+ /* Debug traces. */
+-#ifndef YYDEBUG
+-# define YYDEBUG 0
+-#endif
++/* GENERATE YYDEBUG */
+ #if YYDEBUG
+ extern int yydebug;
+ #endif
+@@ -97,28 +90,26 @@
# define YYTOKENTYPE
enum yytokentype
{
int yyparse (void);
-@@ -126,6 +124,7 @@
+@@ -126,6 +117,7 @@
/* Copy the second part of user declarations. */
#ifdef short
# undef short
-@@ -306,13 +305,20 @@
+@@ -306,13 +298,20 @@
#if (! defined yyoverflow \
&& (! defined __cplusplus \
};
/* The size of the maximum gap between one aligned stack and the next. */
-@@ -320,9 +326,15 @@
+@@ -320,9 +319,15 @@
/* The size of an array large to enough to hold all stacks, each with
N elements. */
# define YYCOPY_NEEDED 1
-@@ -364,155 +376,7 @@
+@@ -364,155 +369,7 @@
# endif
#endif /* !YYCOPY_NEEDED */
#define yyerrok (yyerrstatus = 0)
#define yyclearin (yychar = YYEMPTY)
-@@ -526,7 +390,25 @@
+@@ -526,7 +383,25 @@
#define YYRECOVERING() (!!yyerrstatus)
do \
if (yychar == YYEMPTY) \
{ \
-@@ -542,12 +424,39 @@
+@@ -542,12 +417,39 @@
YYERROR; \
} \
while (0)
+/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
+ If N is 0, then set CURRENT to the empty location which ends
+ the previous symbol: RHS[0] (always defined). */
-+
+
+# ifndef YYLLOC_DEFAULT
+# define YYLLOC_DEFAULT(Current, Rhs, N) \
+ do \
+ } \
+ while (0)
+# endif
-
++
+# define YYRHSLOC(Rhs, K) ((Rhs)[K])
+#endif
/* Enable debugging if requested. */
#if YYDEBUG
-@@ -563,13 +472,64 @@
+@@ -563,13 +465,64 @@
YYFPRINTF Args; \
} while (0)
do { \
if (yydebug) \
{ \
-@@ -579,12 +539,29 @@
+@@ -579,12 +532,29 @@
YYFPRINTF (stderr, "\n"); \
} \
} while (0)
static void
yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
{
-@@ -592,18 +569,32 @@
+@@ -592,18 +562,32 @@
YYUSE (yyo);
if (!yyvaluep)
return;
static void
yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
{
-@@ -613,6 +604,7 @@
+@@ -613,6 +597,7 @@
yy_symbol_value_print (yyoutput, yytype, yyvaluep);
YYFPRINTF (yyoutput, ")");
}
/*------------------------------------------------------------------.
| yy_stack_print -- Print the state stack from its BOTTOM up to its |
-@@ -642,6 +634,33 @@
+@@ -642,6 +627,33 @@
| Report that the YYRULE is going to be reduced. |
`------------------------------------------------*/
static void
yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule)
{
-@@ -662,11 +681,12 @@
+@@ -662,11 +674,12 @@
}
}
/* Nonzero means print parse trace. It is left uninitialized so that
multiple parsers can coexist. */
-@@ -923,10 +943,12 @@
+@@ -923,10 +936,12 @@
| Release the memory associated to this symbol. |
`-----------------------------------------------*/
if (!yymsg)
yymsg = "Deleting";
YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
-@@ -935,18 +957,38 @@
+@@ -935,18 +950,38 @@
YYUSE (yytype);
YY_IGNORE_MAYBE_UNINITIALIZED_END
}
/*----------.
| yyparse. |
-@@ -955,6 +997,27 @@
+@@ -955,6 +990,27 @@
int
yyparse (void)
{
int yystate;
/* Number of tokens to shift before error messages enabled. */
int yyerrstatus;
-@@ -962,6 +1025,7 @@
+@@ -962,6 +1018,7 @@
/* The stacks and their tools:
'yyss': related to states.
'yyvs': related to semantic values.
Refer to the stacks through separate pointers, to allow yyoverflow
to reallocate them elsewhere. */
-@@ -976,6 +1040,16 @@
+@@ -976,6 +1033,16 @@
YYSTYPE *yyvs;
YYSTYPE *yyvsp;
YYSIZE_T yystacksize;
int yyn;
-@@ -985,6 +1059,9 @@
+@@ -985,6 +1052,9 @@
/* The variables used to return semantic value and location from the
action routines. */
YYSTYPE yyval;
#if YYERROR_VERBOSE
/* Buffer for error messages, and its allocated size. */
-@@ -993,7 +1070,11 @@
+@@ -993,7 +1063,11 @@
YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
#endif
/* The number of symbols on the RHS of the reduced rule.
Keep to zero when no symbol should be popped. */
-@@ -1001,6 +1082,9 @@
+@@ -1001,6 +1075,9 @@
yyssp = yyss = yyssa;
yyvsp = yyvs = yyvsa;
yystacksize = YYINITDEPTH;
YYDPRINTF ((stderr, "Starting parse\n"));
-@@ -1075,6 +1159,9 @@
+@@ -1075,6 +1152,9 @@
yyssp = yyss + yysize - 1;
yyvsp = yyvs + yysize - 1;
YYDPRINTF ((stderr, "Stack size increased to %lu\n",
(unsigned long int) yystacksize));
-@@ -1109,7 +1196,15 @@
+@@ -1109,7 +1189,15 @@
if (yychar == YYEMPTY)
{
YYDPRINTF ((stderr, "Reading a token: "));
}
if (yychar <= YYEOF)
-@@ -1152,7 +1247,9 @@
+@@ -1152,7 +1240,9 @@
YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
*++yyvsp = yylval;
YY_IGNORE_MAYBE_UNINITIALIZED_END
goto yynewstate;
-@@ -1183,18 +1280,14 @@
+@@ -1183,18 +1273,14 @@
GCC warning that YYVAL may be used uninitialized. */
yyval = yyvsp[1-yylen];
default: break;
}
-@@ -1216,6 +1309,9 @@
+@@ -1216,6 +1302,9 @@
YY_STACK_PRINT (yyss, yyssp);
*++yyvsp = yyval;
/* Now 'shift' the result of the reduction. Determine what state
that goes to, based on the state we popped back to and the rule
-@@ -1245,7 +1341,11 @@
+@@ -1245,7 +1334,11 @@
{
++yynerrs;
#if ! YYERROR_VERBOSE
#else
# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
yyssp, yytoken)
-@@ -1272,7 +1372,11 @@
+@@ -1272,7 +1365,11 @@
yymsgp = yymsg;
}
}
if (yysyntax_error_status == 2)
goto yyexhaustedlab;
}
-@@ -1280,7 +1384,9 @@
+@@ -1280,7 +1377,9 @@
#endif
}
if (yyerrstatus == 3)
{
-@@ -1295,8 +1401,13 @@
+@@ -1295,8 +1394,13 @@
}
else
{
yychar = YYEMPTY;
}
}
-@@ -1317,6 +1428,9 @@
+@@ -1317,6 +1421,9 @@
if (/*CONSTCOND*/ 0)
goto yyerrorlab;
/* Do not reclaim the symbols of the rule whose action triggered
this YYERROR. */
YYPOPSTACK (yylen);
-@@ -1350,9 +1464,14 @@
+@@ -1350,9 +1457,14 @@
if (yyssp == yyss)
YYABORT;
YYPOPSTACK (1);
yystate = *yyssp;
YY_STACK_PRINT (yyss, yyssp);
-@@ -1362,6 +1481,13 @@
+@@ -1362,6 +1474,13 @@
*++yyvsp = yylval;
YY_IGNORE_MAYBE_UNINITIALIZED_END
/* Shift the error token. */
YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
-@@ -1389,7 +1515,11 @@
+@@ -1389,7 +1508,11 @@
| yyexhaustedlab -- memory exhaustion comes here. |
`-------------------------------------------------*/
yyexhaustedlab:
yyresult = 2;
/* Fall through. */
#endif
-@@ -1400,8 +1530,13 @@
+@@ -1400,8 +1523,13 @@
/* Make sure we have latest lookahead translation. See comments at
user semantic actions for why this is necessary. */
yytoken = YYTRANSLATE (yychar);
}
/* Do not reclaim the symbols of the rule whose action triggered
this YYABORT or YYACCEPT. */
-@@ -1409,8 +1544,13 @@
+@@ -1409,8 +1537,13 @@
YY_STACK_PRINT (yyss, yyssp);
while (yyssp != yyss)
{
YYPOPSTACK (1);
}
#ifndef yyoverflow
-@@ -1423,3 +1563,5 @@
+@@ -1423,3 +1556,5 @@
#endif
return yyresult;
}