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--