]> git.saurik.com Git - bison.git/commitdiff
Regen.
authorAkim Demaille <akim@epita.fr>
Fri, 10 Aug 2001 09:35:01 +0000 (09:35 +0000)
committerAkim Demaille <akim@epita.fr>
Fri, 10 Aug 2001 09:35:01 +0000 (09:35 +0000)
doc/bison.info
doc/bison.info-3
doc/bison.info-4
doc/bison.info-5
doc/stamp-vti
doc/version.texi

index 86ca9ee946b7245f626e9d9dafa44d5b68dacd16..bb9e2009f7c758e6694629b50cde9f23d03689e7 100644 (file)
@@ -33,8 +33,8 @@ Indirect:
 bison.info-1: 1307
 bison.info-2: 50189
 bison.info-3: 99814
 bison.info-1: 1307
 bison.info-2: 50189
 bison.info-3: 99814
-bison.info-4: 149693
-bison.info-5: 196958
+bison.info-4: 148012
+bison.info-5: 190796
 \1f
 Tag Table:
 (Indirect)
 \1f
 Tag Table:
 (Indirect)
@@ -86,54 +86,54 @@ Node: Actions\7f95726
 Node: Action Types\7f98511
 Node: Mid-Rule Actions\7f99814
 Node: Locations\7f105384
 Node: Action Types\7f98511
 Node: Mid-Rule Actions\7f99814
 Node: Locations\7f105384
-Node: Location Type\7f106049
-Node: Actions and Locations\7f106607
-Node: Location Default Action\7f107771
-Node: Declarations\7f108978
-Node: Token Decl\7f110297
-Node: Precedence Decl\7f112310
-Node: Union Decl\7f113861
-Node: Type Decl\7f114705
-Node: Expect Decl\7f115611
-Node: Start Decl\7f117157
-Node: Pure Decl\7f117535
-Node: Decl Summary\7f119212
-Node: Multiple Parsers\7f124595
-Node: Interface\7f126089
-Node: Parser Function\7f126961
-Node: Lexical\7f127796
-Node: Calling Convention\7f129202
-Node: Token Values\7f131973
-Node: Token Positions\7f133122
-Node: Pure Calling\7f134007
-Node: Error Reporting\7f136939
-Node: Action Features\7f139061
-Node: Algorithm\7f142356
-Node: Look-Ahead\7f144649
-Node: Shift/Reduce\7f146781
-Node: Precedence\7f149693
-Node: Why Precedence\7f150344
-Node: Using Precedence\7f152209
-Node: Precedence Examples\7f153177
-Node: How Precedence\7f153878
-Node: Contextual Precedence\7f155027
-Node: Parser States\7f156818
-Node: Reduce/Reduce\7f158061
-Node: Mystery Conflicts\7f161622
-Node: Stack Overflow\7f165008
-Node: Error Recovery\7f166381
-Node: Context Dependency\7f171517
-Node: Semantic Tokens\7f172365
-Node: Lexical Tie-ins\7f175382
-Node: Tie-in Recovery\7f176930
-Node: Debugging\7f179102
-Node: Invocation\7f182403
-Node: Bison Options\7f183655
-Node: Environment Variables\7f187089
-Node: Option Cross Key\7f187937
-Node: VMS Invocation\7f188781
-Node: Table of Symbols\7f189565
-Node: Glossary\7f196958
-Node: Index\7f203248
+Node: Location Type\7f106032
+Node: Actions and Locations\7f106590
+Node: Location Default Action\7f108746
+Node: Declarations\7f110209
+Node: Token Decl\7f111528
+Node: Precedence Decl\7f113541
+Node: Union Decl\7f115092
+Node: Type Decl\7f115936
+Node: Expect Decl\7f116842
+Node: Start Decl\7f118388
+Node: Pure Decl\7f118766
+Node: Decl Summary\7f120443
+Node: Multiple Parsers\7f125826
+Node: Interface\7f127320
+Node: Parser Function\7f128192
+Node: Lexical\7f129027
+Node: Calling Convention\7f130433
+Node: Token Values\7f133204
+Node: Token Positions\7f134353
+Node: Pure Calling\7f135238
+Node: Error Reporting\7f138170
+Node: Action Features\7f140292
+Node: Algorithm\7f143587
+Node: Look-Ahead\7f145880
+Node: Shift/Reduce\7f148012
+Node: Precedence\7f150924
+Node: Why Precedence\7f151575
+Node: Using Precedence\7f153440
+Node: Precedence Examples\7f154408
+Node: How Precedence\7f155109
+Node: Contextual Precedence\7f156258
+Node: Parser States\7f158049
+Node: Reduce/Reduce\7f159292
+Node: Mystery Conflicts\7f162853
+Node: Stack Overflow\7f166239
+Node: Error Recovery\7f167612
+Node: Context Dependency\7f172748
+Node: Semantic Tokens\7f173596
+Node: Lexical Tie-ins\7f176613
+Node: Tie-in Recovery\7f178161
+Node: Debugging\7f180333
+Node: Invocation\7f183634
+Node: Bison Options\7f184886
+Node: Environment Variables\7f188320
+Node: Option Cross Key\7f189168
+Node: VMS Invocation\7f190012
+Node: Table of Symbols\7f190796
+Node: Glossary\7f198189
+Node: Index\7f204479
 \1f
 End Tag Table
 \1f
 End Tag Table
