I have the following grammar
Arithmetic: Term < Factor (Add / Sub)* Add < "+" Factor Sub < "-" Factor Factor < Primary (Mul / Div)* Mul < "*" Primary Div < "/" Primary Primary < Parens / Neg / Pos / Number / Variable Parens < "(" Term ")" Neg < "-" Primary Pos < "+" Primary Dot < "." Decimal < ~(digit+ Dot? digit*) Integer < digits Number < Integer / Decimal Function < identifier (space+ Primary)+ Variable <- identifier
Most everything works, except when I try to parse a decimal (such as
0.5) it does not work. What is the proper syntax to define a Decimal parser in PEG?
I am using the Pegged library in d-lang. See here for the docs.
Since PEG alternatives are ordered, you need to write:
Number < Decimal / Integer
Integer / Decimal will always match the
Integer at the beginning of a number, so
Decimal will never be tried.