Hi Adrian, There's a number of issues you should address before we install your contribution:
- please separate the part about yacc.c - stay within 76 columns, at most 79 occasionally - space before parens - use 'while (true)', not 'while (1)' - enable all the warnings and make sure there are no errors when running the test suite. See configure --enable-gcc-warnings, see also https://travis-ci.org/akimd/bison/builds/558164975 - to avoid clashes between identifiers, prefer yytoken to token. - end comments with a period. - there's a couple of useless "#if YYDEBUG" around a "YYCDEBUG" - braces alone on their line (there is a "if (yy_lac_established_) {") - please match the style of the git commit messages. - I'm very afraid of your type changes in the code of yysyntax_error when !lac: you replaced int by yy_token_number. I can understand the desire to do it, but it's too dangerous. For instance if you have 256 tokens, yy_token_number is unsigned char, but yyntokens_ is 256. So things like yy_token_number yyxend = yychecklim < yyntokens_ ? yychecklim : yyntokens_; are unlikely to behave properly. I should probably add tests for 256 tokens in the test suite. Because of hidden tokens such as eof, error, etc. the change of type of yy_token_type is actually from 253 to 254 user tokens. See script below. I have prepared the test suite for your changes. Please see the lac++ branch (on the official repo, and on GitHub too, https://github.com/akimd/bison/tree/lac++). Cheers! $ for i in {251..255}; do cat >input.$i.y <<EOF %token $(for j in {0..$i}; do printf " a$j"; done) %% exp: EOF ~bison/_build/9d/tests/bison -LC++ input.$i.y -o input.$i.cc -Dparse.error=verbose printf $i; grep 'token_number_type;' input.$i.cc done
