パーサジェネレータパーサジェネレータ(英: parser generator)は、構文解析器(解釈)を作成するプログラムである。 概要プログラミング言語のコンパイラの開発には技術と手間とを要する。それを支援するために、言語の構文などの定義から、コンパイラを生成するコンパイラジェネレータ(コンパイラコンパイラとも)が研究された。その過程で、入力を処理する構文解析器を自動生成するプログラムが開発され、広く実用に供されるようになった。これがパーサジェネレータである。 歴史伝統的には1970年代から開発されている yacc が有名である。名前は「Yet Another コンパイラコンパイラ」の略だが、実際はパーサジェネレータである。yaccの上位互換のものとしてGNUプロジェクトのbisonがある。 近年の発展パーサコンビネータパーサは入力を引数に取って解析結果を返す関数とみなすことができる。プログラミング言語に関数を組み合わせたりする能力(高階関数)があれば、演算子(コンビネータ)によりパーサを組み上げることができる。Parsecなどのパーサコンビネータライブラリが実装・公開され、使われている。 Packrat Parser→詳細は「パックラット構文解析」を参照
曖昧性の無い文法の解析のために、文脈自由文法の代わりとして使えるものとして、Parsing Expression Grammarの研究がすすんでいる。PEGの実用的なパーサとして提案されているものにPackrat Parserがあり、Packrat Parserを生成するパーサジェネレータが実装・公開され、使われている。 実装
脚注参考文献
|