index 88a0a73b470412ddfb457c945e966804d84c153b..a0634a704843fe0bd4a48b40d30c2569a549f0dd 100644 (file)
@@ -165,7 +165,7 @@ Tracking Locations
 
    Though grammar rules and semantic actions are enough to write a fully
 functional parser, it can be useful to process some additionnal
 
    Though grammar rules and semantic actions are enough to write a fully
 functional parser, it can be useful to process some additionnal
-informations, especially locations of tokens and groupings.
+informations, especially symbol locations.
 
    The way locations are handled is defined by providing a data type,
 and actions to take when rules are matched.
 
    The way locations are handled is defined by providing a data type,
 and actions to take when rules are matched.
@@ -213,19 +213,47 @@ elements being matched.  The location of the Nth component of the right
 hand side is `@N', while the location of the left hand side grouping is
 `@$'.
 
 hand side is `@N', while the location of the left hand side grouping is
 `@$'.
 
-   Here is a simple example using the default data type for locations:
+   Here is a basic example using the default data type for locations:
 
      exp:    ...
 
      exp:    ...
-             | exp '+' exp
+             | exp '/' exp
                  {
                  {
+                   @$.first_column = @1.first_column;
+                   @$.first_line = @1.first_line;
                    @$.last_column = @3.last_column;
                    @$.last_line = @3.last_line;
                    @$.last_column = @3.last_column;
                    @$.last_line = @3.last_line;
-                   $$ = $1 + $3;
+                   if ($3)
+                     $$ = $1 / $3;
+                   else
+                     {
+                       $$ = 1;
+                       printf("Division by zero, l%d,c%d-l%d,c%d",
+                              @3.first_line, @3.first_column,
+                              @3.last_line, @3.last_column);
+                     }
                  }
 
                  }
 
-In the example above, there is no need to set the beginning of `@$'. The
-output parser always sets `@$' to `@1' before executing the C code of a
-given action, whether you provide a processing for locations or not.
+   As for semantic values, there is a default action for locations that
+is run each time a rule is matched. It sets the beginning of `@$' to the
+beginning of the first symbol, and the end of `@$' to the end of the
+last symbol.
+
+   With this default action, the location tracking can be fully
+automatic. The example above simply rewrites this way:
+
+     exp:    ...
+             | exp '/' exp
+                 {
+                   if ($3)
+                     $$ = $1 / $3;
+                   else
+                     {
+                       $$ = 1;
+                       printf("Division by zero, l%d,c%d-l%d,c%d",
+                              @3.first_line, @3.first_column,
+                              @3.last_line, @3.last_column);
+                     }
+                 }
 
 \1f
 File: bison.info,  Node: Location Default Action,  Prev: Actions and Locations,  Up: Locations
 
 \1f
 File: bison.info,  Node: Location Default Action,  Prev: Actions and Locations,  Up: Locations
@@ -235,26 +263,35 @@ Default Action for Locations
 
    Actually, actions are not the best place to compute locations. Since
 locations are much more general than semantic values, there is room in
 
    Actually, actions are not the best place to compute locations. Since
 locations are much more general than semantic values, there is room in
