Prev: Mystery Conflicts Up: Algorithm
Stack Overflow, and How to Avoid It
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
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.
automatically generated by info2www