An alternation matches one of several alternatives.
let Alternation = ('|'? Alternatives)?; let Alternatives = Alternative ('|' Alternative)*; let Alternative = FixExpression+;
Note that an alternation may have a leading pipe. Also note that an alternative may not be empty,
| | is not allowed. Use an empty string instead, e.g.
'foo' | '' | 'bar'.
| 'hello' | 'pomsky'+
Alternation is supported in all flavors.
Alternatives are matched consecutively. The first alternative that matches is used.
Compiled to an alternation. The example above would be compiled to
Alternations aren’t yet properly optimized. Planned optimizations include:
- Common prefixes:
'test' | 'testament' | 'testing'to
- Single char alternation:
'a' | 'c' | '?'to
- Support for leading pipes added in Pomsky 0.6
- Initial implementation in Pomsky 0.1