Node:Stack Overflow, Previous:Mystery Conflicts, Up:Algorithm
The Bison parser stack can overflow if too many tokens are shifted and
not reduced. When this happens, the parser function yyparse
returns a nonzero value, pausing only to call yyerror
to report
the overflow.
By defining the macro YYMAXDEPTH
, you can control how deep the
parser stack can become before a stack overflow occurs. Define the
macro with a value that is an integer. This value is the maximum number
of tokens that can be shifted (and not reduced) before overflow.
It must be a constant expression whose value is known at compile time.
The stack space allowed is not necessarily allocated. If you specify a
large value for YYMAXDEPTH
, the parser actually allocates a small
stack at first, and then makes it bigger by stages as needed. This
increasing allocation happens automatically and silently. Therefore,
you do not need to make YYMAXDEPTH
painfully small merely to save
space for ordinary inputs that do not need much stack.
The default value of YYMAXDEPTH
, if you do not define it, is
10000.
You can control how much stack is allocated initially by defining the
macro YYINITDEPTH
. This value too must be a compile-time
constant integer. The default is 200.