ミニマムパーザ(続き)

http://d.hatena.ne.jp/kilrey/20090117#p2の解説。
PEGに足りないものは以下のように導出する。

  • A? := A/\varepsilon
  • A* := (A A*)/\varepsilon
  • A+ := A A*
  • &A := !!A

ちなみにfailは内部実装でのみ利用する。ここでは考慮していないが、実用上はエラー報告がきわめて重要。
(追記)

  • fail := !\varepsilon

だからfailも不要かも。