-the output parser to define a default action to take for each rule. The
-`YYLLOC_DEFAULT' macro is called each time a rule is matched, before
-the associated action is run.
+the output parser to redefine the default action to take for each rule.
+The `YYLLOC_DEFAULT' macro is called each time a rule is matched,
+before the associated action is run.
+
+   Most of the time, this macro is general enough to suppress location
+dedicated code from semantic actions.
+
+   The `YYLLOC_DEFAULT' macro takes three parameters. The first one is
+the location of the grouping (the result of the computation). The
+second one is an array holding locations of all right hand side
+elements of the rule being matched. The last one is the size of the
+right hand side rule.
+
+   By default, it is defined this way:
 
 
-   This macro takes two parameters, the first one being the location of
-the grouping (the result of the computation), and the second one being
-the location of the last element matched. Of course, before
-`YYLLOC_DEFAULT' is run, the result is set to the location of the first
-component matched.
+     #define YYLLOC_DEFAULT(Current, Rhs, N)         \
+       Current.last_line   = Rhs[N].last_line;       \
+       Current.last_column = Rhs[N].last_column;
 
 
-   By default, this macro computes a location that ranges from the
-beginning of the first element to the end of the last element. It is
-defined this way:
+   When defining `YYLLOC_DEFAULT', you should consider that:
 
 
-     #define YYLLOC_DEFAULT(Current, Last)           \
-       Current.last_line     = Last.last_line;       \
-       Current.last_column   = Last.last_column;
+   * All arguments are free of side-effects. However, only the first
+     one (the result) should be modified by `YYLLOC_DEFAULT'.
 
 
-Most of the time, the default action for locations is general enough to
-suppress location dedicated code from most actions.
+   * Before `YYLLOC_DEFAULT' is executed, the output parser sets `@$'
+     to `@1'.
+
+   * For consistency with semantic actions, valid indexes for the
+     location array range from 1 to N.
 
 \1f
 File: bison.info,  Node: Declarations,  Next: Multiple Parsers,  Prev: Locations,  Up: Grammar File
 
 \1f
 File: bison.info,  Node: Declarations,  Next: Multiple Parsers,  Prev: Locations,  Up: Grammar File
@@ -1241,82 +1278,3 @@ sequence.
    The current look-ahead token is stored in the variable `yychar'.
 *Note Special Features for Use in Actions: Action Features.
 
    The current look-ahead token is stored in the variable `yychar'.
 *Note Special Features for Use in Actions: Action Features.
 
-\1f
-File: bison.info,  Node: Shift/Reduce,  Next: Precedence,  Prev: Look-Ahead,  Up: Algorithm
-
-Shift/Reduce Conflicts
-======================
-
-   Suppose we are parsing a language which has if-then and if-then-else
-statements, with a pair of rules like this:
-
-     if_stmt:
-               IF expr THEN stmt
-             | IF expr THEN stmt ELSE stmt
-             ;
-
-Here we assume that `IF', `THEN' and `ELSE' are terminal symbols for
-specific keyword tokens.
-
-   When the `ELSE' token is read and becomes the look-ahead token, the
-contents of the stack (assuming the input is valid) are just right for
-reduction by the first rule.  But it is also legitimate to shift the
-`ELSE', because that would lead to eventual reduction by the second
-rule.
-
-   This situation, where either a shift or a reduction would be valid,
-is called a "shift/reduce conflict".  Bison is designed to resolve
-these conflicts by choosing to shift, unless otherwise directed by
-operator precedence declarations.  To see the reason for this, let's
-contrast it with the other alternative.
-
-   Since the parser prefers to shift the `ELSE', the result is to attach
-the else-clause to the innermost if-statement, making these two inputs
-equivalent:
-
-     if x then if y then win (); else lose;
-     
-     if x then do; if y then win (); else lose; end;
-
-   But if the parser chose to reduce when possible rather than shift,
-the result would be to attach the else-clause to the outermost
-if-statement, making these two inputs equivalent:
-
-     if x then if y then win (); else lose;
-     
-     if x then do; if y then win (); end; else lose;
-
-   The conflict exists because the grammar as written is ambiguous:
-either parsing of the simple nested if-statement is legitimate.  The
-established convention is that these ambiguities are resolved by
-attaching the else-clause to the innermost if-statement; this is what
-Bison accomplishes by choosing to shift rather than reduce.  (It would
-ideally be cleaner to write an unambiguous grammar, but that is very
-hard to do in this case.)  This particular ambiguity was first
-encountered in the specifications of Algol 60 and is called the
-"dangling `else'" ambiguity.
-
-   To avoid warnings from Bison about predictable, legitimate
-shift/reduce conflicts, use the `%expect N' declaration.  There will be
-no warning as long as the number of shift/reduce conflicts is exactly N.
-*Note Suppressing Conflict Warnings: Expect Decl.
-
-   The definition of `if_stmt' above is solely to blame for the
-conflict, but the conflict does not actually appear without additional
-rules.  Here is a complete Bison input file that actually manifests the
-conflict:
-
-     %token IF THEN ELSE variable
-     %%
-     stmt:     expr
-             | if_stmt
-             ;
-     
-     if_stmt:
-               IF expr THEN stmt
-             | IF expr THEN stmt ELSE stmt
-             ;
-     
-     expr:     variable
-             ;
-
index 4ba5958166d864f92e7197c9850ea0f8b0412d0d..a6fcb308aaa4a9c0a0a1ed146bd43f3699d076c7 100644 (file)
@@ -28,6 +28,85 @@ License", "Conditions for Using Bison" and this permission notice may be
 included in translations approved by the Free Software Foundation
 instead of in the original English.
 
 included in translations approved by the Free Software Foundation
 instead of in the original English.
 
