yyparse(): extend parser stack before every shift. blead
authorDavid Mitchell <davem@iabyn.com>
Sat, 10 Dec 2016 20:07:32 +0000 (20:07 +0000)
committerDavid Mitchell <davem@iabyn.com>
Sat, 10 Dec 2016 20:14:57 +0000 (20:14 +0000)
commitdf13534a362db9ee6def13689ce040e48c73a29a
treede5464824cd77bdbf9809364ab0ad3c9517c9702
parent98d5e3efa825adce1bfa065a5deed791c30162ac
yyparse(): extend parser stack before every shift.

This reverts v5.25.7-60-gb2c9b6e and adds a test.

In that previous commit of mine, for efficiency I changed it so that it
checked and extended the parser stack only after every reduce rather than
every shift, but when it did check, it extended it by at least 15 slots to
allow for all the elements of the longest possible rule to be shifted.

Turns out this was bad reasoning. The following type of code can shift
indefinitely without ever reducing:

    [{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{
parser.h
perly.c
sv.c
t/comp/parser.t
toke.c