examples/regex2/Add2.pm
grammar Add2 {
rule TOP { ^ <math> $ }
rule math {
<operand>
[ <operator> || {die "missing operator"} ]
[ <operand> || { die "Missing second operand" } ]
[ \S { die "Invalid value after the second operand" } ]?
}
token operand { \d+ }
token operator { <[\+\*]> || \D { die "Invalid operator" } }
}
2 + 3 OK 2 + 4 OK 2 + 3 x exception received: Invalid value after the second operand 2 + exception received: Missing second operand 2 3 exception received: missing operator 2 - 3 exception received: Invalid operator