以下の構文を使用してパース式を定義できます:
(and e1 e2…)
すべてマッチしなければならないPEXのシーケンス。and
フォームはオプションであり暗黙。
(or e1 e2…)
順位付けされた選択肢、すなわちElispの場合と同じように順に試行されて最初に成功したマッチが使用される。これは複数マッチ間の選択が不定なコンテキストフリーグラマー(ontext-free grammar: 文脈自由文法)とは別物であることに注意。
(any)
regexpにおける“.”のように任意の1文字にマッチ。
string
リテラル文字列。
(char c)
Elispの文字リテラルのような単一の文字c。
(* e)
regexpにおける‘*’のように、式eの0個以上のインスタンス。常に“欲張り(greedy)”なマッチ。
(+ e)
regexpにおける‘+’のように、式eの1個以上のインスタンス。常に“欲張り(greedy)”なマッチ。
(opt e)
regexpにおける‘?’のように、式eの0個または1個のインスタンス。
symbol
前に定義されたPEGルールを表すシンボル。
(range ch1 ch2)
regexpにおける‘[ch1-ch2]’のように、ch1とch2の間の文字範囲。
[ch1-ch2 "+*" ?x]
範囲、文字リテラル、文字列を含むことができる文字セット。
[ascii cntrl]
名前つき文字クラスのリスト。
(syntax-class name)
単一の文字クラス。
(funcall e args…)
引数argsでPEXの(前にdefine-peg-rule
で定義された) eを呼び出す。
(null)
空文字列。
以下はアンカーやテストとして使用される式です。これらはポイントを移動しませんが、パース処理(PEGルールの記述を参照)を制御する手段として使用できる、制限つきのマッチを行うためのブーリアン値をリターンします。
(bob)
バッファー先頭。
(eob)
バッファー終端。
(bol)
行頭。
(eol)
行末。
(bow)
単語の先頭。
(eow)
単語の終端。
(bos)
シンボルの先頭。
(eos)
シンボルの終端。
(if e)
ポイント以降をPEXのeでパースして成功なら非nil
をリターン(ポイントは移動しない)。
(not e)
ポイント以降をPEXのeでパースして失敗なら非nil
をリターン(ポイントは移動しない)。
(guard exp)
Lisp式のexpの値をブーリアン値として扱う。
文字クラスにマッチングは、正規表現における文字クラス(Character
Classesを参照)と等価なpeg-char-classes
の名前つきクラスを参照できます。