Hi Josh;

I haven't looked at the grammar closely but as a note, are you using Bison as both a lexer and parser? May I suggest that you separate lexing from parsing and use flex and Bison rather than Bison alone? This does nothing to solve your problem, but increases speed of execution, decreases the size of tables, reduces the parsing statements, and makes it easier to maintain.

art

On 11/12/2025 7:44 AM, Josh Meise wrote:
Hello,

I trust you are well.

I am working on building a LALR parser for ABNF grammars using Bison and am
running into shift/reduce conflicts pertaining to whitespace.

The rule that is causing this issue is the alternation rule (from the RFC
for ABNF <https://datatracker.ietf.org/doc/html/rfc5234>):
alternation = concatenation *(*c-wsp "/" *c-wsp concatenation)
concatenation = repetition *(1*c-wsp repetition)     /* I have just set
repetition to be a character value for simplicity */
c-wsp = WSP / (c-nl WSP)
c-nl = comment / CRLF
comment =  ";" *(WSP / VCHAR) CRLF

I have attached my current Bison grammar. I believe I know what is causing
the conflict but am having some trouble coming to a solution. Any advice
would be greatly appreciated.

Best,
Josh

Reply via email to