pest icon indicating copy to clipboard operation
pest copied to clipboard

Compound rules may be recorded in ParsingError along with atomic rules

Open MucTepDayH16 opened this issue 2 years ago • 0 comments

With the following peg file:

ident = @{ &ASCII_ALPHA ~ (ASCII_ALPHA | ASCII_DIGIT | "_")+ }
integer = @{ ASCII_NONZERO_DIGIT ~ ASCII_DIGIT* | "0" }

ident_index = { ident ~ "[" ~ integer ~ "]" }
value = { ident_index | ident }

I'm trying to parse ident_index with non-matching string, the error ParsingError { positives: [ident], negatives: [] } is produced. How should I specify wether the expected rule is ident_index or ident (or both as in value)?

The only way to do it is marking ident_index as atomic (@). But my goal is to produce rule ident_index with inner: [ident, integer] and with spaces allowed between rules.

Maybe it will be useful to add modifier that will act as normal rule, but will produce itself on rule mismatch within.

MucTepDayH16 avatar Jul 17 '23 15:07 MucTepDayH16