本ライブラリについて

本ライブラリについて

特徴

  • PHPで記述されており、パーサの構築にはPHPそのものを記述する
  • PEGで定義されている演算子は、PEGクラスメソッドとして実装されている
  • PEGで定義されている演算子の他に、実際にパーサを書く際に便利なヘルパーメソッドを用意している
  • 文字列だけではなく、配列もパーサに与えることができる
  • PEG_IContextを実装することで任意のデータ構造をパーサに与えることができる

実装

  • 再帰下降型のパーサである
  • 左再帰には対応していないし、対応する予定も無い
  • 通常のパーサはメモ化されないので、メモ化する場合はPEG::memo()メソッドを利用する

基本的な使い方

  1. パーサの構築
  2. コンテキストの構築
  3. パーサにコンテキストを与える
パーサの構築

パーサは通常PEGクラスメソッドから生成される。

ユーザは解釈したい文法にあわせて任意のパーサを構築する。

<?php

$parser = PEG::seq('a', 'b');
コンテキストの構築

PEG::contextメソッドを使うことで通常利用するコンテキストは生成される。

コンテキストは、パーサが解釈する対象や、対象の現在の位置の状態等を持つ。

<?php

$context = PEG::context('abc');
パーサにコンテキストを与える

パーサにコンテキストを与えるにはparseメソッドを呼び出す。

この返り値がパーサが返す結果である。パーサは失敗を返す事もある。

<?php

$result = $parser->parse($context);
 
?
閉じる
C-s
保存
C-a
行頭へ移動
C-e
行末へ移動
C-p
一行上へ
C-n
一行下へ
C-f
右に移動
C-b
左に移動
C-m
改行
C-h
backspace