+\1f
+File: bison.info,  Node: Shift/Reduce,  Next: Precedence,  Prev: Look-Ahead,  Up: Algorithm
+
+Shift/Reduce Conflicts
+======================
+
+   Suppose we are parsing a language which has if-then and if-then-else
+statements, with a pair of rules like this:
+
+     if_stmt:
+               IF expr THEN stmt
+             | IF expr THEN stmt ELSE stmt
+             ;
+
+Here we assume that `IF', `THEN' and `ELSE' are terminal symbols for
+specific keyword tokens.
+
+   When the `ELSE' token is read and becomes the look-ahead token, the
+contents of the stack (assuming the input is valid) are just right for
+reduction by the first rule.  But it is also legitimate to shift the
+`ELSE', because that would lead to eventual reduction by the second
+rule.
+
+   This situation, where either a shift or a reduction would be valid,
+is called a "shift/reduce conflict".  Bison is designed to resolve
+these conflicts by choosing to shift, unless otherwise directed by
+operator precedence declarations.  To see the reason for this, let's
+contrast it with the other alternative.
+
+   Since the parser prefers to shift the `ELSE', the result is to attach
+the else-clause to the innermost if-statement, making these two inputs
+equivalent:
+
+     if x then if y then win (); else lose;
+     
+     if x then do; if y then win (); else lose; end;
+
+   But if the parser chose to reduce when possible rather than shift,
+the result would be to attach the else-clause to the outermost
+if-statement, making these two inputs equivalent:
+
+     if x then if y then win (); else lose;
+     
+     if x then do; if y then win (); end; else lose;
+
+   The conflict exists because the grammar as written is ambiguous:
+either parsing of the simple nested if-statement is legitimate.  The
+established convention is that these ambiguities are resolved by
+attaching the else-clause to the innermost if-statement; this is what
+Bison accomplishes by choosing to shift rather than reduce.  (It would
+ideally be cleaner to write an unambiguous grammar, but that is very
+hard to do in this case.)  This particular ambiguity was first
+encountered in the specifications of Algol 60 and is called the
+"dangling `else'" ambiguity.
+
+   To avoid warnings from Bison about predictable, legitimate
+shift/reduce conflicts, use the `%expect N' declaration.  There will be
+no warning as long as the number of shift/reduce conflicts is exactly N.
+*Note Suppressing Conflict Warnings: Expect Decl.
+
+   The definition of `if_stmt' above is solely to blame for the
+conflict, but the conflict does not actually appear without additional
+rules.  Here is a complete Bison input file that actually manifests the
+conflict:
+
+     %token IF THEN ELSE variable
+     %%
+     stmt:     expr
+             | if_stmt
+             ;
+     
+     if_stmt:
+               IF expr THEN stmt
+             | IF expr THEN stmt ELSE stmt
+             ;
+     
+     expr:     variable
+             ;
+
 \1f
 File: bison.info,  Node: Precedence,  Next: Contextual Precedence,  Prev: Shift/Reduce,  Up: Algorithm
 
 \1f
 File: bison.info,  Node: Precedence,  Next: Contextual Precedence,  Prev: Shift/Reduce,  Up: Algorithm
 
