summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAkim Demaille <akim.demaille@gmail.com>2020-07-14 06:56:15 +0200
committerAkim Demaille <akim.demaille@gmail.com>2020-07-14 06:56:15 +0200
commit88bd814bf103123c4f820f0a4f8fee85f8a63047 (patch)
tree6cf96b367aa9ad919e7764505710917316b7869f
parent4f9ae5de0766515384925841c384f878257daed7 (diff)
downloadbison-88bd814bf103123c4f820f0a4f8fee85f8a63047.tar.gz
doc: update GLR sections
Reported by Christian Schoenebeck. * doc/bison.texi (GLR Parsers): Minor fixes. (Compiler Requirements for GLR): Remove, quite useless today.
-rw-r--r--doc/bison.texi54
1 files changed, 11 insertions, 43 deletions
diff --git a/doc/bison.texi b/doc/bison.texi
index d467497a..dcc3ca86 100644
--- a/doc/bison.texi
+++ b/doc/bison.texi
@@ -263,7 +263,6 @@ Writing GLR Parsers
* Merging GLR Parses:: Using GLR parsers to resolve ambiguities.
* GLR Semantic Actions:: Considerations for semantic values and deferred actions.
* Semantic Predicates:: Controlling a parse with arbitrary computations.
-* Compiler Requirements for GLR:: GLR parsers require a modern C compiler.
Examples
@@ -943,7 +942,6 @@ on the resulting values to produce an arbitrary merged result.
* Merging GLR Parses:: Using GLR parsers to resolve ambiguities.
* GLR Semantic Actions:: Considerations for semantic values and deferred actions.
* Semantic Predicates:: Controlling a parse with arbitrary computations.
-* Compiler Requirements for GLR:: GLR parsers require a modern C compiler.
@end menu
@node Simple GLR Parsers
@@ -1372,14 +1370,14 @@ widget:
@noindent
is one way to allow the same parser to handle two different syntaxes for
widgets. The clause preceded by @code{%?} is treated like an ordinary
-action, except that its text is treated as an expression and is always
+midrule action, except that its text is handled as an expression and is always
evaluated immediately (even when in nondeterministic mode). If the
expression yields 0 (false), the clause is treated as a syntax error,
which, in a nondeterministic parser, causes the stack in which it is reduced
-to die. In a deterministic parser, it acts like YYERROR.
+to die. In a deterministic parser, it acts like @code{YYERROR}.
As the example shows, predicates otherwise look like semantic actions, and
-therefore you must be take them into account when determining the numbers
+therefore you must take them into account when determining the numbers
to use for denoting the semantic values of right-hand side symbols.
Predicate actions, however, have no defined value, and may not be given
labels.
@@ -1393,7 +1391,7 @@ widget:
@{ if (!new_syntax) YYERROR; @}
"widget" id new_args @{ $$ = f($3, $4); @}
| @{ if (new_syntax) YYERROR; @}
- "widget" id old_args @{ $$ = f($3, $4); @}
+ "widget" id old_args @{ $$ = f($3, $4); @}
;
@end example
@@ -1411,36 +1409,6 @@ reports an error.
Finally, be careful in writing predicates: deferred actions have not been
evaluated, so that using them in a predicate will have undefined effects.
-@node Compiler Requirements for GLR
-@subsection Considerations when Compiling GLR Parsers
-@cindex @code{inline}
-@cindex GLR parsers and @code{inline}
-
-The GLR parsers require a compiler for ISO C89 or
-later. In addition, they use the @code{inline} keyword, which is not
-C89, but is C99 and is a common extension in pre-C99 compilers. It is
-up to the user of these parsers to handle
-portability issues. For instance, if using Autoconf and the Autoconf
-macro @code{AC_C_INLINE}, a mere
-
-@example
-%@{
- #include <config.h>
-%@}
-@end example
-
-@noindent
-will suffice. Otherwise, we suggest
-
-@example
-%@{
- #if (__STDC_VERSION__ < 199901 && ! defined __GNUC__ \
- && ! defined inline)
- # define inline
- #endif
-%@}
-@end example
-
@node Locations
@section Locations
@cindex location
@@ -14824,13 +14792,13 @@ Bison. See the file @file{ABOUT-NLS} for more information.
I can't build Bison because my C compiler is too old.
@end quotation
-Except for GLR parsers (@pxref{Compiler Requirements for GLR}), the C
-code that Bison generates requires only C89 or later. However, Bison
-itself requires common C99 features such as declarations after
-statements. Bison's @code{configure} script attempts to enable C99 (or
-later) support on compilers that default to pre-C99. If your compiler
-lacks these C99 features entirely, GCC may well be a better choice; or
-you can try upgrading to your compiler's latest version.
+Except for GLR parsers (which require C99), the C code that Bison generates
+requires only C89 or later. However, Bison itself requires common C99
+features such as declarations after statements. Bison's @code{configure}
+script attempts to enable C99 (or later) support on compilers that default
+to pre-C99. If your compiler lacks these C99 features entirely, GCC may
+well be a better choice; or you can try upgrading to your compiler's latest
+version.
@node Where can I find help?
@section Where can I find help?