このウィキペディアのページから:
文脈自由文法と構文解析式文法の根本的な違いは、PEG の選択演算子が順序付けられていることです。最初の選択肢が成功した場合、2 番目の選択肢は無視されます。したがって、文脈自由文法や正規表現のような順序付けられていない選択とは異なり、順序付けられた選択は交換可能ではありません。順序付き選択は、一部のロジック プログラミング言語で使用できるソフト カット演算子に似ています。
PEG の選択演算子がマッチングを短絡させるのはなぜですか? (メモ化による)メモリ使用量を最小限に抑えるためですか?
正規表現での選択演算子が何であるかはわかりませんが、これが/[aeiou]/
母音に一致すると仮定しましょう。したがって、この正規表現は可換です。(5 階乗) 母音文字の順列? つまり/[aeiou]/
、 と同じように動作し/[eiaou]/
ます。それが可換であることの利点は何ですか?(PEG の非可換性を参照)
その結果、CFG が直接 PEG に音訳される場合、前者のあいまいさは、可能な解析から 1 つの解析ツリーを決定論的に選択することによって解決されます。代替文法が指定される順序を慎重に選択することにより、プログラマーは、どの構文木が選択されるかを大幅に制御できます。
これは、PEG の文法が CFG の文法よりも優れているということですか?