pest
pest copied to clipboard
Compound rules may be recorded in ParsingError along with atomic rules
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.