mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 20:33:03 +00:00
style: no longer use backquotes
* README, REFERENCES, TODO, configure.ac, data/README, data/bison.m4, * data/c++.m4, data/c.m4, data/java.m4, data/lalr1.cc, * data/lalr1.java, data/yacc.c, doc/local.mk, etc/bench.pl.in, * src/conflicts.c, src/files.c, src/getargs.c, src/gram.h, src/lalr.c, * src/location.c, src/location.h, src/muscle-tab.c, src/muscle-tab.h, * src/output.c, src/parse-gram.c, src/parse-gram.y, src/print-xml.c, * src/print.c, src/reader.c, src/reduce.c, src/scan-skel.l, * src/symtab.h, src/system.h, src/tables.c: Use single quotes, as currently recommended by the GNU Coding Standards.
This commit is contained in:
2
README
2
README
@@ -30,7 +30,7 @@ not answer them, please send mail to <help-bison@gnu.org>.
|
|||||||
|
|
||||||
* Bug reports
|
* Bug reports
|
||||||
Please send bug reports to <bug-bison@gnu.org>. Please include the
|
Please send bug reports to <bug-bison@gnu.org>. Please include the
|
||||||
version number from `bison --version', and a complete, self-contained
|
version number from 'bison --version', and a complete, self-contained
|
||||||
test case in each bug report.
|
test case in each bug report.
|
||||||
|
|
||||||
* Copyright statements
|
* Copyright statements
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ Bison supports the @N construction, which gives you access to
|
|||||||
the starting and ending line number and character number associated
|
the starting and ending line number and character number associated
|
||||||
with any of the symbols in the current rule.
|
with any of the symbols in the current rule.
|
||||||
|
|
||||||
Also, Bison supports the command `%expect N' which says not to mention
|
Also, Bison supports the command '%expect N' which says not to mention
|
||||||
the conflicts if there are N shift/reduce conflicts and no reduce/reduce
|
the conflicts if there are N shift/reduce conflicts and no reduce/reduce
|
||||||
conflicts.
|
conflicts.
|
||||||
|
|
||||||
|
|||||||
8
TODO
8
TODO
@@ -176,13 +176,13 @@ part of $default. Should we make the two reductions explicit, or just
|
|||||||
keep $default? See the following point.
|
keep $default? See the following point.
|
||||||
|
|
||||||
** Disabled Reductions
|
** Disabled Reductions
|
||||||
See `tests/conflicts.at (Defaulted Conflicted Reduction)', and decide
|
See 'tests/conflicts.at (Defaulted Conflicted Reduction)', and decide
|
||||||
what we want to do.
|
what we want to do.
|
||||||
|
|
||||||
** Documentation
|
** Documentation
|
||||||
Extend with error productions. The hard part will probably be finding
|
Extend with error productions. The hard part will probably be finding
|
||||||
the right rule so that a single state does not exhibit too many yet
|
the right rule so that a single state does not exhibit too many yet
|
||||||
undocumented ``features''. Maybe an empty action ought to be
|
undocumented ''features''. Maybe an empty action ought to be
|
||||||
presented too. Shall we try to make a single grammar with all these
|
presented too. Shall we try to make a single grammar with all these
|
||||||
features, or should we have several very small grammars?
|
features, or should we have several very small grammars?
|
||||||
|
|
||||||
@@ -243,9 +243,9 @@ into
|
|||||||
exp: exp '+' exp | exp '&' exp;
|
exp: exp '+' exp | exp '&' exp;
|
||||||
|
|
||||||
when there are no actions. This can significantly speed up some
|
when there are no actions. This can significantly speed up some
|
||||||
grammars. I can't find the papers. In particular the book `LR
|
grammars. I can't find the papers. In particular the book 'LR
|
||||||
parsing: Theory and Practice' is impossible to find, but according to
|
parsing: Theory and Practice' is impossible to find, but according to
|
||||||
`Parsing Techniques: a Practical Guide', it includes information about
|
'Parsing Techniques: a Practical Guide', it includes information about
|
||||||
this issue. Does anybody have it?
|
this issue. Does anybody have it?
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
# In order for some versions of Sun Studio to compile our C++ test cases
|
# In order for some versions of Sun Studio to compile our C++ test cases
|
||||||
# correctly, we need Autoconf 2.64 or better to handle the restrict
|
# correctly, we need Autoconf 2.64 or better to handle the restrict
|
||||||
# keyword in at least string.h from gnulib. We need Autoconf 2.68 or
|
# keyword in at least string.h from gnulib. We need Autoconf 2.68 or
|
||||||
# better to avoid a typo in the `configure --help' entry for the YACC
|
# better to avoid a typo in the 'configure --help' entry for the YACC
|
||||||
# environment variable.
|
# environment variable.
|
||||||
AC_PREREQ([2.68])
|
AC_PREREQ([2.68])
|
||||||
m4_pattern_forbid([^gl_[A-Z]])
|
m4_pattern_forbid([^gl_[A-Z]])
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ Currently, the supported skeletons are:
|
|||||||
These skeletons are the only ones supported by the Bison team.
|
These skeletons are the only ones supported by the Bison team.
|
||||||
Because the interface between skeletons and the bison program is not
|
Because the interface between skeletons and the bison program is not
|
||||||
finished, *we are not bound to it*. In particular, Bison is not
|
finished, *we are not bound to it*. In particular, Bison is not
|
||||||
mature enough for us to consider that ``foreign skeletons'' are
|
mature enough for us to consider that "foreign skeletons" are
|
||||||
supported.
|
supported.
|
||||||
|
|
||||||
* m4sugar
|
* m4sugar
|
||||||
|
|||||||
@@ -313,7 +313,7 @@ m4_define([b4_define_flag_if],
|
|||||||
# _b4_define_flag_if($1, $2, FLAG)
|
# _b4_define_flag_if($1, $2, FLAG)
|
||||||
# --------------------------------
|
# --------------------------------
|
||||||
# Work around the impossibility to define macros inside macros,
|
# Work around the impossibility to define macros inside macros,
|
||||||
# because issuing `[$1]' is not possible in M4. GNU M4 should provide
|
# because issuing '[$1]' is not possible in M4. GNU M4 should provide
|
||||||
# $$1 a la M5/TeX.
|
# $$1 a la M5/TeX.
|
||||||
m4_define([_b4_define_flag_if],
|
m4_define([_b4_define_flag_if],
|
||||||
[m4_if([$1$2], $[1]$[2], [],
|
[m4_if([$1$2], $[1]$[2], [],
|
||||||
@@ -772,8 +772,8 @@ m4_define([b4_percent_define_default],
|
|||||||
# b4_percent_define_if_define(NAME, [VARIABLE = NAME])
|
# b4_percent_define_if_define(NAME, [VARIABLE = NAME])
|
||||||
# ----------------------------------------------------
|
# ----------------------------------------------------
|
||||||
# Define b4_NAME_if that executes its $1 or $2 depending whether
|
# Define b4_NAME_if that executes its $1 or $2 depending whether
|
||||||
# VARIABLE was %defined. The characters `.' and `-' in VARIABLE are mapped
|
# VARIABLE was %defined. The characters '.' and `-' in VARIABLE are mapped
|
||||||
# to `_'.
|
# to '_'.
|
||||||
m4_define([b4_percent_define_if_define_],
|
m4_define([b4_percent_define_if_define_],
|
||||||
[m4_define(m4_bpatsubst([b4_$1_if], [[-.]], [_]),
|
[m4_define(m4_bpatsubst([b4_$1_if], [[-.]], [_]),
|
||||||
[b4_percent_define_flag_if(m4_default([$2], [$1]),
|
[b4_percent_define_flag_if(m4_default([$2], [$1]),
|
||||||
|
|||||||
@@ -54,8 +54,8 @@ b4_percent_define_default([[define_location_comparison]],
|
|||||||
m4_define([b4_namespace_ref], [b4_percent_define_get([[api.namespace]])])
|
m4_define([b4_namespace_ref], [b4_percent_define_get([[api.namespace]])])
|
||||||
|
|
||||||
|
|
||||||
# Don't permit an empty b4_namespace_ref. Any `::parser::foo' appended to it
|
# Don't permit an empty b4_namespace_ref. Any '::parser::foo' appended to it
|
||||||
# would compile as an absolute reference with `parser' in the global namespace.
|
# would compile as an absolute reference with 'parser' in the global namespace.
|
||||||
# b4_namespace_open would open an anonymous namespace and thus establish
|
# b4_namespace_open would open an anonymous namespace and thus establish
|
||||||
# internal linkage. This would compile. However, it's cryptic, and internal
|
# internal linkage. This would compile. However, it's cryptic, and internal
|
||||||
# linkage for the parser would be specified in all translation units that
|
# linkage for the parser would be specified in all translation units that
|
||||||
|
|||||||
@@ -150,7 +150,7 @@ m4_popdef([$1])dnl
|
|||||||
|
|
||||||
# b4_parse_param_use([VAL], [LOC])
|
# b4_parse_param_use([VAL], [LOC])
|
||||||
# --------------------------------
|
# --------------------------------
|
||||||
# `YYUSE' VAL, LOC if locations are enabled, and all the parse-params.
|
# 'YYUSE' VAL, LOC if locations are enabled, and all the parse-params.
|
||||||
m4_define([b4_parse_param_use],
|
m4_define([b4_parse_param_use],
|
||||||
[m4_ifvaln([$1], [ YYUSE ([$1]);])dnl
|
[m4_ifvaln([$1], [ YYUSE ([$1]);])dnl
|
||||||
b4_locations_if([m4_ifvaln([$2], [ YYUSE ([$2]);])])dnl
|
b4_locations_if([m4_ifvaln([$2], [ YYUSE ([$2]);])])dnl
|
||||||
@@ -182,7 +182,7 @@ m4_define([b4_int_type],
|
|||||||
# b4_int_type_for(NAME)
|
# b4_int_type_for(NAME)
|
||||||
# ---------------------
|
# ---------------------
|
||||||
# Return the smallest int type able to handle numbers ranging from
|
# Return the smallest int type able to handle numbers ranging from
|
||||||
# `NAME_min' to `NAME_max' (included).
|
# 'NAME_min' to 'NAME_max' (included).
|
||||||
m4_define([b4_int_type_for],
|
m4_define([b4_int_type_for],
|
||||||
[b4_int_type($1_min, $1_max)])
|
[b4_int_type($1_min, $1_max)])
|
||||||
|
|
||||||
|
|||||||
@@ -103,7 +103,7 @@ m4_define([b4_int_type],
|
|||||||
# b4_int_type_for(NAME)
|
# b4_int_type_for(NAME)
|
||||||
# ---------------------
|
# ---------------------
|
||||||
# Return the smallest int type able to handle numbers ranging from
|
# Return the smallest int type able to handle numbers ranging from
|
||||||
# `NAME_min' to `NAME_max' (included).
|
# 'NAME_min' to 'NAME_max' (included).
|
||||||
m4_define([b4_int_type_for],
|
m4_define([b4_int_type_for],
|
||||||
[b4_int_type($1_min, $1_max)])
|
[b4_int_type($1_min, $1_max)])
|
||||||
|
|
||||||
|
|||||||
@@ -824,7 +824,7 @@ b4_dollar_popdef])[]dnl
|
|||||||
variants. */
|
variants. */
|
||||||
b4_symbol_variant([[yyr1_@{yyn@}]], [yylhs.value], [build])],[
|
b4_symbol_variant([[yyr1_@{yyn@}]], [yylhs.value], [build])],[
|
||||||
/* If YYLEN is nonzero, implement the default value of the action:
|
/* If YYLEN is nonzero, implement the default value of the action:
|
||||||
`$$ = $1'. Otherwise, use the top of the stack.
|
'$$ = $1'. Otherwise, use the top of the stack.
|
||||||
|
|
||||||
Otherwise, the following line sets YYLHS.VALUE to garbage.
|
Otherwise, the following line sets YYLHS.VALUE to garbage.
|
||||||
This behavior is undocumented and Bison
|
This behavior is undocumented and Bison
|
||||||
|
|||||||
@@ -375,7 +375,7 @@ b4_lexer_if([[
|
|||||||
]b4_locations_if([b4_location_type[ yyloc = yylloc (yystack, yylen);]])[
|
]b4_locations_if([b4_location_type[ yyloc = yylloc (yystack, yylen);]])[
|
||||||
|
|
||||||
/* If YYLEN is nonzero, implement the default value of the action:
|
/* If YYLEN is nonzero, implement the default value of the action:
|
||||||
`$$ = $1'. Otherwise, use the top of the stack.
|
'$$ = $1'. Otherwise, use the top of the stack.
|
||||||
|
|
||||||
Otherwise, the following line sets YYVAL to garbage.
|
Otherwise, the following line sets YYVAL to garbage.
|
||||||
This behavior is undocumented and Bison
|
This behavior is undocumented and Bison
|
||||||
|
|||||||
12
data/yacc.c
12
data/yacc.c
@@ -223,9 +223,9 @@ m4_define([b4_declare_parser_state_variables], [b4_pure_if([[
|
|||||||
int yyerrstatus;
|
int yyerrstatus;
|
||||||
|
|
||||||
/* The stacks and their tools:
|
/* The stacks and their tools:
|
||||||
`yyss': related to states.
|
'yyss': related to states.
|
||||||
`yyvs': related to semantic values.]b4_locations_if([[
|
'yyvs': related to semantic values.]b4_locations_if([[
|
||||||
`yyls': related to locations.]])[
|
'yyls': related to locations.]])[
|
||||||
|
|
||||||
Refer to the stacks through separate pointers, to allow yyoverflow
|
Refer to the stacks through separate pointers, to allow yyoverflow
|
||||||
to reallocate them elsewhere. */
|
to reallocate them elsewhere. */
|
||||||
@@ -468,7 +468,7 @@ b4_push_if([], [b4_lac_if([], [[
|
|||||||
# endif]])])[
|
# endif]])])[
|
||||||
|
|
||||||
# ifdef YYSTACK_ALLOC
|
# ifdef YYSTACK_ALLOC
|
||||||
/* Pacify GCC's `empty if-body' warning. */
|
/* Pacify GCC's 'empty if-body' warning. */
|
||||||
# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
|
# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
|
||||||
# ifndef YYSTACK_ALLOC_MAXIMUM
|
# ifndef YYSTACK_ALLOC_MAXIMUM
|
||||||
/* The OS might guarantee only one guard page at the bottom of the stack,
|
/* The OS might guarantee only one guard page at the bottom of the stack,
|
||||||
@@ -1654,7 +1654,7 @@ yyreduce:
|
|||||||
yylen = yyr2[yyn];
|
yylen = yyr2[yyn];
|
||||||
|
|
||||||
/* If YYLEN is nonzero, implement the default value of the action:
|
/* If YYLEN is nonzero, implement the default value of the action:
|
||||||
`$$ = $1'.
|
'$$ = $1'.
|
||||||
|
|
||||||
Otherwise, the following line sets YYVAL to garbage.
|
Otherwise, the following line sets YYVAL to garbage.
|
||||||
This behavior is undocumented and Bison
|
This behavior is undocumented and Bison
|
||||||
@@ -1702,7 +1702,7 @@ yyreduce:
|
|||||||
*++yyvsp = yyval;]b4_locations_if([
|
*++yyvsp = yyval;]b4_locations_if([
|
||||||
*++yylsp = yyloc;])[
|
*++yylsp = yyloc;])[
|
||||||
|
|
||||||
/* Now `shift' the result of the reduction. Determine what state
|
/* Now 'shift' the result of the reduction. Determine what state
|
||||||
that goes to, based on the state we popped back to and the rule
|
that goes to, based on the state we popped back to and the rule
|
||||||
number reduced by. */
|
number reduced by. */
|
||||||
|
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ MOSTLYCLEANFILES += $(top_srcdir)/doc/*.t
|
|||||||
CROSS_OPTIONS_PL = $(top_srcdir)/build-aux/cross-options.pl
|
CROSS_OPTIONS_PL = $(top_srcdir)/build-aux/cross-options.pl
|
||||||
CROSS_OPTIONS_TEXI = $(top_srcdir)/doc/cross-options.texi
|
CROSS_OPTIONS_TEXI = $(top_srcdir)/doc/cross-options.texi
|
||||||
$(CROSS_OPTIONS_TEXI): doc/bison.help $(CROSS_OPTIONS_PL)
|
$(CROSS_OPTIONS_TEXI): doc/bison.help $(CROSS_OPTIONS_PL)
|
||||||
# Create $@~ which is the previous contents. Don't use `mv' here so
|
# Create $@~ which is the previous contents. Don't use 'mv' here so
|
||||||
# that even if we are interrupted, the file is still available for
|
# that even if we are interrupted, the file is still available for
|
||||||
# diff in the next run. Note that $@ might not exist yet.
|
# diff in the next run. Note that $@ might not exist yet.
|
||||||
$(AM_V_GEN){ test ! -f $@ || cat $@; } >$@~
|
$(AM_V_GEN){ test ! -f $@ || cat $@; } >$@~
|
||||||
|
|||||||
@@ -204,9 +204,9 @@ Format the list of directives for Bison for bench named C<$bench>.
|
|||||||
sub directives($@)
|
sub directives($@)
|
||||||
{
|
{
|
||||||
my ($bench, @directive) = @_;
|
my ($bench, @directive) = @_;
|
||||||
my $res = "/* Directives for bench `$bench'. */\n";
|
my $res = "/* Directives for bench '$bench'. */\n";
|
||||||
$res .= join ("\n", @directive) . "\n";
|
$res .= join ("\n", @directive) . "\n";
|
||||||
$res .= "/* End of directives for bench `$bench'. */\n";
|
$res .= "/* End of directives for bench '$bench'. */\n";
|
||||||
return $res;
|
return $res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -403,7 +403,7 @@ conflicts_solve (void)
|
|||||||
set_conflicts (states[i], errors);
|
set_conflicts (states[i], errors);
|
||||||
|
|
||||||
/* For uniformity of the code, make sure all the states have a valid
|
/* For uniformity of the code, make sure all the states have a valid
|
||||||
`errs' member. */
|
'errs' member. */
|
||||||
if (!states[i]->errs)
|
if (!states[i]->errs)
|
||||||
states[i]->errs = errs_new (0, 0);
|
states[i]->errs = errs_new (0, 0);
|
||||||
}
|
}
|
||||||
|
|||||||
26
src/files.c
26
src/files.c
@@ -34,7 +34,7 @@
|
|||||||
#include "getargs.h"
|
#include "getargs.h"
|
||||||
#include "gram.h"
|
#include "gram.h"
|
||||||
|
|
||||||
/* Initializing some values below (such SPEC_NAME_PREFIX to `yy') is
|
/* Initializing some values below (such SPEC_NAME_PREFIX to 'yy') is
|
||||||
tempting, but don't do that: for the time being our handling of the
|
tempting, but don't do that: for the time being our handling of the
|
||||||
%directive vs --option leaves precedence to the options by deciding
|
%directive vs --option leaves precedence to the options by deciding
|
||||||
that if a %directive sets a variable which is really set (i.e., not
|
that if a %directive sets a variable which is really set (i.e., not
|
||||||
@@ -58,20 +58,20 @@ uniqstr grammar_file = NULL;
|
|||||||
uniqstr current_file = NULL;
|
uniqstr current_file = NULL;
|
||||||
|
|
||||||
/* If --output=dir/foo.c was specified,
|
/* If --output=dir/foo.c was specified,
|
||||||
DIR_PREFIX is `dir/' and ALL_BUT_EXT and ALL_BUT_TAB_EXT are `dir/foo'.
|
DIR_PREFIX is 'dir/' and ALL_BUT_EXT and ALL_BUT_TAB_EXT are 'dir/foo'.
|
||||||
|
|
||||||
If --output=dir/foo.tab.c was specified, DIR_PREFIX is `dir/',
|
If --output=dir/foo.tab.c was specified, DIR_PREFIX is 'dir/',
|
||||||
ALL_BUT_EXT is `dir/foo.tab', and ALL_BUT_TAB_EXT is `dir/foo'.
|
ALL_BUT_EXT is 'dir/foo.tab', and ALL_BUT_TAB_EXT is 'dir/foo'.
|
||||||
|
|
||||||
If --output was not specified but --file-prefix=dir/foo was specified,
|
If --output was not specified but --file-prefix=dir/foo was specified,
|
||||||
ALL_BUT_EXT = `foo.tab' and ALL_BUT_TAB_EXT = `foo'.
|
ALL_BUT_EXT = 'foo.tab' and ALL_BUT_TAB_EXT = 'foo'.
|
||||||
|
|
||||||
If neither --output nor --file was specified but the input grammar
|
If neither --output nor --file was specified but the input grammar
|
||||||
is name dir/foo.y, ALL_BUT_EXT and ALL_BUT_TAB_EXT are `foo'.
|
is name dir/foo.y, ALL_BUT_EXT and ALL_BUT_TAB_EXT are 'foo'.
|
||||||
|
|
||||||
If neither --output nor --file was specified, DIR_PREFIX is the
|
If neither --output nor --file was specified, DIR_PREFIX is the
|
||||||
empty string (meaning the current directory); otherwise it is
|
empty string (meaning the current directory); otherwise it is
|
||||||
`dir/'. */
|
'dir/'. */
|
||||||
|
|
||||||
char *all_but_ext;
|
char *all_but_ext;
|
||||||
static char *all_but_tab_ext;
|
static char *all_but_tab_ext;
|
||||||
@@ -79,7 +79,7 @@ char *dir_prefix;
|
|||||||
|
|
||||||
/* C source file extension (the parser source). */
|
/* C source file extension (the parser source). */
|
||||||
static char *src_extension = NULL;
|
static char *src_extension = NULL;
|
||||||
/* Header file extension (if option ``-d'' is specified). */
|
/* Header file extension (if option '`-d'' is specified). */
|
||||||
static char *header_extension = NULL;
|
static char *header_extension = NULL;
|
||||||
|
|
||||||
/*-----------------------------------------------------------------.
|
/*-----------------------------------------------------------------.
|
||||||
@@ -191,7 +191,7 @@ compute_exts_from_src (const char *ext)
|
|||||||
*EXT points to the last period in the basename, or NULL if none.
|
*EXT points to the last period in the basename, or NULL if none.
|
||||||
|
|
||||||
If there is no *EXT, *TAB is NULL. Otherwise, *TAB points to
|
If there is no *EXT, *TAB is NULL. Otherwise, *TAB points to
|
||||||
`.tab' or `_tab' if present right before *EXT, or is NULL. *TAB
|
'.tab' or '_tab' if present right before *EXT, or is NULL. *TAB
|
||||||
cannot be equal to *BASE.
|
cannot be equal to *BASE.
|
||||||
|
|
||||||
None are allocated, they are simply pointers to parts of FILE_NAME.
|
None are allocated, they are simply pointers to parts of FILE_NAME.
|
||||||
@@ -222,7 +222,7 @@ file_name_split (const char *file_name,
|
|||||||
*ext = strrchr (*base, '.');
|
*ext = strrchr (*base, '.');
|
||||||
*tab = NULL;
|
*tab = NULL;
|
||||||
|
|
||||||
/* If there is an extension, check if there is a `.tab' part right
|
/* If there is an extension, check if there is a '.tab' part right
|
||||||
before. */
|
before. */
|
||||||
if (*ext)
|
if (*ext)
|
||||||
{
|
{
|
||||||
@@ -270,7 +270,7 @@ compute_file_name_parts (void)
|
|||||||
|
|
||||||
if (spec_file_prefix)
|
if (spec_file_prefix)
|
||||||
{
|
{
|
||||||
/* If --file-prefix=foo was specified, ALL_BUT_TAB_EXT = `foo'. */
|
/* If --file-prefix=foo was specified, ALL_BUT_TAB_EXT = 'foo'. */
|
||||||
dir_prefix =
|
dir_prefix =
|
||||||
xstrndup (spec_file_prefix,
|
xstrndup (spec_file_prefix,
|
||||||
last_component (spec_file_prefix) - spec_file_prefix);
|
last_component (spec_file_prefix) - spec_file_prefix);
|
||||||
@@ -278,14 +278,14 @@ compute_file_name_parts (void)
|
|||||||
}
|
}
|
||||||
else if (yacc_flag)
|
else if (yacc_flag)
|
||||||
{
|
{
|
||||||
/* If --yacc, then the output is `y.tab.c'. */
|
/* If --yacc, then the output is 'y.tab.c'. */
|
||||||
dir_prefix = xstrdup ("");
|
dir_prefix = xstrdup ("");
|
||||||
all_but_tab_ext = xstrdup ("y");
|
all_but_tab_ext = xstrdup ("y");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* Otherwise, ALL_BUT_TAB_EXT is computed from the input
|
/* Otherwise, ALL_BUT_TAB_EXT is computed from the input
|
||||||
grammar: `foo/bar.yy' => `bar'. */
|
grammar: 'foo/bar.yy' => 'bar'. */
|
||||||
dir_prefix = xstrdup ("");
|
dir_prefix = xstrdup ("");
|
||||||
all_but_tab_ext =
|
all_but_tab_ext =
|
||||||
xstrndup (base, (strlen (base) - (ext ? strlen (ext) : 0)));
|
xstrndup (base, (strlen (base) - (ext ? strlen (ext) : 0)));
|
||||||
|
|||||||
@@ -538,7 +538,7 @@ static struct option const long_options[] =
|
|||||||
};
|
};
|
||||||
|
|
||||||
/* Under DOS, there is no difference on the case. This can be
|
/* Under DOS, there is no difference on the case. This can be
|
||||||
troublesome when looking for `.tab' etc. */
|
troublesome when looking for '.tab' etc. */
|
||||||
#ifdef MSDOS
|
#ifdef MSDOS
|
||||||
# define AS_FILE_NAME(File) (strlwr (File), (File))
|
# define AS_FILE_NAME(File) (strlwr (File), (File))
|
||||||
#else
|
#else
|
||||||
|
|||||||
12
src/gram.h
12
src/gram.h
@@ -35,7 +35,7 @@
|
|||||||
|
|
||||||
The rules receive rule numbers 1 to NRULES in the order they are
|
The rules receive rule numbers 1 to NRULES in the order they are
|
||||||
written. More precisely Bison augments the grammar with the
|
written. More precisely Bison augments the grammar with the
|
||||||
initial rule, `$accept: START-SYMBOL $end', which is numbered 1,
|
initial rule, '$accept: START-SYMBOL $end', which is numbered 1,
|
||||||
all the user rules are 2, 3 etc. Each time a rule number is
|
all the user rules are 2, 3 etc. Each time a rule number is
|
||||||
presented to the user, we subtract 1, so *displayed* rule numbers
|
presented to the user, we subtract 1, so *displayed* rule numbers
|
||||||
are 0, 1, 2...
|
are 0, 1, 2...
|
||||||
@@ -61,7 +61,7 @@
|
|||||||
RULES[R].prec -- the symbol providing the precedence level of R.
|
RULES[R].prec -- the symbol providing the precedence level of R.
|
||||||
|
|
||||||
RULES[R].precsym -- the symbol attached (via %prec) to give its
|
RULES[R].precsym -- the symbol attached (via %prec) to give its
|
||||||
precedence to R. Of course, if set, it is equal to `prec', but we
|
precedence to R. Of course, if set, it is equal to 'prec', but we
|
||||||
need to distinguish one from the other when reducing: a symbol used
|
need to distinguish one from the other when reducing: a symbol used
|
||||||
in a %prec is not useless.
|
in a %prec is not useless.
|
||||||
|
|
||||||
@@ -205,11 +205,11 @@ extern rule *rules;
|
|||||||
/* A function that selects a rule. */
|
/* A function that selects a rule. */
|
||||||
typedef bool (*rule_filter) (rule const *);
|
typedef bool (*rule_filter) (rule const *);
|
||||||
|
|
||||||
/* Return true IFF the rule has a `number' smaller than NRULES. That is, it is
|
/* Return true IFF the rule has a 'number' smaller than NRULES. That is, it is
|
||||||
useful in the grammar. */
|
useful in the grammar. */
|
||||||
bool rule_useful_in_grammar_p (rule const *r);
|
bool rule_useful_in_grammar_p (rule const *r);
|
||||||
|
|
||||||
/* Return true IFF the rule has a `number' higher than NRULES. That is, it is
|
/* Return true IFF the rule has a 'number' higher than NRULES. That is, it is
|
||||||
useless in the grammar. */
|
useless in the grammar. */
|
||||||
bool rule_useless_in_grammar_p (rule const *r);
|
bool rule_useless_in_grammar_p (rule const *r);
|
||||||
|
|
||||||
@@ -262,8 +262,8 @@ void grammar_rules_print_xml (FILE *out, int level);
|
|||||||
void grammar_dump (FILE *out, const char *title);
|
void grammar_dump (FILE *out, const char *title);
|
||||||
|
|
||||||
/* Report on STDERR the rules that are not flagged USEFUL, using the
|
/* Report on STDERR the rules that are not flagged USEFUL, using the
|
||||||
MESSAGE (which can be `rule useless in grammar' when invoked after grammar
|
MESSAGE (which can be 'rule useless in grammar' when invoked after grammar
|
||||||
reduction, or `rule useless in parser due to conflicts' after conflicts
|
reduction, or 'rule useless in parser due to conflicts' after conflicts
|
||||||
were taken into account). */
|
were taken into account). */
|
||||||
void grammar_rules_useless_report (const char *message);
|
void grammar_rules_useless_report (const char *message);
|
||||||
|
|
||||||
|
|||||||
@@ -342,7 +342,7 @@ state_lookahead_tokens_count (state *s, bool default_reduction_only_for_accept)
|
|||||||
/* We need a lookahead either to distinguish different reductions
|
/* We need a lookahead either to distinguish different reductions
|
||||||
(i.e., there are two or more), or to distinguish a reduction from a
|
(i.e., there are two or more), or to distinguish a reduction from a
|
||||||
shift. Otherwise, it is straightforward, and the state is
|
shift. Otherwise, it is straightforward, and the state is
|
||||||
`consistent'. However, do not treat a state with any reductions as
|
'consistent'. However, do not treat a state with any reductions as
|
||||||
consistent unless it is the accepting state (because there is never
|
consistent unless it is the accepting state (because there is never
|
||||||
a lookahead token that makes sense there, and so no lookahead token
|
a lookahead token that makes sense there, and so no lookahead token
|
||||||
should be read) if the user has otherwise disabled default
|
should be read) if the user has otherwise disabled default
|
||||||
|
|||||||
@@ -219,7 +219,7 @@ void
|
|||||||
boundary_set_from_string (boundary *bound, char *loc_str)
|
boundary_set_from_string (boundary *bound, char *loc_str)
|
||||||
{
|
{
|
||||||
/* Must search in reverse since the file name field may
|
/* Must search in reverse since the file name field may
|
||||||
* contain `.' or `:'. */
|
* contain '.' or ':'. */
|
||||||
char *delim = strrchr (loc_str, '.');
|
char *delim = strrchr (loc_str, '.');
|
||||||
aver (delim);
|
aver (delim);
|
||||||
*delim = '\0';
|
*delim = '\0';
|
||||||
|
|||||||
@@ -121,7 +121,7 @@ location_cmp (location a, location b)
|
|||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* LOC_STR must be formatted as `file:line.column', it will be modified. */
|
/* LOC_STR must be formatted as 'file:line.column', it will be modified. */
|
||||||
void boundary_set_from_string (boundary *bound, char *loc_str);
|
void boundary_set_from_string (boundary *bound, char *loc_str);
|
||||||
|
|
||||||
#endif /* ! defined LOCATION_H_ */
|
#endif /* ! defined LOCATION_H_ */
|
||||||
|
|||||||
@@ -254,7 +254,7 @@ muscle_find (char const *key)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* In the format `file_name:line.column', append BOUND to MUSCLE. Use
|
/* In the format 'file_name:line.column', append BOUND to MUSCLE. Use
|
||||||
digraphs for special characters in the file name. */
|
digraphs for special characters in the file name. */
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -270,7 +270,7 @@ muscle_boundary_grow (char const *key, boundary bound)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* In the format `[[file_name:line.column]], [[file_name:line.column]]',
|
/* In the format '[[file_name:line.column]], [[file_name:line.column]]',
|
||||||
append LOC to MUSCLE. Use digraphs for special characters in each
|
append LOC to MUSCLE. Use digraphs for special characters in each
|
||||||
file name. */
|
file name. */
|
||||||
|
|
||||||
@@ -523,8 +523,8 @@ muscle_percent_define_ensure (char const *variable, location loc,
|
|||||||
char const *val = value ? "" : "false";
|
char const *val = value ? "" : "false";
|
||||||
char const *name = UNIQSTR_CONCAT ("percent_define(", variable, ")");
|
char const *name = UNIQSTR_CONCAT ("percent_define(", variable, ")");
|
||||||
|
|
||||||
/* %pure-parser is deprecated in favor of `%define api.pure', so use
|
/* %pure-parser is deprecated in favor of '%define api.pure', so use
|
||||||
`%define api.pure' in a backward-compatible manner here. First,
|
'%define api.pure' in a backward-compatible manner here. First,
|
||||||
don't complain if %pure-parser is specified multiple times. */
|
don't complain if %pure-parser is specified multiple times. */
|
||||||
if (!muscle_find_const (name))
|
if (!muscle_find_const (name))
|
||||||
muscle_percent_define_insert (variable, loc, val,
|
muscle_percent_define_insert (variable, loc, val,
|
||||||
|
|||||||
@@ -92,7 +92,7 @@ void muscle_pair_list_grow (const char *muscle,
|
|||||||
|
|
||||||
/* Grow KEY for the occurrence of the name USER_NAME at LOC appropriately for
|
/* Grow KEY for the occurrence of the name USER_NAME at LOC appropriately for
|
||||||
use with b4_check_user_names in ../data/bison.m4. USER_NAME is not escaped
|
use with b4_check_user_names in ../data/bison.m4. USER_NAME is not escaped
|
||||||
with digraphs, so it must not contain `[' or `]'. */
|
with digraphs, so it must not contain '[' or ']'. */
|
||||||
void muscle_user_name_list_grow (char const *key, char const *user_name,
|
void muscle_user_name_list_grow (char const *key, char const *user_name,
|
||||||
location loc);
|
location loc);
|
||||||
|
|
||||||
|
|||||||
@@ -90,7 +90,7 @@ Name (char const *name, \
|
|||||||
\
|
\
|
||||||
lmin = min; \
|
lmin = min; \
|
||||||
lmax = max; \
|
lmax = max; \
|
||||||
/* Build `NAME_min' and `NAME_max' in the obstack. */ \
|
/* Build 'NAME_min' and 'NAME_max' in the obstack. */ \
|
||||||
obstack_printf (&format_obstack, "%s_min", name); \
|
obstack_printf (&format_obstack, "%s_min", name); \
|
||||||
MUSCLE_INSERT_LONG_INT (obstack_finish0 (&format_obstack), lmin); \
|
MUSCLE_INSERT_LONG_INT (obstack_finish0 (&format_obstack), lmin); \
|
||||||
obstack_printf (&format_obstack, "%s_max", name); \
|
obstack_printf (&format_obstack, "%s_max", name); \
|
||||||
|
|||||||
@@ -464,7 +464,7 @@ typedef short int yytype_int16;
|
|||||||
/* The parser invokes alloca or malloc; define the necessary symbols. */
|
/* The parser invokes alloca or malloc; define the necessary symbols. */
|
||||||
|
|
||||||
# ifdef YYSTACK_ALLOC
|
# ifdef YYSTACK_ALLOC
|
||||||
/* Pacify GCC's `empty if-body' warning. */
|
/* Pacify GCC's 'empty if-body' warning. */
|
||||||
# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
|
# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
|
||||||
# ifndef YYSTACK_ALLOC_MAXIMUM
|
# ifndef YYSTACK_ALLOC_MAXIMUM
|
||||||
/* The OS might guarantee only one guard page at the bottom of the stack,
|
/* The OS might guarantee only one guard page at the bottom of the stack,
|
||||||
@@ -1794,9 +1794,9 @@ YYLTYPE yylloc = yyloc_default;
|
|||||||
int yyerrstatus;
|
int yyerrstatus;
|
||||||
|
|
||||||
/* The stacks and their tools:
|
/* The stacks and their tools:
|
||||||
`yyss': related to states.
|
'yyss': related to states.
|
||||||
`yyvs': related to semantic values.
|
'yyvs': related to semantic values.
|
||||||
`yyls': related to locations.
|
'yyls': related to locations.
|
||||||
|
|
||||||
Refer to the stacks through separate pointers, to allow yyoverflow
|
Refer to the stacks through separate pointers, to allow yyoverflow
|
||||||
to reallocate them elsewhere. */
|
to reallocate them elsewhere. */
|
||||||
@@ -2050,7 +2050,7 @@ yyreduce:
|
|||||||
yylen = yyr2[yyn];
|
yylen = yyr2[yyn];
|
||||||
|
|
||||||
/* If YYLEN is nonzero, implement the default value of the action:
|
/* If YYLEN is nonzero, implement the default value of the action:
|
||||||
`$$ = $1'.
|
'$$ = $1'.
|
||||||
|
|
||||||
Otherwise, the following line sets YYVAL to garbage.
|
Otherwise, the following line sets YYVAL to garbage.
|
||||||
This behavior is undocumented and Bison
|
This behavior is undocumented and Bison
|
||||||
@@ -2780,7 +2780,7 @@ yyreduce:
|
|||||||
*++yyvsp = yyval;
|
*++yyvsp = yyval;
|
||||||
*++yylsp = yyloc;
|
*++yylsp = yyloc;
|
||||||
|
|
||||||
/* Now `shift' the result of the reduction. Determine what state
|
/* Now 'shift' the result of the reduction. Determine what state
|
||||||
that goes to, based on the state we popped back to and the rule
|
that goes to, based on the state we popped back to and the rule
|
||||||
number reduced by. */
|
number reduced by. */
|
||||||
|
|
||||||
|
|||||||
@@ -636,7 +636,7 @@ named_ref.opt:
|
|||||||
`---------------------------*/
|
`---------------------------*/
|
||||||
|
|
||||||
/* The STRING form of variable is deprecated and is not M4-friendly.
|
/* The STRING form of variable is deprecated and is not M4-friendly.
|
||||||
For example, M4 fails for `%define "[" "value"'. */
|
For example, M4 fails for '%define "[" "value"'. */
|
||||||
variable:
|
variable:
|
||||||
ID
|
ID
|
||||||
| STRING { $$ = uniqstr_new ($1); }
|
| STRING { $$ = uniqstr_new ($1); }
|
||||||
|
|||||||
@@ -209,7 +209,7 @@ print_errs (FILE *out, int level, state *s)
|
|||||||
|
|
||||||
|
|
||||||
/*-------------------------------------------------------------------------.
|
/*-------------------------------------------------------------------------.
|
||||||
| Report a reduction of RULE on LOOKAHEAD_TOKEN (which can be `default'). |
|
| Report a reduction of RULE on LOOKAHEAD_TOKEN (which can be 'default'). |
|
||||||
| If not ENABLED, the rule is masked by a shift or a reduce (S/R and |
|
| If not ENABLED, the rule is masked by a shift or a reduce (S/R and |
|
||||||
| R/R conflicts). |
|
| R/R conflicts). |
|
||||||
`-------------------------------------------------------------------------*/
|
`-------------------------------------------------------------------------*/
|
||||||
|
|||||||
@@ -206,7 +206,7 @@ print_errs (FILE *out, state *s)
|
|||||||
|
|
||||||
|
|
||||||
/*-------------------------------------------------------------------------.
|
/*-------------------------------------------------------------------------.
|
||||||
| Report a reduction of RULE on LOOKAHEAD_TOKEN (which can be `default'). |
|
| Report a reduction of RULE on LOOKAHEAD_TOKEN (which can be 'default'). |
|
||||||
| If not ENABLED, the rule is masked by a shift or a reduce (S/R and |
|
| If not ENABLED, the rule is masked by a shift or a reduce (S/R and |
|
||||||
| R/R conflicts). |
|
| R/R conflicts). |
|
||||||
`-------------------------------------------------------------------------*/
|
`-------------------------------------------------------------------------*/
|
||||||
@@ -514,7 +514,7 @@ print_results (void)
|
|||||||
print_grammar (out);
|
print_grammar (out);
|
||||||
|
|
||||||
/* If the whole state item sets, not only the kernels, are wanted,
|
/* If the whole state item sets, not only the kernels, are wanted,
|
||||||
`closure' will be run, which needs memory allocation/deallocation. */
|
'closure' will be run, which needs memory allocation/deallocation. */
|
||||||
if (report_flag & report_itemsets)
|
if (report_flag & report_itemsets)
|
||||||
new_closure (nritems);
|
new_closure (nritems);
|
||||||
/* Storage for print_reductions. */
|
/* Storage for print_reductions. */
|
||||||
|
|||||||
10
src/reader.c
10
src/reader.c
@@ -321,7 +321,7 @@ grammar_rule_check (const symbol_list *r)
|
|||||||
bool midrule_warning = false;
|
bool midrule_warning = false;
|
||||||
if (!l->action_props.is_value_used
|
if (!l->action_props.is_value_used
|
||||||
&& symbol_should_be_used (l, &midrule_warning)
|
&& symbol_should_be_used (l, &midrule_warning)
|
||||||
/* The default action, $$ = $1, `uses' both. */
|
/* The default action, $$ = $1, 'uses' both. */
|
||||||
&& (r->action_props.code || (n != 0 && n != 1)))
|
&& (r->action_props.code || (n != 0 && n != 1)))
|
||||||
{
|
{
|
||||||
warnings warn_flag = midrule_warning ? Wmidrule_values : Wother;
|
warnings warn_flag = midrule_warning ? Wmidrule_values : Wother;
|
||||||
@@ -562,7 +562,7 @@ packgram (void)
|
|||||||
rules[ruleno].action_location = p->action_props.location;
|
rules[ruleno].action_location = p->action_props.location;
|
||||||
rules[ruleno].is_predicate = p->action_props.is_predicate;
|
rules[ruleno].is_predicate = p->action_props.is_predicate;
|
||||||
|
|
||||||
/* If the midrule's $$ is set or its $n is used, remove the `$' from the
|
/* If the midrule's $$ is set or its $n is used, remove the '$' from the
|
||||||
symbol name so that it's a user-defined symbol so that the default
|
symbol name so that it's a user-defined symbol so that the default
|
||||||
%destructor and %printer apply. */
|
%destructor and %printer apply. */
|
||||||
if (p->midrule_parent_rule
|
if (p->midrule_parent_rule
|
||||||
@@ -764,11 +764,11 @@ check_and_convert_grammar (void)
|
|||||||
action type checking.
|
action type checking.
|
||||||
|
|
||||||
Before invoking grammar_rule_check (in packgram below) on any rule, make
|
Before invoking grammar_rule_check (in packgram below) on any rule, make
|
||||||
sure all actions have already been scanned in order to set `used' flags.
|
sure all actions have already been scanned in order to set 'used' flags.
|
||||||
Otherwise, checking that a midrule's $$ should be set will not always work
|
Otherwise, checking that a midrule's $$ should be set will not always work
|
||||||
properly because the check must forward-reference the midrule's parent
|
properly because the check must forward-reference the midrule's parent
|
||||||
rule. For the same reason, all the `used' flags must be set before
|
rule. For the same reason, all the 'used' flags must be set before
|
||||||
checking whether to remove `$' from any midrule symbol name (also in
|
checking whether to remove '$' from any midrule symbol name (also in
|
||||||
packgram). */
|
packgram). */
|
||||||
{
|
{
|
||||||
symbol_list *sym;
|
symbol_list *sym;
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ static bitset P;
|
|||||||
static bitset V;
|
static bitset V;
|
||||||
|
|
||||||
/* Set of symbols used to define rule precedence (so they are
|
/* Set of symbols used to define rule precedence (so they are
|
||||||
`useless', but no warning should be issued). */
|
'useless', but no warning should be issued). */
|
||||||
static bitset V1;
|
static bitset V1;
|
||||||
|
|
||||||
static rule_number nuseful_productions;
|
static rule_number nuseful_productions;
|
||||||
|
|||||||
@@ -72,7 +72,7 @@ static void fail_for_invalid_at (char const *at);
|
|||||||
"@@" fputc ('@', yyout);
|
"@@" fputc ('@', yyout);
|
||||||
"@{" fputc ('[', yyout);
|
"@{" fputc ('[', yyout);
|
||||||
"@}" fputc (']', yyout);
|
"@}" fputc (']', yyout);
|
||||||
"@`" continue; /* Used by b4_cat in ../data/bison.m4. */
|
"@'" continue; /* Used by b4_cat in ../data/bison.m4. */
|
||||||
@\n continue;
|
@\n continue;
|
||||||
|
|
||||||
"@oline@" fprintf (yyout, "%d", out_lineno + 1);
|
"@oline@" fprintf (yyout, "%d", out_lineno + 1);
|
||||||
@@ -83,7 +83,7 @@ static void fail_for_invalid_at (char const *at);
|
|||||||
"@output(" at_init (&argc, argv, &at_ptr, &at_output);
|
"@output(" at_init (&argc, argv, &at_ptr, &at_output);
|
||||||
|
|
||||||
/* This pattern must not match more than the previous @ patterns. */
|
/* This pattern must not match more than the previous @ patterns. */
|
||||||
@[^@{}`(\n]* fail_for_invalid_at (yytext);
|
@[^@{}'(\n]* fail_for_invalid_at (yytext);
|
||||||
\n out_lineno++; ECHO;
|
\n out_lineno++; ECHO;
|
||||||
[^@\n]+ ECHO;
|
[^@\n]+ ECHO;
|
||||||
|
|
||||||
@@ -103,7 +103,7 @@ static void fail_for_invalid_at (char const *at);
|
|||||||
"@@" obstack_1grow (&obstack_for_string, '@');
|
"@@" obstack_1grow (&obstack_for_string, '@');
|
||||||
"@{" obstack_1grow (&obstack_for_string, '[');
|
"@{" obstack_1grow (&obstack_for_string, '[');
|
||||||
"@}" obstack_1grow (&obstack_for_string, ']');
|
"@}" obstack_1grow (&obstack_for_string, ']');
|
||||||
"@`" continue; /* For starting an argument that begins with whitespace. */
|
"@'" continue; /* For starting an argument that begins with whitespace. */
|
||||||
@\n continue;
|
@\n continue;
|
||||||
|
|
||||||
@[,)] {
|
@[,)] {
|
||||||
|
|||||||
@@ -128,9 +128,9 @@ struct symbol
|
|||||||
/** Undefined user number. */
|
/** Undefined user number. */
|
||||||
# define USER_NUMBER_UNDEFINED -1
|
# define USER_NUMBER_UNDEFINED -1
|
||||||
|
|
||||||
/* `symbol->user_token_number == USER_NUMBER_HAS_STRING_ALIAS' means
|
/* 'symbol->user_token_number == USER_NUMBER_HAS_STRING_ALIAS' means
|
||||||
this symbol has a literal string alias. For instance, `%token foo
|
this symbol has a literal string alias. For instance, '%token foo
|
||||||
"foo"' has `"foo"' numbered regularly, and `foo' numbered as
|
"foo"' has '"foo"' numbered regularly, and 'foo' numbered as
|
||||||
USER_NUMBER_HAS_STRING_ALIAS. */
|
USER_NUMBER_HAS_STRING_ALIAS. */
|
||||||
# define USER_NUMBER_HAS_STRING_ALIAS -9991
|
# define USER_NUMBER_HAS_STRING_ALIAS -9991
|
||||||
|
|
||||||
|
|||||||
@@ -99,7 +99,7 @@ typedef size_t uintptr_t;
|
|||||||
# endif
|
# endif
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
/* The __-protected variants of `format' and `printf' attributes
|
/* The __-protected variants of 'format' and 'printf' attributes
|
||||||
are accepted by gcc versions 2.6.4 (effectively 2.7) and later. */
|
are accepted by gcc versions 2.6.4 (effectively 2.7) and later. */
|
||||||
# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7)
|
# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7)
|
||||||
# define __format__ format
|
# define __format__ format
|
||||||
|
|||||||
14
src/tables.c
14
src/tables.c
@@ -35,7 +35,7 @@
|
|||||||
#include "tables.h"
|
#include "tables.h"
|
||||||
|
|
||||||
/* Several tables are indexed both by state and nonterminal numbers.
|
/* Several tables are indexed both by state and nonterminal numbers.
|
||||||
We call such an index a `vector'; i.e., a vector is either a state
|
We call such an index a 'vector'; i.e., a vector is either a state
|
||||||
or a nonterminal number.
|
or a nonterminal number.
|
||||||
|
|
||||||
Of course vector_number_t ought to be wide enough to contain
|
Of course vector_number_t ought to be wide enough to contain
|
||||||
@@ -90,18 +90,18 @@ static base_number *width;
|
|||||||
|
|
||||||
/* For a given state, N = ACTROW[SYMBOL]:
|
/* For a given state, N = ACTROW[SYMBOL]:
|
||||||
|
|
||||||
If N = 0, stands for `run the default action'.
|
If N = 0, stands for 'run the default action'.
|
||||||
If N = MIN, stands for `raise a syntax error'.
|
If N = MIN, stands for 'raise a syntax error'.
|
||||||
If N > 0, stands for `shift SYMBOL and go to n'.
|
If N > 0, stands for 'shift SYMBOL and go to n'.
|
||||||
If N < 0, stands for `reduce -N'. */
|
If N < 0, stands for 'reduce -N'. */
|
||||||
typedef int action_number;
|
typedef int action_number;
|
||||||
#define ACTION_NUMBER_MINIMUM INT_MIN
|
#define ACTION_NUMBER_MINIMUM INT_MIN
|
||||||
|
|
||||||
static action_number *actrow;
|
static action_number *actrow;
|
||||||
|
|
||||||
/* FROMS and TOS are reordered to be compressed. ORDER[VECTOR] is the
|
/* FROMS and TOS are reordered to be compressed. ORDER[VECTOR] is the
|
||||||
new vector number of VECTOR. We skip `empty' vectors (i.e.,
|
new vector number of VECTOR. We skip 'empty' vectors (i.e.,
|
||||||
TALLY[VECTOR] = 0), and call these `entries'. */
|
TALLY[VECTOR] = 0), and call these 'entries'. */
|
||||||
static vector_number *order;
|
static vector_number *order;
|
||||||
static int nentries;
|
static int nentries;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user