mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-23 03:03:02 +00:00
%define: accept unquoted values.
* NEWS (2.5): Group all %define changes together, and document
this one. Remove quotes in IELR and canonical LR entry.
* doc/bison.texinfo: Remove quotes in most examples throughout.
(Decl Summary): Update %define documentation.
(Table of Symbols): Likewise.
* src/ielr.c (LrType): Update documentation.
* src/parse-gram.y (content.opt): Add production for ID.
* tests/calc.at: Likewise.
* tests/existing.at: Likewise.
* tests/input.at: Likewise.
* tests/local.at: Likewise.
* tests/push.at: Likewise.
* tests/reduce.at: Likewise.
* tests/torture.at: Likewise.
(cherry picked from commit cf499cff31)
Conflicts:
doc/bison.texinfo
src/parse-gram.c
src/parse-gram.h
tests/actions.at
tests/calc.at
This commit is contained in:
18
ChangeLog
18
ChangeLog
@@ -1,3 +1,21 @@
|
|||||||
|
2009-08-28 Joel E. Denny <jdenny@clemson.edu>
|
||||||
|
|
||||||
|
%define: accept unquoted values.
|
||||||
|
* NEWS (2.5): Group all %define changes together, and document
|
||||||
|
this one. Remove quotes in IELR and canonical LR entry.
|
||||||
|
* doc/bison.texinfo: Remove quotes in most examples throughout.
|
||||||
|
(Decl Summary): Update %define documentation.
|
||||||
|
(Table of Symbols): Likewise.
|
||||||
|
* src/ielr.c (LrType): Update documentation.
|
||||||
|
* src/parse-gram.y (content.opt): Add production for ID.
|
||||||
|
* tests/calc.at: Likewise.
|
||||||
|
* tests/existing.at: Likewise.
|
||||||
|
* tests/input.at: Likewise.
|
||||||
|
* tests/local.at: Likewise.
|
||||||
|
* tests/push.at: Likewise.
|
||||||
|
* tests/reduce.at: Likewise.
|
||||||
|
* tests/torture.at: Likewise.
|
||||||
|
|
||||||
2009-08-28 Joel E. Denny <jdenny@clemson.edu>
|
2009-08-28 Joel E. Denny <jdenny@clemson.edu>
|
||||||
|
|
||||||
%define lr.type: make values lowercase IDs.
|
%define lr.type: make values lowercase IDs.
|
||||||
|
|||||||
27
NEWS
27
NEWS
@@ -20,9 +20,9 @@ Bison News
|
|||||||
default. You can specify the type of parser tables in the grammar
|
default. You can specify the type of parser tables in the grammar
|
||||||
file with these directives:
|
file with these directives:
|
||||||
|
|
||||||
%define lr.type "lalr"
|
%define lr.type lalr
|
||||||
%define lr.type "ielr"
|
%define lr.type ielr
|
||||||
%define lr.type "canonical-lr"
|
%define lr.type canonical-lr
|
||||||
|
|
||||||
The default reduction optimization in the parser tables can also be
|
The default reduction optimization in the parser tables can also be
|
||||||
adjusted using `%define lr.default-reductions'. See the documentation
|
adjusted using `%define lr.default-reductions'. See the documentation
|
||||||
@@ -33,9 +33,11 @@ Bison News
|
|||||||
These features are experimental. More user feedback will help to
|
These features are experimental. More user feedback will help to
|
||||||
stabilize them.
|
stabilize them.
|
||||||
|
|
||||||
** Multiple %define's for any variable is now an error not a warning.
|
** %define improvements.
|
||||||
|
|
||||||
** %define can now be invoked via the command line.
|
*** Multiple invocations for any variable is now an error not a warning.
|
||||||
|
|
||||||
|
*** Can now be invoked via the command line.
|
||||||
|
|
||||||
Each of these command-line options
|
Each of these command-line options
|
||||||
|
|
||||||
@@ -54,7 +56,7 @@ Bison News
|
|||||||
quietly override %define, but -D and --define do not. For further
|
quietly override %define, but -D and --define do not. For further
|
||||||
details, see the section "Bison Options" in the Bison manual.
|
details, see the section "Bison Options" in the Bison manual.
|
||||||
|
|
||||||
** %define variables renamed.
|
*** Variables renamed.
|
||||||
|
|
||||||
The following %define variables
|
The following %define variables
|
||||||
|
|
||||||
@@ -69,7 +71,18 @@ Bison News
|
|||||||
The old names are now deprecated but will be maintained indefinitely
|
The old names are now deprecated but will be maintained indefinitely
|
||||||
for backward compatibility.
|
for backward compatibility.
|
||||||
|
|
||||||
** Symbols names
|
*** Values no longer need to be quoted in grammar file.
|
||||||
|
|
||||||
|
If a %define value is an identifier, it no longer needs to be placed
|
||||||
|
within quotations marks. For example,
|
||||||
|
|
||||||
|
%define api.push-pull "push"
|
||||||
|
|
||||||
|
can be rewritten as
|
||||||
|
|
||||||
|
%define api.push-pull push
|
||||||
|
|
||||||
|
** Symbol names.
|
||||||
|
|
||||||
Consistently with directives (such as %error-verbose) and variables
|
Consistently with directives (such as %error-verbose) and variables
|
||||||
(e.g. push-pull), symbol names may include dashes in any position,
|
(e.g. push-pull), symbol names may include dashes in any position,
|
||||||
|
|||||||
@@ -4580,7 +4580,7 @@ The following Bison declaration says that you want the parser to be a push
|
|||||||
parser (@pxref{Decl Summary,,%define api.push-pull}):
|
parser (@pxref{Decl Summary,,%define api.push-pull}):
|
||||||
|
|
||||||
@example
|
@example
|
||||||
%define api.push-pull "push"
|
%define api.push-pull push
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
In almost all cases, you want to ensure that your push parser is also
|
In almost all cases, you want to ensure that your push parser is also
|
||||||
@@ -4591,7 +4591,7 @@ what you are doing, your declarations should look like this:
|
|||||||
|
|
||||||
@example
|
@example
|
||||||
%define api.pure
|
%define api.pure
|
||||||
%define api.push-pull "push"
|
%define api.push-pull push
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
There is a major notable functional difference between the pure push parser
|
There is a major notable functional difference between the pure push parser
|
||||||
@@ -4640,14 +4640,14 @@ for use by the next invocation of the @code{yypush_parse} function.
|
|||||||
|
|
||||||
Bison also supports both the push parser interface along with the pull parser
|
Bison also supports both the push parser interface along with the pull parser
|
||||||
interface in the same generated parser. In order to get this functionality,
|
interface in the same generated parser. In order to get this functionality,
|
||||||
you should replace the @code{%define api.push-pull "push"} declaration with the
|
you should replace the @code{%define api.push-pull push} declaration with the
|
||||||
@code{%define api.push-pull "both"} declaration. Doing this will create all of
|
@code{%define api.push-pull both} declaration. Doing this will create all of
|
||||||
the symbols mentioned earlier along with the two extra symbols, @code{yyparse}
|
the symbols mentioned earlier along with the two extra symbols, @code{yyparse}
|
||||||
and @code{yypull_parse}. @code{yyparse} can be used exactly as it normally
|
and @code{yypull_parse}. @code{yyparse} can be used exactly as it normally
|
||||||
would be used. However, the user should note that it is implemented in the
|
would be used. However, the user should note that it is implemented in the
|
||||||
generated parser by calling @code{yypull_parse}.
|
generated parser by calling @code{yypull_parse}.
|
||||||
This makes the @code{yyparse} function that is generated with the
|
This makes the @code{yyparse} function that is generated with the
|
||||||
@code{%define api.push-pull "both"} declaration slower than the normal
|
@code{%define api.push-pull both} declaration slower than the normal
|
||||||
@code{yyparse} function. If the user
|
@code{yyparse} function. If the user
|
||||||
calls the @code{yypull_parse} function it will parse the rest of the input
|
calls the @code{yypull_parse} function it will parse the rest of the input
|
||||||
stream. It is possible to @code{yypush_parse} tokens to select a subgrammar
|
stream. It is possible to @code{yypush_parse} tokens to select a subgrammar
|
||||||
@@ -4664,8 +4664,8 @@ yypstate_delete (ps);
|
|||||||
@end example
|
@end example
|
||||||
|
|
||||||
Adding the @code{%define api.pure} declaration does exactly the same thing to
|
Adding the @code{%define api.pure} declaration does exactly the same thing to
|
||||||
the generated parser with @code{%define api.push-pull "both"} as it did for
|
the generated parser with @code{%define api.push-pull both} as it did for
|
||||||
@code{%define api.push-pull "push"}.
|
@code{%define api.push-pull push}.
|
||||||
|
|
||||||
@node Decl Summary
|
@node Decl Summary
|
||||||
@subsection Bison Declaration Summary
|
@subsection Bison Declaration Summary
|
||||||
@@ -4834,6 +4834,7 @@ already defined, so that the debugging facilities are compiled.
|
|||||||
@end deffn
|
@end deffn
|
||||||
|
|
||||||
@deffn {Directive} %define @var{variable}
|
@deffn {Directive} %define @var{variable}
|
||||||
|
@deffnx {Directive} %define @var{variable} @var{value}
|
||||||
@deffnx {Directive} %define @var{variable} "@var{value}"
|
@deffnx {Directive} %define @var{variable} "@var{value}"
|
||||||
Define a variable to adjust Bison's behavior.
|
Define a variable to adjust Bison's behavior.
|
||||||
The possible choices for @var{variable}, as well as their meanings, depend on
|
The possible choices for @var{variable}, as well as their meanings, depend on
|
||||||
@@ -4843,7 +4844,11 @@ Summary,,%language}, @pxref{Decl Summary,,%skeleton}).
|
|||||||
It is an error if a @var{variable} is defined by @code{%define} multiple
|
It is an error if a @var{variable} is defined by @code{%define} multiple
|
||||||
times, but see @ref{Bison Options,,-D @var{name}[=@var{value}]}.
|
times, but see @ref{Bison Options,,-D @var{name}[=@var{value}]}.
|
||||||
|
|
||||||
Omitting @code{"@var{value}"} is always equivalent to specifying it as
|
@var{value} must be placed in quotation marks if it contains any
|
||||||
|
character other than a letter, underscore, period, dash, or non-initial
|
||||||
|
digit.
|
||||||
|
|
||||||
|
Omitting @code{"@var{value}"} entirely is always equivalent to specifying
|
||||||
@code{""}.
|
@code{""}.
|
||||||
|
|
||||||
Some @var{variable}s may be used as Booleans.
|
Some @var{variable}s may be used as Booleans.
|
||||||
@@ -4851,12 +4856,12 @@ In this case, Bison will complain if the variable definition does not meet one
|
|||||||
of the following four conditions:
|
of the following four conditions:
|
||||||
|
|
||||||
@enumerate
|
@enumerate
|
||||||
@item @code{"@var{value}"} is @code{"true"}
|
@item @code{@var{value}} is @code{true}
|
||||||
|
|
||||||
@item @code{"@var{value}"} is omitted (or is @code{""}).
|
@item @code{@var{value}} is omitted (or @code{""} is specified).
|
||||||
This is equivalent to @code{"true"}.
|
This is equivalent to @code{true}.
|
||||||
|
|
||||||
@item @code{"@var{value}"} is @code{"false"}.
|
@item @code{@var{value}} is @code{false}.
|
||||||
|
|
||||||
@item @var{variable} is never defined.
|
@item @var{variable} is never defined.
|
||||||
In this case, Bison selects a default value, which may depend on the selected
|
In this case, Bison selects a default value, which may depend on the selected
|
||||||
@@ -4877,7 +4882,7 @@ Some of the accepted @var{variable}s are:
|
|||||||
|
|
||||||
@item Accepted Values: Boolean
|
@item Accepted Values: Boolean
|
||||||
|
|
||||||
@item Default Value: @code{"false"}
|
@item Default Value: @code{false}
|
||||||
@end itemize
|
@end itemize
|
||||||
|
|
||||||
@item api.push-pull
|
@item api.push-pull
|
||||||
@@ -4891,9 +4896,9 @@ Some of the accepted @var{variable}s are:
|
|||||||
(The current push parsing interface is experimental and may evolve.
|
(The current push parsing interface is experimental and may evolve.
|
||||||
More user feedback will help to stabilize it.)
|
More user feedback will help to stabilize it.)
|
||||||
|
|
||||||
@item Accepted Values: @code{"pull"}, @code{"push"}, @code{"both"}
|
@item Accepted Values: @code{pull}, @code{push}, @code{both}
|
||||||
|
|
||||||
@item Default Value: @code{"pull"}
|
@item Default Value: @code{pull}
|
||||||
@end itemize
|
@end itemize
|
||||||
|
|
||||||
@item lr.default-reductions
|
@item lr.default-reductions
|
||||||
@@ -4920,7 +4925,7 @@ More user feedback will help to stabilize it.)
|
|||||||
|
|
||||||
@item Accepted Values:
|
@item Accepted Values:
|
||||||
@itemize
|
@itemize
|
||||||
@item @code{"all"}.
|
@item @code{all}.
|
||||||
For @acronym{LALR} and @acronym{IELR} parsers (@pxref{Decl
|
For @acronym{LALR} and @acronym{IELR} parsers (@pxref{Decl
|
||||||
Summary,,lr.type}) by default, all states are permitted to contain
|
Summary,,lr.type}) by default, all states are permitted to contain
|
||||||
default reductions.
|
default reductions.
|
||||||
@@ -4932,7 +4937,7 @@ That is, unlike in a canonical @acronym{LR} state, the lookahead sets of
|
|||||||
reductions in an @acronym{LALR} or @acronym{IELR} state can contain
|
reductions in an @acronym{LALR} or @acronym{IELR} state can contain
|
||||||
tokens that are syntactically incorrect for some left contexts.
|
tokens that are syntactically incorrect for some left contexts.
|
||||||
|
|
||||||
@item @code{"consistent"}.
|
@item @code{consistent}.
|
||||||
@cindex consistent states
|
@cindex consistent states
|
||||||
A consistent state is a state that has only one possible action.
|
A consistent state is a state that has only one possible action.
|
||||||
If that action is a reduction, then the parser does not need to request
|
If that action is a reduction, then the parser does not need to request
|
||||||
@@ -4944,7 +4949,7 @@ states, then a canonical @acronym{LR} parser reports a syntax error as
|
|||||||
soon as it @emph{needs} the syntactically unacceptable token from the
|
soon as it @emph{needs} the syntactically unacceptable token from the
|
||||||
scanner.
|
scanner.
|
||||||
|
|
||||||
@item @code{"accepting"}.
|
@item @code{accepting}.
|
||||||
@cindex accepting state
|
@cindex accepting state
|
||||||
By default, the only default reduction permitted in a canonical
|
By default, the only default reduction permitted in a canonical
|
||||||
@acronym{LR} parser is the accept action in the accepting state, which
|
@acronym{LR} parser is the accept action in the accepting state, which
|
||||||
@@ -4956,8 +4961,8 @@ without performing any extra reductions.
|
|||||||
|
|
||||||
@item Default Value:
|
@item Default Value:
|
||||||
@itemize
|
@itemize
|
||||||
@item @code{"accepting"} if @code{lr.type} is @code{"canonical-lr"}.
|
@item @code{accepting} if @code{lr.type} is @code{canonical-lr}.
|
||||||
@item @code{"all"} otherwise.
|
@item @code{all} otherwise.
|
||||||
@end itemize
|
@end itemize
|
||||||
@end itemize
|
@end itemize
|
||||||
|
|
||||||
@@ -4978,7 +4983,7 @@ are useless in the generated parser.
|
|||||||
|
|
||||||
@item Accepted Values: Boolean
|
@item Accepted Values: Boolean
|
||||||
|
|
||||||
@item Default Value: @code{"false"}
|
@item Default Value: @code{false}
|
||||||
|
|
||||||
@item Caveats:
|
@item Caveats:
|
||||||
|
|
||||||
@@ -5020,7 +5025,7 @@ More user feedback will help to stabilize it.)
|
|||||||
|
|
||||||
@item Accepted Values:
|
@item Accepted Values:
|
||||||
@itemize
|
@itemize
|
||||||
@item @code{"lalr"}.
|
@item @code{lalr}.
|
||||||
While Bison generates @acronym{LALR} parser tables by default for
|
While Bison generates @acronym{LALR} parser tables by default for
|
||||||
historical reasons, @acronym{IELR} or canonical @acronym{LR} is almost
|
historical reasons, @acronym{IELR} or canonical @acronym{LR} is almost
|
||||||
always preferable for deterministic parsers.
|
always preferable for deterministic parsers.
|
||||||
@@ -5049,7 +5054,7 @@ investigate such problems while ignoring the more subtle differences
|
|||||||
from @acronym{IELR} and canonical @acronym{LR}.
|
from @acronym{IELR} and canonical @acronym{LR}.
|
||||||
@end itemize
|
@end itemize
|
||||||
|
|
||||||
@item @code{"ielr"}.
|
@item @code{ielr}.
|
||||||
@acronym{IELR} is a minimal @acronym{LR} algorithm.
|
@acronym{IELR} is a minimal @acronym{LR} algorithm.
|
||||||
That is, given any grammar (@acronym{LR} or non-@acronym{LR}),
|
That is, given any grammar (@acronym{LR} or non-@acronym{LR}),
|
||||||
@acronym{IELR} and canonical @acronym{LR} always accept exactly the same
|
@acronym{IELR} and canonical @acronym{LR} always accept exactly the same
|
||||||
@@ -5063,7 +5068,7 @@ grammars, the number of conflicts for @acronym{IELR} is often an order
|
|||||||
of magnitude less as well.
|
of magnitude less as well.
|
||||||
This can significantly reduce the complexity of developing of a grammar.
|
This can significantly reduce the complexity of developing of a grammar.
|
||||||
|
|
||||||
@item @code{"canonical-lr"}.
|
@item @code{canonical-lr}.
|
||||||
@cindex delayed syntax errors
|
@cindex delayed syntax errors
|
||||||
@cindex syntax errors delayed
|
@cindex syntax errors delayed
|
||||||
The only advantage of canonical @acronym{LR} over @acronym{IELR} is
|
The only advantage of canonical @acronym{LR} over @acronym{IELR} is
|
||||||
@@ -5079,7 +5084,7 @@ Even when canonical @acronym{LR} behavior is ultimately desired,
|
|||||||
facilitate the development of a grammar.
|
facilitate the development of a grammar.
|
||||||
@end itemize
|
@end itemize
|
||||||
|
|
||||||
@item Default Value: @code{"lalr"}
|
@item Default Value: @code{lalr}
|
||||||
@end itemize
|
@end itemize
|
||||||
|
|
||||||
@item namespace
|
@item namespace
|
||||||
@@ -5460,8 +5465,8 @@ exp: @dots{} @{ @dots{}; *randomness += 1; @dots{} @}
|
|||||||
More user feedback will help to stabilize it.)
|
More user feedback will help to stabilize it.)
|
||||||
|
|
||||||
You call the function @code{yypush_parse} to parse a single token. This
|
You call the function @code{yypush_parse} to parse a single token. This
|
||||||
function is available if either the @code{%define api.push-pull "push"} or
|
function is available if either the @code{%define api.push-pull push} or
|
||||||
@code{%define api.push-pull "both"} declaration is used.
|
@code{%define api.push-pull both} declaration is used.
|
||||||
@xref{Push Decl, ,A Push Parser}.
|
@xref{Push Decl, ,A Push Parser}.
|
||||||
|
|
||||||
@deftypefun int yypush_parse (yypstate *yyps)
|
@deftypefun int yypush_parse (yypstate *yyps)
|
||||||
@@ -5478,7 +5483,7 @@ is required to finish parsing the grammar.
|
|||||||
More user feedback will help to stabilize it.)
|
More user feedback will help to stabilize it.)
|
||||||
|
|
||||||
You call the function @code{yypull_parse} to parse the rest of the input
|
You call the function @code{yypull_parse} to parse the rest of the input
|
||||||
stream. This function is available if the @code{%define api.push-pull "both"}
|
stream. This function is available if the @code{%define api.push-pull both}
|
||||||
declaration is used.
|
declaration is used.
|
||||||
@xref{Push Decl, ,A Push Parser}.
|
@xref{Push Decl, ,A Push Parser}.
|
||||||
|
|
||||||
@@ -5494,8 +5499,8 @@ The value returned by @code{yypull_parse} is the same as for @code{yyparse}.
|
|||||||
More user feedback will help to stabilize it.)
|
More user feedback will help to stabilize it.)
|
||||||
|
|
||||||
You call the function @code{yypstate_new} to create a new parser instance.
|
You call the function @code{yypstate_new} to create a new parser instance.
|
||||||
This function is available if either the @code{%define api.push-pull "push"} or
|
This function is available if either the @code{%define api.push-pull push} or
|
||||||
@code{%define api.push-pull "both"} declaration is used.
|
@code{%define api.push-pull both} declaration is used.
|
||||||
@xref{Push Decl, ,A Push Parser}.
|
@xref{Push Decl, ,A Push Parser}.
|
||||||
|
|
||||||
@deftypefun yypstate *yypstate_new (void)
|
@deftypefun yypstate *yypstate_new (void)
|
||||||
@@ -5513,8 +5518,8 @@ allocated.
|
|||||||
More user feedback will help to stabilize it.)
|
More user feedback will help to stabilize it.)
|
||||||
|
|
||||||
You call the function @code{yypstate_delete} to delete a parser instance.
|
You call the function @code{yypstate_delete} to delete a parser instance.
|
||||||
function is available if either the @code{%define api.push-pull "push"} or
|
function is available if either the @code{%define api.push-pull push} or
|
||||||
@code{%define api.push-pull "both"} declaration is used.
|
@code{%define api.push-pull both} declaration is used.
|
||||||
@xref{Push Decl, ,A Push Parser}.
|
@xref{Push Decl, ,A Push Parser}.
|
||||||
|
|
||||||
@deftypefun void yypstate_delete (yypstate *yyps)
|
@deftypefun void yypstate_delete (yypstate *yyps)
|
||||||
@@ -9022,7 +9027,7 @@ in a file; Bison itself defines a class representing a @dfn{location},
|
|||||||
a range composed of a pair of positions (possibly spanning several
|
a range composed of a pair of positions (possibly spanning several
|
||||||
files). The location class is an inner class of the parser; the name
|
files). The location class is an inner class of the parser; the name
|
||||||
is @code{Location} by default, and may also be renamed using
|
is @code{Location} by default, and may also be renamed using
|
||||||
@code{%define location_type "@var{class-name}}.
|
@code{%define location_type "@var{class-name}"}.
|
||||||
|
|
||||||
The location class treats the position as a completely opaque value.
|
The location class treats the position as a completely opaque value.
|
||||||
By default, the class name is @code{Position}, but this can be changed
|
By default, the class name is @code{Position}, but this can be changed
|
||||||
@@ -9965,6 +9970,7 @@ Precedence}.
|
|||||||
|
|
||||||
@deffn {Directive} %define @var{define-variable}
|
@deffn {Directive} %define @var{define-variable}
|
||||||
@deffnx {Directive} %define @var{define-variable} @var{value}
|
@deffnx {Directive} %define @var{define-variable} @var{value}
|
||||||
|
@deffnx {Directive} %define @var{define-variable} "@var{value}"
|
||||||
Define a variable to adjust Bison's behavior.
|
Define a variable to adjust Bison's behavior.
|
||||||
@xref{Decl Summary,,%define}.
|
@xref{Decl Summary,,%define}.
|
||||||
@end deffn
|
@end deffn
|
||||||
|
|||||||
@@ -35,7 +35,7 @@
|
|||||||
#include "state.h"
|
#include "state.h"
|
||||||
#include "symtab.h"
|
#include "symtab.h"
|
||||||
|
|
||||||
/** Records the value of the \%define variable "lr.type". */
|
/** Records the value of the \%define variable lr.type. */
|
||||||
typedef enum { LR_TYPE__LALR, LR_TYPE__IELR, LR_TYPE__CANONICAL_LR } LrType;
|
typedef enum { LR_TYPE__LALR, LR_TYPE__IELR, LR_TYPE__CANONICAL_LR } LrType;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
223
src/parse-gram.c
223
src/parse-gram.c
@@ -560,16 +560,16 @@ union yyalloc
|
|||||||
/* YYFINAL -- State number of the termination state. */
|
/* YYFINAL -- State number of the termination state. */
|
||||||
#define YYFINAL 3
|
#define YYFINAL 3
|
||||||
/* YYLAST -- Last index in YYTABLE. */
|
/* YYLAST -- Last index in YYTABLE. */
|
||||||
#define YYLAST 159
|
#define YYLAST 160
|
||||||
|
|
||||||
/* YYNTOKENS -- Number of terminals. */
|
/* YYNTOKENS -- Number of terminals. */
|
||||||
#define YYNTOKENS 58
|
#define YYNTOKENS 58
|
||||||
/* YYNNTS -- Number of nonterminals. */
|
/* YYNNTS -- Number of nonterminals. */
|
||||||
#define YYNNTS 34
|
#define YYNNTS 34
|
||||||
/* YYNRULES -- Number of rules. */
|
/* YYNRULES -- Number of rules. */
|
||||||
#define YYNRULES 107
|
#define YYNRULES 108
|
||||||
/* YYNRULES -- Number of states. */
|
/* YYNRULES -- Number of states. */
|
||||||
#define YYNSTATES 147
|
#define YYNSTATES 148
|
||||||
|
|
||||||
/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
|
/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
|
||||||
#define YYUNDEFTOK 2
|
#define YYUNDEFTOK 2
|
||||||
@@ -630,7 +630,7 @@ static const yytype_uint16 yyprhs[] =
|
|||||||
180, 182, 184, 187, 190, 194, 196, 199, 201, 204,
|
180, 182, 184, 187, 190, 194, 196, 199, 201, 204,
|
||||||
206, 209, 212, 213, 218, 220, 224, 227, 228, 232,
|
206, 209, 212, 213, 218, 220, 224, 227, 228, 232,
|
||||||
236, 240, 244, 248, 249, 251, 253, 255, 256, 258,
|
236, 240, 244, 248, 249, 251, 253, 255, 256, 258,
|
||||||
260, 262, 264, 266, 268, 270, 272, 273
|
260, 262, 264, 266, 268, 270, 272, 274, 275
|
||||||
};
|
};
|
||||||
|
|
||||||
/* YYRHS -- A `-1'-separated list of the rules' RHS. */
|
/* YYRHS -- A `-1'-separated list of the rules' RHS. */
|
||||||
@@ -661,9 +661,9 @@ static const yytype_int8 yyrhs[] =
|
|||||||
81, 50, 82, -1, 81, 52, -1, -1, 82, 89,
|
81, 50, 82, -1, 81, 52, -1, -1, 82, 89,
|
||||||
83, -1, 82, 43, 83, -1, 82, 13, 89, -1,
|
83, -1, 82, 43, 83, -1, 82, 13, 89, -1,
|
||||||
82, 14, 4, -1, 82, 15, 53, -1, -1, 56,
|
82, 14, 4, -1, 82, 15, 53, -1, -1, 56,
|
||||||
-1, 47, -1, 3, -1, -1, 3, -1, 43, -1,
|
-1, 47, -1, 3, -1, -1, 47, -1, 3, -1,
|
||||||
47, -1, 44, -1, 48, -1, 87, -1, 90, -1,
|
43, -1, 47, -1, 44, -1, 48, -1, 87, -1,
|
||||||
3, -1, -1, 49, 45, -1
|
90, -1, 3, -1, -1, 49, 45, -1
|
||||||
};
|
};
|
||||||
|
|
||||||
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
|
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
|
||||||
@@ -678,8 +678,8 @@ static const yytype_uint16 yyrline[] =
|
|||||||
442, 443, 448, 450, 455, 456, 460, 461, 462, 463,
|
442, 443, 448, 450, 455, 456, 460, 461, 462, 463,
|
||||||
468, 473, 478, 484, 490, 501, 502, 511, 512, 518,
|
468, 473, 478, 484, 490, 501, 502, 511, 512, 518,
|
||||||
519, 520, 527, 527, 532, 533, 534, 539, 541, 543,
|
519, 520, 527, 527, 532, 533, 534, 539, 541, 543,
|
||||||
545, 547, 549, 554, 556, 567, 568, 573, 574, 583,
|
545, 547, 549, 554, 556, 567, 568, 573, 574, 575,
|
||||||
603, 605, 614, 619, 620, 625, 632, 634
|
584, 604, 606, 615, 620, 621, 626, 633, 635
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -739,8 +739,8 @@ static const yytype_uint8 yyr1[] =
|
|||||||
71, 71, 72, 72, 73, 73, 74, 74, 74, 74,
|
71, 71, 72, 72, 73, 73, 74, 74, 74, 74,
|
||||||
75, 75, 75, 75, 75, 76, 76, 77, 77, 78,
|
75, 75, 75, 75, 75, 76, 76, 77, 77, 78,
|
||||||
78, 78, 80, 79, 81, 81, 81, 82, 82, 82,
|
78, 78, 80, 79, 81, 81, 81, 82, 82, 82,
|
||||||
82, 82, 82, 83, 83, 84, 84, 85, 85, 86,
|
82, 82, 82, 83, 83, 84, 84, 85, 85, 85,
|
||||||
87, 87, 88, 89, 89, 90, 91, 91
|
86, 87, 87, 88, 89, 89, 90, 91, 91
|
||||||
};
|
};
|
||||||
|
|
||||||
/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
|
/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
|
||||||
@@ -756,7 +756,7 @@ static const yytype_uint8 yyr2[] =
|
|||||||
1, 1, 2, 2, 3, 1, 2, 1, 2, 1,
|
1, 1, 2, 2, 3, 1, 2, 1, 2, 1,
|
||||||
2, 2, 0, 4, 1, 3, 2, 0, 3, 3,
|
2, 2, 0, 4, 1, 3, 2, 0, 3, 3,
|
||||||
3, 3, 3, 0, 1, 1, 1, 0, 1, 1,
|
3, 3, 3, 0, 1, 1, 1, 0, 1, 1,
|
||||||
1, 1, 1, 1, 1, 1, 0, 2
|
1, 1, 1, 1, 1, 1, 1, 0, 2
|
||||||
};
|
};
|
||||||
|
|
||||||
/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM.
|
/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM.
|
||||||
@@ -769,25 +769,25 @@ static const yytype_uint8 yydefact[] =
|
|||||||
0, 16, 0, 0, 0, 20, 0, 41, 23, 24,
|
0, 16, 0, 0, 0, 20, 0, 41, 23, 24,
|
||||||
0, 0, 28, 0, 0, 0, 31, 32, 33, 0,
|
0, 0, 28, 0, 0, 0, 31, 32, 33, 0,
|
||||||
6, 34, 44, 4, 5, 36, 35, 56, 0, 0,
|
6, 34, 44, 4, 5, 36, 35, 56, 0, 0,
|
||||||
0, 0, 0, 99, 0, 42, 96, 95, 97, 10,
|
0, 0, 0, 100, 0, 42, 96, 95, 97, 10,
|
||||||
12, 13, 14, 0, 17, 18, 19, 21, 0, 25,
|
12, 13, 14, 0, 17, 18, 19, 21, 0, 25,
|
||||||
0, 27, 29, 30, 105, 101, 100, 103, 37, 104,
|
0, 27, 29, 30, 106, 102, 101, 104, 37, 105,
|
||||||
0, 102, 0, 0, 77, 79, 93, 45, 0, 57,
|
0, 103, 0, 0, 77, 79, 93, 45, 0, 57,
|
||||||
0, 70, 75, 50, 71, 48, 51, 62, 67, 68,
|
0, 70, 75, 50, 71, 48, 51, 62, 67, 68,
|
||||||
69, 38, 64, 66, 39, 43, 98, 8, 15, 22,
|
69, 38, 64, 66, 39, 43, 99, 98, 8, 15,
|
||||||
26, 81, 80, 0, 78, 2, 94, 82, 46, 52,
|
22, 26, 81, 80, 0, 78, 2, 94, 82, 46,
|
||||||
58, 60, 76, 72, 73, 63, 65, 107, 87, 59,
|
52, 58, 60, 76, 72, 73, 63, 65, 108, 87,
|
||||||
61, 74, 83, 84, 87, 86, 0, 0, 0, 93,
|
59, 61, 74, 83, 84, 87, 86, 0, 0, 0,
|
||||||
93, 85, 90, 91, 92, 89, 88
|
93, 93, 85, 90, 91, 92, 89, 88
|
||||||
};
|
};
|
||||||
|
|
||||||
/* YYDEFGOTO[NTERM-NUM]. */
|
/* YYDEFGOTO[NTERM-NUM]. */
|
||||||
static const yytype_int16 yydefgoto[] =
|
static const yytype_int16 yydefgoto[] =
|
||||||
{
|
{
|
||||||
-1, 1, 2, 43, 82, 88, 45, 49, 48, 46,
|
-1, 1, 2, 43, 82, 88, 45, 49, 48, 46,
|
||||||
47, 90, 119, 120, 96, 101, 102, 92, 93, 83,
|
47, 90, 120, 121, 96, 101, 102, 92, 93, 83,
|
||||||
84, 85, 128, 132, 133, 117, 58, 107, 55, 77,
|
84, 85, 129, 133, 134, 118, 58, 108, 55, 77,
|
||||||
86, 103, 79, 115
|
86, 103, 79, 116
|
||||||
};
|
};
|
||||||
|
|
||||||
/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
|
/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
|
||||||
@@ -795,54 +795,55 @@ static const yytype_int16 yydefgoto[] =
|
|||||||
#define YYPACT_NINF -60
|
#define YYPACT_NINF -60
|
||||||
static const yytype_int16 yypact[] =
|
static const yytype_int16 yypact[] =
|
||||||
{
|
{
|
||||||
-60, 4, 102, -60, -60, -60, 7, 10, 22, -60,
|
-60, 4, 103, -60, -60, -60, -2, -1, 10, -60,
|
||||||
-60, -60, -6, -60, -60, 27, 40, -60, 65, 72,
|
-60, -60, 17, -60, -60, 27, 66, -60, 72, 79,
|
||||||
2, -60, 35, 79, 47, -60, 11, -60, -60, -60,
|
2, -60, 47, 88, 49, -60, 11, -60, -60, -60,
|
||||||
25, 48, -60, 89, 90, 0, -60, -60, -60, 15,
|
25, 50, -60, 91, 92, 0, -60, -60, -60, 15,
|
||||||
-60, -60, 52, -60, -60, -60, -60, 41, -2, -2,
|
-60, -60, 51, -60, -60, -60, -60, 48, -8, -8,
|
||||||
0, 26, 26, -60, 59, -60, -60, -60, 92, -60,
|
0, 26, 26, -60, 60, -60, -60, -60, 31, -60,
|
||||||
-60, -60, -60, 100, -60, -60, -60, -60, 101, -60,
|
-60, -60, -60, 101, -60, -60, -60, -60, 102, -60,
|
||||||
112, -60, -60, -60, -60, -60, -60, -60, -60, -60,
|
113, -60, -60, -60, -60, -60, -60, -60, -60, -60,
|
||||||
64, -60, 93, 1, -60, -60, 49, -60, 59, -60,
|
54, -60, 65, 1, -60, -60, 62, -60, 60, -60,
|
||||||
0, -60, -60, -2, 83, -2, 0, -60, -60, -60,
|
0, -60, -60, -8, 83, -8, 0, -60, -60, -60,
|
||||||
-60, 26, -60, -60, 26, -60, -60, -60, -60, -60,
|
-60, 26, -60, -60, 26, -60, -60, -60, -60, -60,
|
||||||
-60, -60, -60, 103, -60, -60, -60, -60, -60, 0,
|
-60, -60, -60, -60, 104, -60, -60, -60, -60, -60,
|
||||||
-60, 113, -60, 143, -60, -60, -60, -60, -60, -60,
|
0, -60, 142, -60, 144, -60, -60, -60, -60, -60,
|
||||||
-60, -60, -16, 53, -60, -60, 0, 145, 94, 49,
|
-60, -60, -60, -9, 53, -60, -60, 0, 146, 95,
|
||||||
49, 53, -60, -60, -60, -60, -60
|
62, 62, 53, -60, -60, -60, -60, -60
|
||||||
};
|
};
|
||||||
|
|
||||||
/* YYPGOTO[NTERM-NUM]. */
|
/* YYPGOTO[NTERM-NUM]. */
|
||||||
static const yytype_int16 yypgoto[] =
|
static const yytype_int16 yypgoto[] =
|
||||||
{
|
{
|
||||||
-60, -60, -60, -60, 148, -60, -60, -60, -60, -60,
|
-60, -60, -60, -60, 149, -60, -60, -60, -60, -60,
|
||||||
-60, -60, -60, 33, -60, 104, -42, -18, 106, -60,
|
-60, -60, -60, 33, -60, 105, -42, -18, 107, -60,
|
||||||
74, -60, -60, -60, 24, -51, -60, -60, -36, -10,
|
75, -60, -60, -60, 24, -52, -60, -60, -36, -11,
|
||||||
-60, -35, -59, -60
|
-60, -35, -59, -60
|
||||||
};
|
};
|
||||||
|
|
||||||
/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
|
/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
|
||||||
positive, shift that token. If negative, reduce the rule which
|
positive, shift that token. If negative, reduce the rule which
|
||||||
number is the opposite. If YYTABLE_NINF, syntax error. */
|
number is the opposite. If YYTABLE_NINF, syntax error. */
|
||||||
#define YYTABLE_NINF -107
|
#define YYTABLE_NINF -108
|
||||||
static const yytype_int16 yytable[] =
|
static const yytype_int16 yytable[] =
|
||||||
{
|
{
|
||||||
78, -106, 80, 74, 3, 62, 4, 5, 6, 7,
|
78, -107, 80, 74, 3, 62, 4, 5, 6, 7,
|
||||||
8, 9, 10, 11, 67, 97, 80, 12, 105, 14,
|
8, 9, 10, 11, 67, 97, 80, 12, 105, 14,
|
||||||
4, 5, 6, 7, 8, 9, 10, 11, 69, 74,
|
4, 5, 6, 7, 8, 9, 10, 11, 69, 74,
|
||||||
56, 12, 27, 14, 134, 124, 135, 53, 94, 94,
|
56, 12, 27, 14, 106, 125, 75, 94, 94, 76,
|
||||||
35, 54, 75, 59, 75, 76, 27, 76, 63, 81,
|
35, 135, 51, 136, 75, 91, 27, 76, 63, 81,
|
||||||
113, 91, 118, 51, 35, 121, 74, 68, 42, 126,
|
114, 50, 119, 52, 35, 122, 74, 68, 42, 127,
|
||||||
50, 125, 126, 81, 131, 52, 136, 137, 138, 60,
|
53, 126, 127, 81, 54, 132, 137, 138, 139, 59,
|
||||||
75, 70, 42, 76, 57, 122, 61, 122, 64, 98,
|
75, 70, 42, 76, 57, 123, 60, 123, 107, 98,
|
||||||
99, 100, 65, 94, 121, 94, 74, 123, 145, 146,
|
99, 100, 94, 61, 94, 122, 74, 124, 146, 147,
|
||||||
66, 71, 72, 73, 89, 106, 139, 75, 140, 87,
|
64, 65, 66, 71, 72, 73, 140, 75, 87, 141,
|
||||||
76, 142, 53, 108, 109, 116, 140, 4, 5, 6,
|
76, 89, 143, 53, 109, 110, 112, 141, 4, 5,
|
||||||
7, 8, 9, 10, 11, 110, 111, 130, 12, 13,
|
6, 7, 8, 9, 10, 11, 111, 113, 117, 12,
|
||||||
14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
|
13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
|
||||||
24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
|
23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
|
||||||
34, 35, 36, 37, 38, 112, 74, 144, 127, 143,
|
33, 34, 35, 36, 37, 38, 131, 74, 145, 128,
|
||||||
44, 39, 129, 40, 41, 95, 104, 114, 141, 42
|
144, 44, 39, 130, 40, 41, 95, 104, 115, 142,
|
||||||
|
42
|
||||||
};
|
};
|
||||||
|
|
||||||
#define yypact_value_is_default(yystate) \
|
#define yypact_value_is_default(yystate) \
|
||||||
@@ -856,19 +857,20 @@ static const yytype_uint8 yycheck[] =
|
|||||||
35, 0, 1, 3, 0, 3, 5, 6, 7, 8,
|
35, 0, 1, 3, 0, 3, 5, 6, 7, 8,
|
||||||
9, 10, 11, 12, 3, 50, 1, 16, 54, 18,
|
9, 10, 11, 12, 3, 50, 1, 16, 54, 18,
|
||||||
5, 6, 7, 8, 9, 10, 11, 12, 3, 3,
|
5, 6, 7, 8, 9, 10, 11, 12, 3, 3,
|
||||||
3, 16, 31, 18, 50, 94, 52, 43, 48, 49,
|
3, 16, 31, 18, 3, 94, 44, 48, 49, 47,
|
||||||
39, 47, 44, 3, 44, 47, 31, 47, 46, 48,
|
39, 50, 43, 52, 44, 53, 31, 47, 46, 48,
|
||||||
49, 53, 88, 43, 39, 90, 3, 46, 57, 101,
|
49, 53, 88, 43, 39, 90, 3, 46, 57, 101,
|
||||||
53, 96, 104, 48, 123, 43, 13, 14, 15, 4,
|
43, 96, 104, 48, 47, 124, 13, 14, 15, 3,
|
||||||
44, 46, 57, 47, 47, 93, 4, 95, 43, 53,
|
44, 46, 57, 47, 47, 93, 4, 95, 47, 53,
|
||||||
54, 55, 3, 93, 119, 95, 3, 4, 139, 140,
|
54, 55, 93, 4, 95, 120, 3, 4, 140, 141,
|
||||||
43, 43, 3, 3, 53, 3, 43, 44, 133, 47,
|
43, 3, 43, 43, 3, 3, 43, 44, 47, 134,
|
||||||
47, 136, 43, 3, 3, 56, 141, 5, 6, 7,
|
47, 53, 137, 43, 3, 3, 52, 142, 5, 6,
|
||||||
8, 9, 10, 11, 12, 3, 52, 4, 16, 17,
|
7, 8, 9, 10, 11, 12, 3, 52, 56, 16,
|
||||||
18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
|
17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
|
||||||
28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
|
27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
|
||||||
38, 39, 40, 41, 42, 52, 3, 53, 45, 4,
|
37, 38, 39, 40, 41, 42, 4, 3, 53, 45,
|
||||||
2, 49, 119, 51, 52, 49, 52, 83, 134, 57
|
4, 2, 49, 120, 51, 52, 49, 52, 83, 135,
|
||||||
|
57
|
||||||
};
|
};
|
||||||
|
|
||||||
/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
|
/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
|
||||||
@@ -885,11 +887,11 @@ static const yytype_uint8 yystos[] =
|
|||||||
46, 43, 3, 3, 3, 44, 47, 87, 89, 90,
|
46, 43, 3, 3, 3, 44, 47, 87, 89, 90,
|
||||||
1, 48, 62, 77, 78, 79, 88, 47, 63, 53,
|
1, 48, 62, 77, 78, 79, 88, 47, 63, 53,
|
||||||
69, 53, 75, 76, 87, 76, 72, 89, 53, 54,
|
69, 53, 75, 76, 87, 76, 72, 89, 53, 54,
|
||||||
55, 73, 74, 89, 73, 86, 3, 85, 3, 3,
|
55, 73, 74, 89, 73, 86, 3, 47, 85, 3,
|
||||||
3, 52, 52, 49, 78, 91, 56, 83, 86, 70,
|
3, 3, 52, 52, 49, 78, 91, 56, 83, 86,
|
||||||
71, 89, 75, 4, 90, 89, 74, 45, 80, 71,
|
70, 71, 89, 75, 4, 90, 89, 74, 45, 80,
|
||||||
4, 90, 81, 82, 50, 52, 13, 14, 15, 43,
|
71, 4, 90, 81, 82, 50, 52, 13, 14, 15,
|
||||||
89, 82, 89, 4, 53, 83, 83
|
43, 89, 82, 89, 4, 53, 83, 83
|
||||||
};
|
};
|
||||||
|
|
||||||
#define yyerrok (yyerrstatus = 0)
|
#define yyerrok (yyerrstatus = 0)
|
||||||
@@ -1044,7 +1046,7 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp)
|
|||||||
{ fputs (quotearg_style (c_quoting_style, (yyvaluep->chars)), stderr); };
|
{ fputs (quotearg_style (c_quoting_style, (yyvaluep->chars)), stderr); };
|
||||||
|
|
||||||
/* Line 721 of yacc.c */
|
/* Line 721 of yacc.c */
|
||||||
#line 1048 "parse-gram.c"
|
#line 1050 "parse-gram.c"
|
||||||
break;
|
break;
|
||||||
case 4: /* "\"integer\"" */
|
case 4: /* "\"integer\"" */
|
||||||
|
|
||||||
@@ -1053,7 +1055,7 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp)
|
|||||||
{ fprintf (stderr, "%d", (yyvaluep->integer)); };
|
{ fprintf (stderr, "%d", (yyvaluep->integer)); };
|
||||||
|
|
||||||
/* Line 721 of yacc.c */
|
/* Line 721 of yacc.c */
|
||||||
#line 1057 "parse-gram.c"
|
#line 1059 "parse-gram.c"
|
||||||
break;
|
break;
|
||||||
case 43: /* "\"{...}\"" */
|
case 43: /* "\"{...}\"" */
|
||||||
|
|
||||||
@@ -1062,7 +1064,7 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp)
|
|||||||
{ fprintf (stderr, "{\n%s\n}", (yyvaluep->code)); };
|
{ fprintf (stderr, "{\n%s\n}", (yyvaluep->code)); };
|
||||||
|
|
||||||
/* Line 721 of yacc.c */
|
/* Line 721 of yacc.c */
|
||||||
#line 1066 "parse-gram.c"
|
#line 1068 "parse-gram.c"
|
||||||
break;
|
break;
|
||||||
case 44: /* "\"char\"" */
|
case 44: /* "\"char\"" */
|
||||||
|
|
||||||
@@ -1071,7 +1073,7 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp)
|
|||||||
{ fputs (char_name ((yyvaluep->character)), stderr); };
|
{ fputs (char_name ((yyvaluep->character)), stderr); };
|
||||||
|
|
||||||
/* Line 721 of yacc.c */
|
/* Line 721 of yacc.c */
|
||||||
#line 1075 "parse-gram.c"
|
#line 1077 "parse-gram.c"
|
||||||
break;
|
break;
|
||||||
case 45: /* "\"epilogue\"" */
|
case 45: /* "\"epilogue\"" */
|
||||||
|
|
||||||
@@ -1080,7 +1082,7 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp)
|
|||||||
{ fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
|
{ fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
|
||||||
|
|
||||||
/* Line 721 of yacc.c */
|
/* Line 721 of yacc.c */
|
||||||
#line 1084 "parse-gram.c"
|
#line 1086 "parse-gram.c"
|
||||||
break;
|
break;
|
||||||
case 47: /* "\"identifier\"" */
|
case 47: /* "\"identifier\"" */
|
||||||
|
|
||||||
@@ -1089,7 +1091,7 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp)
|
|||||||
{ fputs ((yyvaluep->uniqstr), stderr); };
|
{ fputs ((yyvaluep->uniqstr), stderr); };
|
||||||
|
|
||||||
/* Line 721 of yacc.c */
|
/* Line 721 of yacc.c */
|
||||||
#line 1093 "parse-gram.c"
|
#line 1095 "parse-gram.c"
|
||||||
break;
|
break;
|
||||||
case 48: /* "\"identifier:\"" */
|
case 48: /* "\"identifier:\"" */
|
||||||
|
|
||||||
@@ -1098,7 +1100,7 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp)
|
|||||||
{ fprintf (stderr, "%s:", (yyvaluep->uniqstr)); };
|
{ fprintf (stderr, "%s:", (yyvaluep->uniqstr)); };
|
||||||
|
|
||||||
/* Line 721 of yacc.c */
|
/* Line 721 of yacc.c */
|
||||||
#line 1102 "parse-gram.c"
|
#line 1104 "parse-gram.c"
|
||||||
break;
|
break;
|
||||||
case 51: /* "\"%{...%}\"" */
|
case 51: /* "\"%{...%}\"" */
|
||||||
|
|
||||||
@@ -1107,7 +1109,7 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp)
|
|||||||
{ fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
|
{ fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
|
||||||
|
|
||||||
/* Line 721 of yacc.c */
|
/* Line 721 of yacc.c */
|
||||||
#line 1111 "parse-gram.c"
|
#line 1113 "parse-gram.c"
|
||||||
break;
|
break;
|
||||||
case 53: /* "\"type\"" */
|
case 53: /* "\"type\"" */
|
||||||
|
|
||||||
@@ -1116,7 +1118,7 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp)
|
|||||||
{ fprintf (stderr, "<%s>", (yyvaluep->uniqstr)); };
|
{ fprintf (stderr, "<%s>", (yyvaluep->uniqstr)); };
|
||||||
|
|
||||||
/* Line 721 of yacc.c */
|
/* Line 721 of yacc.c */
|
||||||
#line 1120 "parse-gram.c"
|
#line 1122 "parse-gram.c"
|
||||||
break;
|
break;
|
||||||
case 84: /* "variable" */
|
case 84: /* "variable" */
|
||||||
|
|
||||||
@@ -1125,7 +1127,7 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp)
|
|||||||
{ fputs ((yyvaluep->uniqstr), stderr); };
|
{ fputs ((yyvaluep->uniqstr), stderr); };
|
||||||
|
|
||||||
/* Line 721 of yacc.c */
|
/* Line 721 of yacc.c */
|
||||||
#line 1129 "parse-gram.c"
|
#line 1131 "parse-gram.c"
|
||||||
break;
|
break;
|
||||||
case 85: /* "content.opt" */
|
case 85: /* "content.opt" */
|
||||||
|
|
||||||
@@ -1134,7 +1136,7 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp)
|
|||||||
{ fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
|
{ fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
|
||||||
|
|
||||||
/* Line 721 of yacc.c */
|
/* Line 721 of yacc.c */
|
||||||
#line 1138 "parse-gram.c"
|
#line 1140 "parse-gram.c"
|
||||||
break;
|
break;
|
||||||
case 86: /* "braceless" */
|
case 86: /* "braceless" */
|
||||||
|
|
||||||
@@ -1143,7 +1145,7 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp)
|
|||||||
{ fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
|
{ fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
|
||||||
|
|
||||||
/* Line 721 of yacc.c */
|
/* Line 721 of yacc.c */
|
||||||
#line 1147 "parse-gram.c"
|
#line 1149 "parse-gram.c"
|
||||||
break;
|
break;
|
||||||
case 87: /* "id" */
|
case 87: /* "id" */
|
||||||
|
|
||||||
@@ -1152,7 +1154,7 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp)
|
|||||||
{ fprintf (stderr, "%s", (yyvaluep->symbol)->tag); };
|
{ fprintf (stderr, "%s", (yyvaluep->symbol)->tag); };
|
||||||
|
|
||||||
/* Line 721 of yacc.c */
|
/* Line 721 of yacc.c */
|
||||||
#line 1156 "parse-gram.c"
|
#line 1158 "parse-gram.c"
|
||||||
break;
|
break;
|
||||||
case 88: /* "id_colon" */
|
case 88: /* "id_colon" */
|
||||||
|
|
||||||
@@ -1161,7 +1163,7 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp)
|
|||||||
{ fprintf (stderr, "%s:", (yyvaluep->symbol)->tag); };
|
{ fprintf (stderr, "%s:", (yyvaluep->symbol)->tag); };
|
||||||
|
|
||||||
/* Line 721 of yacc.c */
|
/* Line 721 of yacc.c */
|
||||||
#line 1165 "parse-gram.c"
|
#line 1167 "parse-gram.c"
|
||||||
break;
|
break;
|
||||||
case 89: /* "symbol" */
|
case 89: /* "symbol" */
|
||||||
|
|
||||||
@@ -1170,7 +1172,7 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp)
|
|||||||
{ fprintf (stderr, "%s", (yyvaluep->symbol)->tag); };
|
{ fprintf (stderr, "%s", (yyvaluep->symbol)->tag); };
|
||||||
|
|
||||||
/* Line 721 of yacc.c */
|
/* Line 721 of yacc.c */
|
||||||
#line 1174 "parse-gram.c"
|
#line 1176 "parse-gram.c"
|
||||||
break;
|
break;
|
||||||
case 90: /* "string_as_id" */
|
case 90: /* "string_as_id" */
|
||||||
|
|
||||||
@@ -1179,7 +1181,7 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp)
|
|||||||
{ fprintf (stderr, "%s", (yyvaluep->symbol)->tag); };
|
{ fprintf (stderr, "%s", (yyvaluep->symbol)->tag); };
|
||||||
|
|
||||||
/* Line 721 of yacc.c */
|
/* Line 721 of yacc.c */
|
||||||
#line 1183 "parse-gram.c"
|
#line 1185 "parse-gram.c"
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
@@ -1710,7 +1712,7 @@ YYLTYPE yylloc;
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Line 1250 of yacc.c */
|
/* Line 1250 of yacc.c */
|
||||||
#line 1714 "parse-gram.c"
|
#line 1716 "parse-gram.c"
|
||||||
yylsp[0] = yylloc;
|
yylsp[0] = yylloc;
|
||||||
|
|
||||||
goto yysetstate;
|
goto yysetstate;
|
||||||
@@ -2587,10 +2589,17 @@ yyreduce:
|
|||||||
{ (yyval.chars) = ""; }
|
{ (yyval.chars) = ""; }
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 99:
|
case 98:
|
||||||
|
|
||||||
/* Line 1463 of yacc.c */
|
/* Line 1463 of yacc.c */
|
||||||
#line 584 "parse-gram.y"
|
#line 574 "parse-gram.y"
|
||||||
|
{ (yyval.chars) = (yyvsp[(1) - (1)].uniqstr); }
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 100:
|
||||||
|
|
||||||
|
/* Line 1463 of yacc.c */
|
||||||
|
#line 585 "parse-gram.y"
|
||||||
{
|
{
|
||||||
code_props plain_code;
|
code_props plain_code;
|
||||||
(yyvsp[(1) - (1)].code)[strlen ((yyvsp[(1) - (1)].code)) - 1] = '\n';
|
(yyvsp[(1) - (1)].code)[strlen ((yyvsp[(1) - (1)].code)) - 1] = '\n';
|
||||||
@@ -2601,17 +2610,17 @@ yyreduce:
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 100:
|
|
||||||
|
|
||||||
/* Line 1463 of yacc.c */
|
|
||||||
#line 604 "parse-gram.y"
|
|
||||||
{ (yyval.symbol) = symbol_from_uniqstr ((yyvsp[(1) - (1)].uniqstr), (yylsp[(1) - (1)])); }
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 101:
|
case 101:
|
||||||
|
|
||||||
/* Line 1463 of yacc.c */
|
/* Line 1463 of yacc.c */
|
||||||
#line 606 "parse-gram.y"
|
#line 605 "parse-gram.y"
|
||||||
|
{ (yyval.symbol) = symbol_from_uniqstr ((yyvsp[(1) - (1)].uniqstr), (yylsp[(1) - (1)])); }
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 102:
|
||||||
|
|
||||||
|
/* Line 1463 of yacc.c */
|
||||||
|
#line 607 "parse-gram.y"
|
||||||
{
|
{
|
||||||
(yyval.symbol) = symbol_get (char_name ((yyvsp[(1) - (1)].character)), (yylsp[(1) - (1)]));
|
(yyval.symbol) = symbol_get (char_name ((yyvsp[(1) - (1)].character)), (yylsp[(1) - (1)]));
|
||||||
symbol_class_set ((yyval.symbol), token_sym, (yylsp[(1) - (1)]), false);
|
symbol_class_set ((yyval.symbol), token_sym, (yylsp[(1) - (1)]), false);
|
||||||
@@ -2619,27 +2628,27 @@ yyreduce:
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 102:
|
case 103:
|
||||||
|
|
||||||
/* Line 1463 of yacc.c */
|
/* Line 1463 of yacc.c */
|
||||||
#line 614 "parse-gram.y"
|
#line 615 "parse-gram.y"
|
||||||
{ (yyval.symbol) = symbol_from_uniqstr ((yyvsp[(1) - (1)].uniqstr), (yylsp[(1) - (1)])); }
|
{ (yyval.symbol) = symbol_from_uniqstr ((yyvsp[(1) - (1)].uniqstr), (yylsp[(1) - (1)])); }
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 105:
|
case 106:
|
||||||
|
|
||||||
/* Line 1463 of yacc.c */
|
/* Line 1463 of yacc.c */
|
||||||
#line 626 "parse-gram.y"
|
#line 627 "parse-gram.y"
|
||||||
{
|
{
|
||||||
(yyval.symbol) = symbol_get (quotearg_style (c_quoting_style, (yyvsp[(1) - (1)].chars)), (yylsp[(1) - (1)]));
|
(yyval.symbol) = symbol_get (quotearg_style (c_quoting_style, (yyvsp[(1) - (1)].chars)), (yylsp[(1) - (1)]));
|
||||||
symbol_class_set ((yyval.symbol), token_sym, (yylsp[(1) - (1)]), false);
|
symbol_class_set ((yyval.symbol), token_sym, (yylsp[(1) - (1)]), false);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 107:
|
case 108:
|
||||||
|
|
||||||
/* Line 1463 of yacc.c */
|
/* Line 1463 of yacc.c */
|
||||||
#line 635 "parse-gram.y"
|
#line 636 "parse-gram.y"
|
||||||
{
|
{
|
||||||
code_props plain_code;
|
code_props plain_code;
|
||||||
code_props_plain_init (&plain_code, (yyvsp[(2) - (2)].chars), (yylsp[(2) - (2)]));
|
code_props_plain_init (&plain_code, (yyvsp[(2) - (2)].chars), (yylsp[(2) - (2)]));
|
||||||
@@ -2653,7 +2662,7 @@ yyreduce:
|
|||||||
|
|
||||||
|
|
||||||
/* Line 1463 of yacc.c */
|
/* Line 1463 of yacc.c */
|
||||||
#line 2657 "parse-gram.c"
|
#line 2666 "parse-gram.c"
|
||||||
default: break;
|
default: break;
|
||||||
}
|
}
|
||||||
YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
|
YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
|
||||||
@@ -2872,7 +2881,7 @@ yyreturn:
|
|||||||
|
|
||||||
|
|
||||||
/* Line 1683 of yacc.c */
|
/* Line 1683 of yacc.c */
|
||||||
#line 645 "parse-gram.y"
|
#line 646 "parse-gram.y"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -571,6 +571,7 @@ variable:
|
|||||||
/* Some content or empty by default. */
|
/* Some content or empty by default. */
|
||||||
content.opt:
|
content.opt:
|
||||||
/* Nothing. */ { $$ = ""; }
|
/* Nothing. */ { $$ = ""; }
|
||||||
|
| ID { $$ = $1; }
|
||||||
| STRING
|
| STRING
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|||||||
@@ -576,7 +576,7 @@ AT_CHECK_CALC_LALR([%yacc])
|
|||||||
AT_CHECK_CALC_LALR([%error-verbose])
|
AT_CHECK_CALC_LALR([%error-verbose])
|
||||||
|
|
||||||
AT_CHECK_CALC_LALR([%define api.pure %locations])
|
AT_CHECK_CALC_LALR([%define api.pure %locations])
|
||||||
AT_CHECK_CALC_LALR([%define api.push-pull "both" %define api.pure %locations])
|
AT_CHECK_CALC_LALR([%define api.push-pull both %define api.pure %locations])
|
||||||
AT_CHECK_CALC_LALR([%error-verbose %locations])
|
AT_CHECK_CALC_LALR([%error-verbose %locations])
|
||||||
|
|
||||||
AT_CHECK_CALC_LALR([%error-verbose %locations %defines %name-prefix "calc" %verbose %yacc])
|
AT_CHECK_CALC_LALR([%error-verbose %locations %defines %name-prefix "calc" %verbose %yacc])
|
||||||
@@ -585,7 +585,7 @@ AT_CHECK_CALC_LALR([%debug])
|
|||||||
AT_CHECK_CALC_LALR([%error-verbose %debug %locations %defines %name-prefix "calc" %verbose %yacc])
|
AT_CHECK_CALC_LALR([%error-verbose %debug %locations %defines %name-prefix "calc" %verbose %yacc])
|
||||||
|
|
||||||
AT_CHECK_CALC_LALR([%define api.pure %error-verbose %debug %locations %defines %name-prefix "calc" %verbose %yacc])
|
AT_CHECK_CALC_LALR([%define api.pure %error-verbose %debug %locations %defines %name-prefix "calc" %verbose %yacc])
|
||||||
AT_CHECK_CALC_LALR([%define api.push-pull "both" %define api.pure %error-verbose %debug %locations %defines %name-prefix "calc" %verbose %yacc])
|
AT_CHECK_CALC_LALR([%define api.push-pull both %define api.pure %error-verbose %debug %locations %defines %name-prefix "calc" %verbose %yacc])
|
||||||
|
|
||||||
AT_CHECK_CALC_LALR([%define api.pure %error-verbose %debug %locations %defines %name-prefix "calc" %verbose %yacc %parse-param {semantic_value *result} %parse-param {int *count}])
|
AT_CHECK_CALC_LALR([%define api.pure %error-verbose %debug %locations %defines %name-prefix "calc" %verbose %yacc %parse-param {semantic_value *result} %parse-param {int *count}])
|
||||||
|
|
||||||
|
|||||||
@@ -42,18 +42,18 @@ AT_CHECK([[diff -u input-lalr.output input.output \
|
|||||||
[[0]], [$1])])
|
[[0]], [$1])])
|
||||||
|
|
||||||
AT_TEST_TABLES_AND_PARSE([$2[: LALR(1)]], [[LALR]], [[last-state]],
|
AT_TEST_TABLES_AND_PARSE([$2[: LALR(1)]], [[LALR]], [[last-state]],
|
||||||
[[%define lr.type "lalr"
|
[[%define lr.type lalr
|
||||||
]$3],
|
]$3],
|
||||||
[$4], [$5], [$6], [$7],
|
[$4], [$5], [$6], [$7],
|
||||||
[AT_LALR1_DIFF_CHECK([$8])$9], [$10], [$11], [$12])
|
[AT_LALR1_DIFF_CHECK([$8])$9], [$10], [$11], [$12])
|
||||||
AT_TEST_TABLES_AND_PARSE([$2[: IELR(1)]], [[IELR]], [[last-state]],
|
AT_TEST_TABLES_AND_PARSE([$2[: IELR(1)]], [[IELR]], [[last-state]],
|
||||||
[[%define lr.type "ielr"
|
[[%define lr.type ielr
|
||||||
]$3],
|
]$3],
|
||||||
[$4], [$5], [$6], [$7],
|
[$4], [$5], [$6], [$7],
|
||||||
[AT_LALR1_DIFF_CHECK([$8])$9], [$10], [$11], [$12])
|
[AT_LALR1_DIFF_CHECK([$8])$9], [$10], [$11], [$12])
|
||||||
AT_TEST_TABLES_AND_PARSE([$2[: Canonical LR(1)]], [[canonical LR]],
|
AT_TEST_TABLES_AND_PARSE([$2[: Canonical LR(1)]], [[canonical LR]],
|
||||||
[[last-state,no-xml]],
|
[[last-state,no-xml]],
|
||||||
[[%define lr.type "canonical-lr"
|
[[%define lr.type canonical-lr
|
||||||
]$3],
|
]$3],
|
||||||
[$4], [$5], [$6], [$7],
|
[$4], [$5], [$6], [$7],
|
||||||
[$9], [$10], [$11], [$12])
|
[$9], [$10], [$11], [$12])
|
||||||
|
|||||||
@@ -1004,7 +1004,7 @@ AT_SETUP([[%define enum variables]])
|
|||||||
|
|
||||||
# Front-end.
|
# Front-end.
|
||||||
AT_DATA([[input.y]],
|
AT_DATA([[input.y]],
|
||||||
[[%define lr.default-reductions "bogus"
|
[[%define lr.default-reductions bogus
|
||||||
%%
|
%%
|
||||||
start: ;
|
start: ;
|
||||||
]])
|
]])
|
||||||
@@ -1017,7 +1017,7 @@ input.y:1.9-29: accepted value: `accepting'
|
|||||||
|
|
||||||
# Back-end.
|
# Back-end.
|
||||||
AT_DATA([[input.y]],
|
AT_DATA([[input.y]],
|
||||||
[[%define api.push-pull "neither"
|
[[%define api.push-pull neither
|
||||||
%%
|
%%
|
||||||
start: ;
|
start: ;
|
||||||
]])
|
]])
|
||||||
@@ -1052,7 +1052,7 @@ input.y:1.9-21: accepted value: `both'
|
|||||||
]])
|
]])
|
||||||
|
|
||||||
AT_DATA([[input.y]],
|
AT_DATA([[input.y]],
|
||||||
[[%define lr.keep_unreachable_states "maybe"
|
[[%define lr.keep_unreachable_states maybe
|
||||||
%%
|
%%
|
||||||
start: ;
|
start: ;
|
||||||
]])
|
]])
|
||||||
@@ -1096,11 +1096,11 @@ AT_BISON_CHECK([[input.y]], [0], [],
|
|||||||
])
|
])
|
||||||
|
|
||||||
AT_CHECK_API_PURE([[%language "c++" %defines]], [[]])
|
AT_CHECK_API_PURE([[%language "c++" %defines]], [[]])
|
||||||
AT_CHECK_API_PURE([[%language "c++" %defines]], [["false"]])
|
AT_CHECK_API_PURE([[%language "c++" %defines]], [[false]])
|
||||||
AT_CHECK_API_PURE([[%language "c++" %defines %glr-parser]], [[""]])
|
AT_CHECK_API_PURE([[%language "c++" %defines %glr-parser]], [[""]])
|
||||||
AT_CHECK_API_PURE([[%language "c++" %defines %glr-parser]], [["false"]])
|
AT_CHECK_API_PURE([[%language "c++" %defines %glr-parser]], [[false]])
|
||||||
AT_CHECK_API_PURE([[%language "java"]], [["true"]])
|
AT_CHECK_API_PURE([[%language "java"]], [[true]])
|
||||||
AT_CHECK_API_PURE([[%language "java"]], [["false"]])
|
AT_CHECK_API_PURE([[%language "java"]], [[false]])
|
||||||
|
|
||||||
AT_CLEANUP
|
AT_CLEANUP
|
||||||
|
|
||||||
|
|||||||
@@ -77,7 +77,7 @@ m4_pushdef([AT_LOCATION_IF],
|
|||||||
[m4_bmatch([$3], [%locations], [$1], [$2])])
|
[m4_bmatch([$3], [%locations], [$1], [$2])])
|
||||||
m4_pushdef([AT_PURE_IF],
|
m4_pushdef([AT_PURE_IF],
|
||||||
[m4_bmatch([$3], [%define *api\.pure\|%pure-parser],
|
[m4_bmatch([$3], [%define *api\.pure\|%pure-parser],
|
||||||
[m4_bmatch([$3], [%define *api\.pure *"false"], [$2], [$1])],
|
[m4_bmatch([$3], [%define *api\.pure *"?false"?], [$2], [$1])],
|
||||||
[$2])])
|
[$2])])
|
||||||
m4_pushdef([AT_PURE_AND_LOC_IF],
|
m4_pushdef([AT_PURE_AND_LOC_IF],
|
||||||
[m4_bmatch([$3], [%locations], [AT_PURE_IF($@)], [$2])])
|
[m4_bmatch([$3], [%locations], [AT_PURE_IF($@)], [$2])])
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ AT_DATA_GRAMMAR([[input.y]],
|
|||||||
void yyerror (char const *msg);
|
void yyerror (char const *msg);
|
||||||
%}
|
%}
|
||||||
|
|
||||||
%define api.pure %define api.push-pull "push"
|
%define api.pure %define api.push-pull push
|
||||||
|
|
||||||
%%
|
%%
|
||||||
|
|
||||||
@@ -93,7 +93,7 @@ AT_DATA_GRAMMAR([[input.y]],
|
|||||||
int yylex (void);
|
int yylex (void);
|
||||||
%}
|
%}
|
||||||
|
|
||||||
%define api.push-pull "]$1["
|
%define api.push-pull ]$1[
|
||||||
|
|
||||||
%%
|
%%
|
||||||
|
|
||||||
@@ -156,7 +156,7 @@ AT_SETUP([[Push Parsing: Unsupported Skeletons]])
|
|||||||
|
|
||||||
AT_DATA([[input.y]],
|
AT_DATA([[input.y]],
|
||||||
[[%glr-parser
|
[[%glr-parser
|
||||||
%define api.push-pull "push"
|
%define api.push-pull push
|
||||||
%%
|
%%
|
||||||
start: ;
|
start: ;
|
||||||
]])
|
]])
|
||||||
|
|||||||
@@ -375,19 +375,19 @@ m4_define([AT_TEST_LR_TYPE],
|
|||||||
AT_TEST_TABLES_AND_PARSE([[no %define lr.type: ]$1],
|
AT_TEST_TABLES_AND_PARSE([[no %define lr.type: ]$1],
|
||||||
[[LALR]], [[]],
|
[[LALR]], [[]],
|
||||||
[$2], m4_shiftn(2, $@))
|
[$2], m4_shiftn(2, $@))
|
||||||
AT_TEST_TABLES_AND_PARSE([[%define lr.type "lalr": ]$1],
|
AT_TEST_TABLES_AND_PARSE([[%define lr.type lalr: ]$1],
|
||||||
[[LALR]], [[]],
|
[[LALR]], [[]],
|
||||||
[[%define lr.type "lalr"
|
[[%define lr.type lalr
|
||||||
]$2],
|
]$2],
|
||||||
m4_shiftn(2, $@))
|
m4_shiftn(2, $@))
|
||||||
AT_TEST_TABLES_AND_PARSE([[%define lr.type "ielr": ]$1],
|
AT_TEST_TABLES_AND_PARSE([[%define lr.type ielr: ]$1],
|
||||||
[[IELR]], [[]],
|
[[IELR]], [[]],
|
||||||
[[%define lr.type "ielr"
|
[[%define lr.type ielr
|
||||||
]$2],
|
]$2],
|
||||||
m4_shiftn(2, $@))
|
m4_shiftn(2, $@))
|
||||||
AT_TEST_TABLES_AND_PARSE([[%define lr.type "canonical-lr": ]$1],
|
AT_TEST_TABLES_AND_PARSE([[%define lr.type canonical-lr: ]$1],
|
||||||
[[canonical LR]], [[]],
|
[[canonical LR]], [[]],
|
||||||
[[%define lr.type "canonical-lr"
|
[[%define lr.type canonical-lr
|
||||||
]$2],
|
]$2],
|
||||||
m4_shiftn(2, $@))
|
m4_shiftn(2, $@))
|
||||||
])
|
])
|
||||||
@@ -1454,17 +1454,17 @@ AT_TEST_TABLES_AND_PARSE([[no %define lr.default-reductions]],
|
|||||||
[[all]], [[]],
|
[[all]], [[]],
|
||||||
[[]],
|
[[]],
|
||||||
[$1], [$2], [[]], [$3])
|
[$1], [$2], [[]], [$3])
|
||||||
AT_TEST_TABLES_AND_PARSE([[%define lr.default-reductions "all"]],
|
AT_TEST_TABLES_AND_PARSE([[%define lr.default-reductions all]],
|
||||||
[[all]], [[]],
|
[[all]], [[]],
|
||||||
[[%define lr.default-reductions "all"]],
|
[[%define lr.default-reductions all]],
|
||||||
[$1], [$2], [[]], [$3])
|
[$1], [$2], [[]], [$3])
|
||||||
AT_TEST_TABLES_AND_PARSE([[%define lr.default-reductions "consistent"]],
|
AT_TEST_TABLES_AND_PARSE([[%define lr.default-reductions consistent]],
|
||||||
[[consistent]], [[]],
|
[[consistent]], [[]],
|
||||||
[[%define lr.default-reductions "consistent"]],
|
[[%define lr.default-reductions consistent]],
|
||||||
[$1], [$2], [[]], [$3])
|
[$1], [$2], [[]], [$3])
|
||||||
AT_TEST_TABLES_AND_PARSE([[%define lr.default-reductions "accepting"]],
|
AT_TEST_TABLES_AND_PARSE([[%define lr.default-reductions accepting]],
|
||||||
[[accepting]], [[]],
|
[[accepting]], [[]],
|
||||||
[[%define lr.default-reductions "accepting"]],
|
[[%define lr.default-reductions accepting]],
|
||||||
[$1], [$2], [[]], [$3])
|
[$1], [$2], [[]], [$3])
|
||||||
])
|
])
|
||||||
|
|
||||||
|
|||||||
@@ -496,7 +496,7 @@ AT_PARSER_CHECK([./input 10000], 2, [], [ignore],
|
|||||||
# just helps guarantee we don't let the YYSTACK_USE_ALLOCA feature affect
|
# just helps guarantee we don't let the YYSTACK_USE_ALLOCA feature affect
|
||||||
# push parsers.
|
# push parsers.
|
||||||
AT_DATA_STACK_TORTURE([AT_USE_ALLOCA],
|
AT_DATA_STACK_TORTURE([AT_USE_ALLOCA],
|
||||||
[[%define api.push-pull "both"
|
[[%define api.push-pull both
|
||||||
]])
|
]])
|
||||||
AT_PARSER_CHECK([./input 20], 0, [], [ignore],
|
AT_PARSER_CHECK([./input 20], 0, [], [ignore],
|
||||||
[[VALGRIND_OPTS="$VALGRIND_OPTS --log-fd=1"]])
|
[[VALGRIND_OPTS="$VALGRIND_OPTS --log-fd=1"]])
|
||||||
@@ -534,7 +534,7 @@ AT_PARSER_CHECK([./input 10000], 2, [], [ignore],
|
|||||||
[[VALGRIND_OPTS="$VALGRIND_OPTS --log-fd=1"]])
|
[[VALGRIND_OPTS="$VALGRIND_OPTS --log-fd=1"]])
|
||||||
|
|
||||||
AT_DATA_STACK_TORTURE([AT_USE_ALLOCA],
|
AT_DATA_STACK_TORTURE([AT_USE_ALLOCA],
|
||||||
[[%define api.push-pull "both"
|
[[%define api.push-pull both
|
||||||
]])
|
]])
|
||||||
AT_PARSER_CHECK([./input 20], 0, [], [ignore],
|
AT_PARSER_CHECK([./input 20], 0, [], [ignore],
|
||||||
[[VALGRIND_OPTS="$VALGRIND_OPTS --log-fd=1"]])
|
[[VALGRIND_OPTS="$VALGRIND_OPTS --log-fd=1"]])
|
||||||
|
|||||||
Reference in New Issue
Block a user