Skip to content
mizuky fujitani edited this page Oct 9, 2017 · 3 revisions

unclazz-parsecのWikiにようこそ!

このWikiではパーサーコンビネータ・ライブラリ unclazz-parsec のコンポーネントやそれらを使ってパーサーを組み立てる方法を説明しています。

次に示すのはこのライブラリの主要コンポーネントとなるクラスもしくはインターフェースです。 多くが org.unclazz.parsec パッケージに含まれています。

クラス図

クラス 説明
Parser パーサーを表す抽象クラスです。このパーサーはパース成否に関わらず決して値のキャプチャを行いません。特定の文字や文字クラスにマッチするパーサー、特定のキーワードにマッチするパーサーなど、多くのパーサーはこのクラスの派生型です。ParsersParser自身が提供するprotectedなファクトリーメソッドを通じてインスタンスを得ることができるほか、後述のValParser<T>Parserへ変換することも可能です。
ValParser<T> パーサーを表す抽象クラスです。型パラメータはパース結果の型を表します。このパーサーは値のキャプチャも行います。ParsersValParser<T>自身が提供するprotectedなファクトリーメソッドを通じてインスタンスを得ることができるほか、前述のParserValParser<T>へ変換することも可能です。
Parsers 定義済みパーサーの静的ファクトリーメソッドを提供するユーティリティです。import staticの使用をおすすめします。
TextReader 入力データソースを表すクラスです。このクラスが公開する静的ファクトリーメソッドを使い各種データ型からインスタンスを生成します。
Context Parser#parse(...)ValParser<T>#parse(...)の引数となるクラスです。パーサーに対してTextReaderへのアクセスやログ出力機能などを提供します。
Result Parserのパース結果を表すクラスです。isSuccessful()でパース成否を、message()でパース失敗の理由を示すメッセージを取得できます。
ValResult<T> ValParser<T>のパース結果を表すクラスです。isSuccessful()プロパティでパース成否を、value()でキャプチャ結果を、message()でパース失敗の理由を示すメッセージを取得できます。
CharClass 文字クラスを表す抽象クラスです。charIn(CharClass)などのファクトリーメソッドの引数として利用します。CharClass自身が公開する静的ファクトリーメソッドを通じて派生クラスのインスタンスを得られます。

ライブラリのユーザ開発者は抽象クラスParser<T>Parserの派生クラスを実装するか、 Parsersユーティリティが提供する静的ファクトリーメソッドを通じて得られる定義済みパーサーを組み合わせてパーサーを実装します。 パーサーの実装方法について詳しくはパーサーを組み立てるページを参照してください。

ParserValParser<T>が公開するファクトリーメソッドについてはファクトリーメソッドに主要なものの一覧があります。 いくつかのファクトリーの引数として使用する文字クラスについては文字クラスのページを参照してください。

Clone this wiki locally