Types data Symbol
= \lit(str string)
| \cilit(str string)
| \char-class(list[CharRange] ranges)
;
data Symbol
= \empty()
| \opt(Symbol symbol)
| \iter(Symbol symbol)
| \iter-star(Symbol symbol)
| \iter-seps(Symbol symbol, list[Symbol] separators)
| \iter-star-seps(Symbol symbol, list[Symbol] separators)
| \alt(set[Symbol] alternatives)
| \seq(list[Symbol] symbols)
;
data Symbol = \conditional(Symbol symbol, set[Condition] conditions)
;