manpagez: man pages & more
info bison
Home | html | info | man
[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

4.8 Special Features for Use in Actions

Here is a table of Bison constructs, variables and macros that are useful in actions.

Variable: $$

Acts like a variable that contains the semantic value for the grouping made by the current rule. See section Actions.

Variable: $n

Acts like a variable that contains the semantic value for the nth component of the current rule. See section Actions.

Variable: $<typealt>$

Like $$ but specifies alternative typealt in the union specified by the %union declaration. See section Data Types of Values in Actions.

Variable: $<typealt>n

Like $n but specifies alternative typealt in the union specified by the %union declaration. See section Data Types of Values in Actions.

Macro: YYABORT;

Return immediately from yyparse, indicating failure. See section The Parser Function yyparse.

Macro: YYACCEPT;

Return immediately from yyparse, indicating success. See section The Parser Function yyparse.

Macro: YYBACKUP (token, value);

Unshift a token. This macro is allowed only for rules that reduce a single value, and only when there is no lookahead token. It is also disallowed in GLR parsers. It installs a lookahead token with token type token and semantic value value; then it discards the value that was going to be reduced by this rule.

If the macro is used when it is not valid, such as when there is a lookahead token already, then it reports a syntax error with a message ‘cannot back up’ and performs ordinary error recovery.

In either case, the rest of the action is not executed.

Macro: YYEMPTY

Value stored in yychar when there is no lookahead token.

Macro: YYEOF

Value stored in yychar when the lookahead is the end of the input stream.

Macro: YYERROR;

Cause an immediate syntax error. This statement initiates error recovery just as if the parser itself had detected an error; however, it does not call yyerror, and does not print any message. If you want to print an error message, call yyerror explicitly before the ‘YYERROR;’ statement. See section Error Recovery.

Macro: YYRECOVERING

The expression YYRECOVERING () yields 1 when the parser is recovering from a syntax error, and 0 otherwise. See section Error Recovery.

Variable: yychar

Variable containing either the lookahead token, or YYEOF when the lookahead is the end of the input stream, or YYEMPTY when no lookahead has been performed so the next token is not yet known. Do not modify yychar in a deferred semantic action (see section GLR Semantic Actions). See section Lookahead Tokens.

Macro: yyclearin;

Discard the current lookahead token. This is useful primarily in error rules. Do not invoke yyclearin in a deferred semantic action (see section GLR Semantic Actions). See section Error Recovery.

Macro: yyerrok;

Resume generating error messages immediately for subsequent syntax errors. This is useful primarily in error rules. See section Error Recovery.

Variable: yylloc

Variable containing the lookahead token location when yychar is not set to YYEMPTY or YYEOF. Do not modify yylloc in a deferred semantic action (see section GLR Semantic Actions). See section Actions and Locations.

Variable: yylval

Variable containing the lookahead token semantic value when yychar is not set to YYEMPTY or YYEOF. Do not modify yylval in a deferred semantic action (see section GLR Semantic Actions). See section Actions.

Value: @$

Acts like a structure variable containing information on the textual location of the grouping made by the current rule. See section Tracking Locations.

Value: @n

Acts like a structure variable containing information on the textual location of the nth component of the current rule. See section Tracking Locations.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]
© manpagez.com 2000-2024
Individual documents may contain additional copyright information.