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 Error Recovery.

Macro: YYRECOVERING

The expression YYRECOVERING () yields 1 when the parser
is recovering from a syntax error, and 0 otherwise.
See 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 GLR Semantic Actions).
See 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 GLR Semantic Actions).
See Error Recovery.