@@ -1058,212 +1137,3 @@ is equivalent to the following command under POSIX.
 In the above example, the output file would instead be named
 `foo_tab.c'.
 
 In the above example, the output file would instead be named
 `foo_tab.c'.
 
-\1f
-File: bison.info,  Node: Table of Symbols,  Next: Glossary,  Prev: Invocation,  Up: Top
-
-Bison Symbols
-*************
-
-`error'
-     A token name reserved for error recovery.  This token may be used
-     in grammar rules so as to allow the Bison parser to recognize an
-     error in the grammar without halting the process.  In effect, a
-     sentence containing an error may be recognized as valid.  On a
-     parse error, the token `error' becomes the current look-ahead
-     token.  Actions corresponding to `error' are then executed, and
-     the look-ahead token is reset to the token that originally caused
-     the violation.  *Note Error Recovery::.
-
-`YYABORT'
-     Macro to pretend that an unrecoverable syntax error has occurred,
-     by making `yyparse' return 1 immediately.  The error reporting
-     function `yyerror' is not called.  *Note The Parser Function
-     `yyparse': Parser Function.
-
-`YYACCEPT'
-     Macro to pretend that a complete utterance of the language has been
-     read, by making `yyparse' return 0 immediately.  *Note The Parser
-     Function `yyparse': Parser Function.
-
-`YYBACKUP'
-     Macro to discard a value from the parser stack and fake a
-     look-ahead token.  *Note Special Features for Use in Actions:
-     Action Features.
-
-`YYERROR'
-     Macro to pretend that a syntax error has just been detected: call
-     `yyerror' and then perform normal error recovery if possible
-     (*note Error Recovery::), or (if recovery is impossible) make
-     `yyparse' return 1.  *Note Error Recovery::.
-
-`YYERROR_VERBOSE'
-     Macro that you define with `#define' in the Bison declarations
-     section to request verbose, specific error message strings when
-     `yyerror' is called.
-
-`YYINITDEPTH'
-     Macro for specifying the initial size of the parser stack.  *Note
-     Stack Overflow::.
-
-`YYLEX_PARAM'
-     Macro for specifying an extra argument (or list of extra
-     arguments) for `yyparse' to pass to `yylex'.  *Note Calling
-     Conventions for Pure Parsers: Pure Calling.
-
-`YYLTYPE'
-     Macro for the data type of `yylloc'; a structure with four
-     members.  *Note Data Types of Locations: Location Type.
-
-`yyltype'
-     Default value for YYLTYPE.
-
-`YYMAXDEPTH'
-     Macro for specifying the maximum size of the parser stack.  *Note
-     Stack Overflow::.
-
-`YYPARSE_PARAM'
-     Macro for specifying the name of a parameter that `yyparse' should
-     accept.  *Note Calling Conventions for Pure Parsers: Pure Calling.
-
-`YYRECOVERING'
-     Macro whose value indicates whether the parser is recovering from a
-     syntax error.  *Note Special Features for Use in Actions: Action
-     Features.
-
-`YYSTYPE'
-     Macro for the data type of semantic values; `int' by default.
-     *Note Data Types of Semantic Values: Value Type.
-
-`yychar'
-     External integer variable that contains the integer value of the
-     current look-ahead token.  (In a pure parser, it is a local
-     variable within `yyparse'.)  Error-recovery rule actions may
-     examine this variable.  *Note Special Features for Use in Actions:
-     Action Features.
-
-`yyclearin'
-     Macro used in error-recovery rule actions.  It clears the previous
-     look-ahead token.  *Note Error Recovery::.
-
-`yydebug'
-     External integer variable set to zero by default.  If `yydebug' is
-     given a nonzero value, the parser will output information on input
-     symbols and parser action.  *Note Debugging Your Parser: Debugging.
-
-`yyerrok'
-     Macro to cause parser to recover immediately to its normal mode
-     after a parse error.  *Note Error Recovery::.
-
-`yyerror'
-     User-supplied function to be called by `yyparse' on error.  The
-     function receives one argument, a pointer to a character string
-     containing an error message.  *Note The Error Reporting Function
-     `yyerror': Error Reporting.
-
-`yylex'
-     User-supplied lexical analyzer function, called with no arguments
-     to get the next token.  *Note The Lexical Analyzer Function
-     `yylex': Lexical.
-
-`yylval'
-     External variable in which `yylex' should place the semantic value
-     associated with a token.  (In a pure parser, it is a local
-     variable within `yyparse', and its address is passed to `yylex'.)
-     *Note Semantic Values of Tokens: Token Values.
-
-`yylloc'
-     External variable in which `yylex' should place the line and column
-     numbers associated with a token.  (In a pure parser, it is a local
-     variable within `yyparse', and its address is passed to `yylex'.)
-     You can ignore this variable if you don't use the `@' feature in
-     the grammar actions.  *Note Textual Positions of Tokens: Token
-     Positions.
-
-`yynerrs'
-     Global variable which Bison increments each time there is a parse
-     error.  (In a pure parser, it is a local variable within
-     `yyparse'.)  *Note The Error Reporting Function `yyerror': Error
-     Reporting.
-
-`yyparse'
-     The parser function produced by Bison; call this function to start
-     parsing.  *Note The Parser Function `yyparse': Parser Function.
-
-`%debug'
-     Equip the parser for debugging.  *Note Decl Summary::.
-
-`%defines'
-     Bison declaration to create a header file meant for the scanner.
-     *Note Decl Summary::.
-
-`%left'
-     Bison declaration to assign left associativity to token(s).  *Note
-     Operator Precedence: Precedence Decl.
-
-`%no_lines'
-     Bison declaration to avoid generating `#line' directives in the
-     parser file.  *Note Decl Summary::.
-
-`%nonassoc'
-     Bison declaration to assign non-associativity to token(s).  *Note
-     Operator Precedence: Precedence Decl.
-
-`%prec'
-     Bison declaration to assign a precedence to a specific rule.
-     *Note Context-Dependent Precedence: Contextual Precedence.
-
-`%pure_parser'
-     Bison declaration to request a pure (reentrant) parser.  *Note A
-     Pure (Reentrant) Parser: Pure Decl.
-
-`%right'
-     Bison declaration to assign right associativity to token(s).
-     *Note Operator Precedence: Precedence Decl.
-
-`%start'
-     Bison declaration to specify the start symbol.  *Note The
-     Start-Symbol: Start Decl.
-
-`%token'
-     Bison declaration to declare token(s) without specifying
-     precedence.  *Note Token Type Names: Token Decl.
-
-`%token_table'
-     Bison declaration to include a token name table in the parser file.
-     *Note Decl Summary::.
-
-`%type'
-     Bison declaration to declare nonterminals.  *Note Nonterminal
-     Symbols: Type Decl.
-
-`%union'
-     Bison declaration to specify several possible data types for
-     semantic values.  *Note The Collection of Value Types: Union Decl.
-
-   These are the punctuation and delimiters used in Bison input:
-
-`%%'
-     Delimiter used to separate the grammar rule section from the Bison
-     declarations section or the additional C code section.  *Note The
-     Overall Layout of a Bison Grammar: Grammar Layout.
-
-`%{ %}'
-     All code listed between `%{' and `%}' is copied directly to the
-     output file uninterpreted.  Such code forms the "C declarations"
-     section of the input file.  *Note Outline of a Bison Grammar:
-     Grammar Outline.
-
-`/*...*/'
-     Comment delimiters, as in C.
-
-`:'
-     Separates a rule's result from its components.  *Note Syntax of
-     Grammar Rules: Rules.
-
-`;'
-     Terminates a rule.  *Note Syntax of Grammar Rules: Rules.
-
-`|'
-     Separates alternate rules for the same result nonterminal.  *Note
-     Syntax of Grammar Rules: Rules.
-
index de8fa66cc600d329305cf06a047d15df83a3b480..7ef93919fa5f815391566290511892360267dba3 100644 (file)
@@ -28,6 +28,215 @@ License", "Conditions for Using Bison" and this permission notice may be
 included in translations approved by the Free Software Foundation
 instead of in the original English.
 
 included in translations approved by the Free Software Foundation
 instead of in the original English.
 
+\1f
+File: bison.info,  Node: Table of Symbols,  Next: Glossary,  Prev: Invocation,  Up: Top
+
+Bison Symbols
+*************
+
+`error'
+     A token name reserved for error recovery.  This token may be used
+     in grammar rules so as to allow the Bison parser to recognize an
+     error in the grammar without halting the process.  In effect, a
+     sentence containing an error may be recognized as valid.  On a
+     parse error, the token `error' becomes the current look-ahead
+     token.  Actions corresponding to `error' are then executed, and
+     the look-ahead token is reset to the token that originally caused
+     the violation.  *Note Error Recovery::.
+
+`YYABORT'
+     Macro to pretend that an unrecoverable syntax error has occurred,
+     by making `yyparse' return 1 immediately.  The error reporting
+     function `yyerror' is not called.  *Note The Parser Function
+     `yyparse': Parser Function.
+
+`YYACCEPT'
+     Macro to pretend that a complete utterance of the language has been
+     read, by making `yyparse' return 0 immediately.  *Note The Parser
+     Function `yyparse': Parser Function.
+
+`YYBACKUP'
+     Macro to discard a value from the parser stack and fake a
+     look-ahead token.  *Note Special Features for Use in Actions:
+     Action Features.
+
+`YYERROR'
+     Macro to pretend that a syntax error has just been detected: call
+     `yyerror' and then perform normal error recovery if possible
+     (*note Error Recovery::), or (if recovery is impossible) make
+     `yyparse' return 1.  *Note Error Recovery::.
+
+`YYERROR_VERBOSE'
+     Macro that you define with `#define' in the Bison declarations
+     section to request verbose, specific error message strings when
+     `yyerror' is called.
+
+`YYINITDEPTH'
+     Macro for specifying the initial size of the parser stack.  *Note
+     Stack Overflow::.
+
+`YYLEX_PARAM'
+     Macro for specifying an extra argument (or list of extra
+     arguments) for `yyparse' to pass to `yylex'.  *Note Calling
+     Conventions for Pure Parsers: Pure Calling.
+
+`YYLTYPE'
+     Macro for the data type of `yylloc'; a structure with four
+     members.  *Note Data Types of Locations: Location Type.
+
+`yyltype'
+     Default value for YYLTYPE.
+
+`YYMAXDEPTH'
+     Macro for specifying the maximum size of the parser stack.  *Note
+     Stack Overflow::.
+
+`YYPARSE_PARAM'
+     Macro for specifying the name of a parameter that `yyparse' should
+     accept.  *Note Calling Conventions for Pure Parsers: Pure Calling.
+
+`YYRECOVERING'
+     Macro whose value indicates whether the parser is recovering from a
+     syntax error.  *Note Special Features for Use in Actions: Action
+     Features.
+
+`YYSTYPE'
+     Macro for the data type of semantic values; `int' by default.
+     *Note Data Types of Semantic Values: Value Type.
+
+`yychar'
+     External integer variable that contains the integer value of the
+     current look-ahead token.  (In a pure parser, it is a local
+     variable within `yyparse'.)  Error-recovery rule actions may
+     examine this variable.  *Note Special Features for Use in Actions:
+     Action Features.
+
+`yyclearin'
+     Macro used in error-recovery rule actions.  It clears the previous
+     look-ahead token.  *Note Error Recovery::.
+
+`yydebug'
+     External integer variable set to zero by default.  If `yydebug' is
+     given a nonzero value, the parser will output information on input
+     symbols and parser action.  *Note Debugging Your Parser: Debugging.
+
+`yyerrok'
+     Macro to cause parser to recover immediately to its normal mode
+     after a parse error.  *Note Error Recovery::.
+
+`yyerror'
+     User-supplied function to be called by `yyparse' on error.  The
+     function receives one argument, a pointer to a character string
+     containing an error message.  *Note The Error Reporting Function
+     `yyerror': Error Reporting.
+
+`yylex'
+     User-supplied lexical analyzer function, called with no arguments
+     to get the next token.  *Note The Lexical Analyzer Function
+     `yylex': Lexical.
+
+`yylval'
+     External variable in which `yylex' should place the semantic value
+     associated with a token.  (In a pure parser, it is a local
+     variable within `yyparse', and its address is passed to `yylex'.)
+     *Note Semantic Values of Tokens: Token Values.
+
+`yylloc'
+     External variable in which `yylex' should place the line and column
+     numbers associated with a token.  (In a pure parser, it is a local
+     variable within `yyparse', and its address is passed to `yylex'.)
+     You can ignore this variable if you don't use the `@' feature in
+     the grammar actions.  *Note Textual Positions of Tokens: Token
+     Positions.
+
+`yynerrs'
+     Global variable which Bison increments each time there is a parse
+     error.  (In a pure parser, it is a local variable within
+     `yyparse'.)  *Note The Error Reporting Function `yyerror': Error
+     Reporting.
+
+`yyparse'
+     The parser function produced by Bison; call this function to start
+     parsing.  *Note The Parser Function `yyparse': Parser Function.
+
+`%debug'
+     Equip the parser for debugging.  *Note Decl Summary::.
+
+`%defines'
+     Bison declaration to create a header file meant for the scanner.
+     *Note Decl Summary::.
+
+`%left'
+     Bison declaration to assign left associativity to token(s).  *Note
+     Operator Precedence: Precedence Decl.
+
+`%no_lines'
+     Bison declaration to avoid generating `#line' directives in the
+     parser file.  *Note Decl Summary::.
+
+`%nonassoc'
+     Bison declaration to assign non-associativity to token(s).  *Note
+     Operator Precedence: Precedence Decl.
+
+`%prec'
+     Bison declaration to assign a precedence to a specific rule.
+     *Note Context-Dependent Precedence: Contextual Precedence.
+
+`%pure_parser'
+     Bison declaration to request a pure (reentrant) parser.  *Note A
+     Pure (Reentrant) Parser: Pure Decl.
+
+`%right'
+     Bison declaration to assign right associativity to token(s).
+     *Note Operator Precedence: Precedence Decl.
+
+`%start'
+     Bison declaration to specify the start symbol.  *Note The
+     Start-Symbol: Start Decl.
+
+`%token'
+     Bison declaration to declare token(s) without specifying
+     precedence.  *Note Token Type Names: Token Decl.
+
+`%token_table'
+     Bison declaration to include a token name table in the parser file.
+     *Note Decl Summary::.
+
+`%type'
+     Bison declaration to declare nonterminals.  *Note Nonterminal
+     Symbols: Type Decl.
+
+`%union'
+     Bison declaration to specify several possible data types for
+     semantic values.  *Note The Collection of Value Types: Union Decl.
+
+   These are the punctuation and delimiters used in Bison input:
+
+`%%'
+     Delimiter used to separate the grammar rule section from the Bison
+     declarations section or the additional C code section.  *Note The
+     Overall Layout of a Bison Grammar: Grammar Layout.
+
+`%{ %}'
+     All code listed between `%{' and `%}' is copied directly to the
+     output file uninterpreted.  Such code forms the "C declarations"
+     section of the input file.  *Note Outline of a Bison Grammar:
+     Grammar Outline.
+
+`/*...*/'
+     Comment delimiters, as in C.
+
+`:'
+     Separates a rule's result from its components.  *Note Syntax of
+     Grammar Rules: Rules.
+
+`;'
+     Terminates a rule.  *Note Syntax of Grammar Rules: Rules.
+
+`|'
+     Separates alternate rules for the same result nonterminal.  *Note
+     Syntax of Grammar Rules: Rules.
+
 \1f
 File: bison.info,  Node: Glossary,  Next: Index,  Prev: Table of Symbols,  Up: Top
 
 \1f
 File: bison.info,  Node: Glossary,  Next: Index,  Prev: Table of Symbols,  Up: Top
 
index facfcecc722ca32c5c12b3170229cf0e21e3a7b3..ca45c1a03bfcc8dc0b774344509f50c947586c0d 100644 (file)
@@ -1,3 +1,3 @@
-@set UPDATED 9 August 2001
+@set UPDATED 10 August 2001
 @set EDITION 1.28c
 @set VERSION 1.28c
 @set EDITION 1.28c
 @set VERSION 1.28c
index facfcecc722ca32c5c12b3170229cf0e21e3a7b3..ca45c1a03bfcc8dc0b774344509f50c947586c0d 100644 (file)
@@ -1,3 +1,3 @@
-@set UPDATED 9 August 2001
+@set UPDATED 10 August 2001
 @set EDITION 1.28c
 @set VERSION 1.28c
 @set EDITION 1.28c
 @set VERSION 1.28c