lexmachine/grammar

37 lines
532 B
Plaintext

Regex : Alternation
Alternation : AtomicOps Alternation'
Alternation' : '|' AtomicOps Alternation'
| e
AtomicOps : AtomicOp AtomicOps
| e
AtomicOp : Atomic
| Atomic Op
Atomic : Concat
| Group
Op : '+'
| '*'
| '?'
Group : '(' Alternation ')'
Concat : Char Concat
| e
Char : CHAR
| CharRange
CharRange : '[' RangeInner ']'
| '[' '^' RangeInner ']'
RangeInner : RangeComponent RangeInner
| e
RangeComponent : CHAR
| CHAR '-' CHAR