Shift/Reduce Conflicts on ABNF Grammar

Josh Meise <[email protected]> Wed, 12 Nov 2025 10:44:56 -0500
Newsgroups gmane.comp.parsers.bison.general
Message-ID <CAPfx2Hzp77js3pHQnnb_M0DrF4b6cgYWqJ9oPyfgtfzhxxgRzQ@mail.gmail.com>
--000000000000169b9d064367a604
Content-Type: text/plain; charset="UTF-8"

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

--000000000000169b9d064367a604
Content-Type: application/octet-stream; name="abnf.y"
Content-Disposition: attachment; filename="abnf.y"
Content-Transfer-Encoding: base64
Content-ID: <f_mhw64kyg0>
X-Attachment-Id: f_mhw64kyg0

JXsKCSNkZWZpbmUgWVlERUJVRyAxCglpbnQgeXlsZXgodm9pZCk7Cgl2b2lkIHl5ZXJyb3IoY2hh
ciAqcyk7CiV9CgoldG9rZW4gWDAwCgolJQoKLyogKiAqICogKiAqICogKiAqICogKiAqICogKiAq
ICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqCiAqICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogKiAgICAgICAgICAgICAgICAgICAg
ICBBQk5GIEdSQU1NQVIgICAgICAgICAgICAgICAgICAgICAgICoKICogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAqICogKiAqICogKiAq
ICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKi8KClA6CiBhbHRl
cm5hdGlvbgogOwoKY193c3A6CiAgICAgV1NQIHwgY19ubCBXU1AKICAgICA7CgpjX25sOgogICAg
Y29tbWVudCB8IENSTEYKICAgIDsKCmNvbW1lbnQ6CiAgICAgICAnOycgc3Rhcl93c3Bfb3JfdmNo
YXIgQ1JMRgogICAgICAgOwoKYWx0ZXJuYXRpb246CiAgICAgICAgICAgY29uY2F0ZW5hdGlvbiBz
dGFyX2FsdGVybmF0aW9uX2VsZW10CiAgICAgICAgICAgOwoKY29uY2F0ZW5hdGlvbjoKICAgICAg
ICAgICAgIHJlcGV0aXRpb24gc3Rhcl9jb25jYXRlbmF0aW9uX2VsZW10CiAgICAgICAgICAgICA7
CgpyZXBldGl0aW9uOgogICAgICAgICAgb3B0X3JlcGVhdCBlbGVtZW50CiAgICAgICAgICA7Cgpy
ZXBlYXQ6CiAgICAgIG9uZV9zdGFyX2RpZ2l0IHwgc3Rhcl9kaWdpdCAnKicgc3Rhcl9kaWdpdAog
ICAgICA7CgplbGVtZW50OgogICAgICAgY2hhcl92YWwKICAgICAgIDsKCmNoYXJfdmFsOgogICAg
ICAgIERRVU9URSBzdGFyX2NoYXJfdmFsX2NoYXIgRFFVT1RFCiAgICAgICAgOwoKLyogKiAqICog
KiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqCiAqICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgog
KiAgICAgICAgICAgICAgICAgICAgICBIRUxQRVIgUlVMRVMgICAgICAgICAgICAgICAgICAgICAg
ICoKICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAqCiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAq
ICogKiAqICogKi8KCi8qIGNoYXJfdmFsICovCgpzdGFyX2NoYXJfdmFsX2NoYXI6CiAgICAgICAg
ICAgICAgICAgIC8qIGVtcHR5ICovIHwgc3Rhcl9jaGFyX3ZhbF9jaGFyIGNoYXJfdmFsX2NoYXIK
ICAgICAgICAgICAgICAgICAgOwoKY2hhcl92YWxfY2hhcjoKICAgICAgICAgICAgICdceDIwJyB8
ICdceDIxJyB8ICdceDIzJyB8ICdceDI0JyB8ICdceDI1JyB8ICdceDI2JyB8ICdceDI3JyB8ICdc
eDI4JyB8ICdceDI5JyB8ICdceDJBJyB8CiAgICAgICAgICAgICAnXHgyQicgfCAnXHgyQycgfCAn
XHgyRCcgfCAnXHgyRScgfCAnXHgyRicgfCAnXHgzMCcgfCAnXHgzMScgfCAnXHgzMicgfCAnXHgz
MycgfCAnXHgzNCcgfAogICAgICAgICAgICAgJ1x4MzUnIHwgJ1x4MzYnIHwgJ1x4MzcnIHwgJ1x4
MzgnIHwgJ1x4MzknIHwgJ1x4M0EnIHwgJ1x4M0InIHwgJ1x4M0MnIHwgJ1x4M0QnIHwgJ1x4M0Un
IHwKICAgICAgICAgICAgICdceDNGJyB8ICdceDQwJyB8ICdceDQxJyB8ICdceDQyJyB8ICdceDQz
JyB8ICdceDQ0JyB8ICdceDQ1JyB8ICdceDQ2JyB8ICdceDQ3JyB8ICdceDQ4JyB8CiAgICAgICAg
ICAgICAnXHg0OScgfCAnXHg0QScgfCAnXHg0QicgfCAnXHg0QycgfCAnXHg0RCcgfCAnXHg0RScg
fCAnXHg0RicgfCAnXHg1MCcgfCAnXHg1MScgfCAnXHg1MicgfAogICAgICAgICAgICAgJ1x4NTMn
IHwgJ1x4NTQnIHwgJ1x4NTUnIHwgJ1x4NTYnIHwgJ1x4NTcnIHwgJ1x4NTgnIHwgJ1x4NTknIHwg
J1x4NUEnIHwgJ1x4NUInIHwgJ1x4NUMnIHwKICAgICAgICAgICAgICdceDVEJyB8ICdceDVFJyB8
ICdceDVGJyB8ICdceDYwJyB8ICdceDYxJyB8ICdceDYyJyB8ICdceDYzJyB8ICdceDY0JyB8ICdc
eDY1JyB8ICdceDY2JyB8CiAgICAgICAgICAgICAnXHg2NycgfCAnXHg2OCcgfCAnXHg2OScgfCAn
XHg2QScgfCAnXHg2QicgfCAnXHg2QycgfCAnXHg2RCcgfCAnXHg2RScgfCAnXHg2RicgfCAnXHg3
MCcgfAogICAgICAgICAgICAgJ1x4NzEnIHwgJ1x4NzInIHwgJ1x4NzMnIHwgJ1x4NzQnIHwgJ1x4
NzUnIHwgJ1x4NzYnIHwgJ1x4NzcnIHwgJ1x4NzgnIHwgJ1x4NzknIHwgJ1x4N0EnIHwKICAgICAg
ICAgICAgICdceDdCJyB8ICdceDdDJyB8ICdceDdEJyB8ICdceDdFJwogICAgICAgICAgICAgOwoK
LyogY29tbWVudCAqLwoKc3Rhcl93c3Bfb3JfdmNoYXI6CiAgICAgICAgICAgICAgICAgLyogZW1w
dHkgKi8gfCBzdGFyX3dzcF9vcl92Y2hhciB3c3Bfb3JfdmNoYXIKICAgICAgICAgICAgICAgICA7
Cgp3c3Bfb3JfdmNoYXI6CiAgICAgICAgICAgIFZDSEFSIHwgV1NQCiAgICAgICAgICAgIDsKCi8q
IGFsdGVybmF0aW9uICovCgpzdGFyX2FsdGVybmF0aW9uX2VsZW10OgogICAgICAgICAgICAgICAg
ICAgICAgLyogZW1wdHkgKi8gfCBzdGFyX2FsdGVybmF0aW9uX2VsZW10IGFsdGVybmF0aW9uX2Vs
ZW10CiAgICAgICAgICAgICAgICAgICAgICA7CgphbHRlcm5hdGlvbl9lbGVtdDoKICAgICAgICAg
ICAgICAgICBzdGFyX2Nfd3NwICcvJyBzdGFyX2Nfd3NwIGNvbmNhdGVuYXRpb24KICAgICAgICAg
ICAgICAgICA7CgovKiBjb25jYXRlbmF0aW9uICovCgpzdGFyX2NvbmNhdGVuYXRpb25fZWxlbXQ6
CiAgICAgICAgICAgICAgICAgICAgICAgIC8qIGVtcHR5ICovIHwgc3Rhcl9jb25jYXRlbmF0aW9u
X2VsZW10IGNvbmNhdGVuYXRpb25fZWxlbXQKICAgICAgICAgICAgICAgICAgICAgICAgOwoKY29u
Y2F0ZW5hdGlvbl9lbGVtdDoKICAgICAgICAgICAgICAgICAgIG9uZV9zdGFyX2Nfd3NwIHJlcGV0
aXRpb24KICAgICAgICAgICAgICAgICAgIDsKCi8qIHJlcGV0aXRpb24gKi8KCm9wdF9yZXBlYXQ6
CiAgICAgICAgICAvKiBlbXB0eSAqLyB8IHJlcGVhdAogICAgICAgICAgOwoKLyogcmVwZXRpdGlv
bnMgb2YgYmFzaWMgYW5kIHNoYXJlZCBydWxlcyAqLwoKc3Rhcl9kaWdpdDoKICAgICAgICAgIC8q
IGVtcHR5ICovIHwgb25lX3N0YXJfZGlnaXQgICAgICAgICAgLyogZXhwcmVzc2VkIGF0eXBpY2Fs
bHkgdG8gcmVtb3ZlIHNoaWZ0L3JlZHVjZSBjb25mbGljdHMgKi8KICAgICAgICAgIDsKCm9uZV9z
dGFyX2RpZ2l0OgogICAgICAgICAgICAgIERJR0lUIHwgb25lX3N0YXJfZGlnaXQgRElHSVQKICAg
ICAgICAgICAgICA7CgpzdGFyX2Nfd3NwOgogICAgICAgICAgLyogZW1wdHkgKi8gfCBzdGFyX2Nf
d3NwIGNfd3NwCiAgICAgICAgICA7CgpvbmVfc3Rhcl9jX3dzcDoKICAgICAgICAgICAgICBjX3dz
cCB8IG9uZV9zdGFyX2Nfd3NwIGNfd3NwCiAgICAgICAgICAgICAgOwoKLyogKiAqICogKiAqICog
KiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqCiAqICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogKiAgICAg
ICAgICAgICAgICAgICAgICAgQkFTSUMgUlVMRVMgICAgICAgICAgICAgICAgICAgICAgICoKICog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAq
CiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAq
ICogKi8KCkNSOgogICdceDBEJwoKQ1JMRjoKICAgIENSIExGCiAgICA7CgpESUdJVDoKICAgICAn
XHgzMCcgfCAnXHgzMScgfCAnXHgzMicgfCAnXHgzMycgfCAnXHgzNCcgfCAnXHgzNScgfCAnXHgz
NicgfCAnXHgzNycgfCAnXHgzOCcgfCAnXHgzOScKICAgICA7CgpEUVVPVEU6CiAgICAgICdceDIy
JwogICAgICA7CgpIVEFCOgogICAgJ1x4MDknCiAgICA7CgpMRjoKICAnXHgwQScKICA7CgpTUDoK
ICAnXHgyMCcKICA7CgpWQ0hBUjoKICAgICAnXHgyMScgfCAnXHgyMicgfCAnXHgyMycgfCAnXHgy
NCcgfCAnXHgyNScgfCAnXHgyNicgfCAnXHgyNycgfCAnXHgyOCcgfCAnXHgyOScgfCAnXHgyQScg
fAogICAgICdceDJCJyB8ICdceDJDJyB8ICdceDJEJyB8ICdceDJFJyB8ICdceDJGJyB8ICdceDMw
JyB8ICdceDMxJyB8ICdceDMyJyB8ICdceDMzJyB8ICdceDM0JyB8CiAgICAgJ1x4MzUnIHwgJ1x4
MzYnIHwgJ1x4MzcnIHwgJ1x4MzgnIHwgJ1x4MzknIHwgJ1x4M0EnIHwgJ1x4M0InIHwgJ1x4M0Mn
IHwgJ1x4M0QnIHwgJ1x4M0UnIHwKICAgICAnXHgzRicgfCAnXHg0MCcgfCAnXHg0MScgfCAnXHg0
MicgfCAnXHg0MycgfCAnXHg0NCcgfCAnXHg0NScgfCAnXHg0NicgfCAnXHg0NycgfCAnXHg0OCcg
fAogICAgICdceDQ5JyB8ICdceDRBJyB8ICdceDRCJyB8ICdceDRDJyB8ICdceDREJyB8ICdceDRF
JyB8ICdceDRGJyB8ICdceDUwJyB8ICdceDUxJyB8ICdceDUyJyB8CiAgICAgJ1x4NTMnIHwgJ1x4
NTQnIHwgJ1x4NTUnIHwgJ1x4NTYnIHwgJ1x4NTcnIHwgJ1x4NTgnIHwgJ1x4NTknIHwgJ1x4NUEn
IHwgJ1x4NUInIHwgJ1x4NUMnIHwKICAgICAnXHg1RCcgfCAnXHg1RScgfCAnXHg1RicgfCAnXHg2
MCcgfCAnXHg2MScgfCAnXHg2MicgfCAnXHg2MycgfCAnXHg2NCcgfCAnXHg2NScgfCAnXHg2Nicg
fAogICAgICdceDY3JyB8ICdceDY4JyB8ICdceDY5JyB8ICdceDZBJyB8ICdceDZCJyB8ICdceDZD
JyB8ICdceDZEJyB8ICdceDZFJyB8ICdceDZGJyB8ICdceDcwJyB8CiAgICAgJ1x4NzEnIHwgJ1x4
NzInIHwgJ1x4NzMnIHwgJ1x4NzQnIHwgJ1x4NzUnIHwgJ1x4NzYnIHwgJ1x4NzcnIHwgJ1x4Nzgn
IHwgJ1x4NzknIHwgJ1x4N0EnIHwKICAgICAnXHg3QicgfCAnXHg3QycgfCAnXHg3RCcgfCAnXHg3
RScKICAgICA7CgpXU1A6CiAgIFNQIHwgSFRBQgogICA7CgolJQo=
--000000000000169b9d064367a604--