help-bison
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Parsing a language with optional spaces


From: Akim Demaille
Subject: Re: Parsing a language with optional spaces
Date: Tue, 14 Jul 2020 07:02:36 +0200

Hi Christian,

> Le 13 juil. 2020 à 07:56, Akim Demaille <akim@lrde.epita.fr> a écrit :
> 
>> Le 12 juil. 2020 à 19:47, Christian Schoenebeck <schoenebeck@crudebyte.com> 
>> a écrit :
>> 
>> And BTW:
>> 
>>> The GLR parsers require a compiler for ISO C89 or later.
>> 
>> Tough requirement! ;-)
> 
> Yes, we could get rid of that mention, indeed.  Besides, Valentin recently
> pointed me to one very discreet place where glr.c actually had a declaration
> after a statement, so it was actually C99.
> 
> I'll clean that up, thanks!

I'm installing this.

commit 88bd814bf103123c4f820f0a4f8fee85f8a63047
Author: Akim Demaille <akim.demaille@gmail.com>
Date:   Tue Jul 14 06:56:15 2020 +0200

    doc: update GLR sections
    
    Reported by Christian Schoenebeck.
    
    * doc/bison.texi (GLR Parsers): Minor fixes.
    (Compiler Requirements for GLR): Remove, quite useless today.

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?




reply via email to

[Prev in Thread] Current Thread [Next in Thread]