一个 PEG 由任意数量的规则组成,规则又可以由其他规则、终止符、或下表中的原语规则组成:
Name | Common Notation | Primitive |
---|---|---|
Sequence | a b | a ~ b |
Ordered Choice | a | b | a | b |
Zero-Or-More | a * | zeroOrMore(a) |
One-Or-More | a + | oneOrMore(a) |
Optional | a ? | optional(a) |
And-Predicate | & a | &(a) |
Non-Predicate | ! a | !a |
除了以上原语方法,还有以下原语可供使用:
Method/Field | Description |
---|---|
ANY | 匹配任何除了 EOI 的单个字符 |
NOTHING | 不匹配任何,总是失败 |
EMPTY | 不匹配任何,总是成功 |
EOI | 匹配特殊的 EOI 字符 |
ch(Char) | 创建一个匹配单个字符的规则 |
{String} ~ {String} | 匹配给定的字符范围 |
anyOf(String) | 匹配给定字符串中的任意字符 |
ignoreCase(Char) | 匹配单个字符且忽略大小写 |
ignoreCase(String) | 匹配整个字符串且胡烈大小写 |
str(String) | 创建一个匹配整个字符串的 |
nTimes(Int, Rule) | 创建一个匹配子规则 N 次的规则 |