パース式は、以下の構文で定義できます。
(and e1 e2…)すべて一致させる必要があるPEXのシーケンス。and形式は任意であり、暗黙的です。
(or e1 e2…)優先選択とは、Elispと同様に、選択肢を順に試行し、最初に一致したものを採用することを指します。なお、これは、複数の一致候補からの選択が不定となる文脈自由文法とは異なる点に注意してください。
(any)正規表現「.」と同様に、任意の1文字にマッチします。
stringリテラル文字列。
(char c)Elispの文字リテラルとしての単一文字 c。
(* e)正規表現 ‘*’ としての式 e の0回以上の出現。マッチングは常に「貪欲」に行われる。
(+ e)正規表現 ‘+’ としての式 e の1つ以上のインスタンス。マッチングは常に「貪欲」に行われる。
(opt e)正規表現 ‘?’ としての式 e の出現回数 0 回または 1 回。
symbolあらかじめ定義されたPEGルールを表す記号。
(range ch1 ch2)文字範囲は ch1 から ch2 までで、正規表現は ‘[ch1-ch2]’ です。
[ch1-ch2
"+*" ?x]範囲、文字リテラル、または文字の文字列を含むことができる文字セット。
[ascii cntrl]名前付き文字クラスの一覧。
(syntax-class name)単一の構文クラス。
(funcall e args…)PEX e(以前はdefine-peg-ruleで定義されていた)を、引数argsで呼び出す。
(null)空文字列。
以下の式は、アンカーやテストとして使用されます。これらはポイントを移動させませんが、ブール値を返し、それを用いてマッチを制約することでパース処理を制御できます(PEGルールの記述を参照してください)。
(bob)バッファの先頭。
(eob)バッファの終端。
(bol)行頭。
(eol)行末。
(bow)単語の先頭。
(eow)単語の終わり。
(bos)記号の開始。
(eos)記号の終わり。
(if e)ポイントから PEX e
のパースに成功した場合(ポイントは移動しない)、nil 以外の値を返します。
(not e)ポイントから PEX e
のパースに失敗した場合(ポイントは移動しない)、nil 以外の値を返します。
(guard exp)Lisp式 exp の値をブール値として扱います。
文字クラスマッチングとは、peg-char-classes
で指定されるクラスを指し、正規表現における文字クラスに相当します(文字クラスを参照)。