知りたい事1
パーサコンビネータを知りたくて、質問をしました。
例えばですが、quitaの記載にあるパーサコンビネータには以下のようなソースコード(1文字取得のパーサ)がありますが
一文字取得のパーサは字句解析と明確な違いは何でしょうか?
Java
1public class Test { 2 static char anyChar(String s) { 3 return s.charAt(0); 4 } 5 public static void main(String[] args) { 6 System.out.println(anyChar("abc")); 7 } 8}
知りたい事2
次に、パーサコンビネータはパーサではなくパーサを生成したり、組み合わせるプログラムという事でよろしいでしょうか?
例えば、特定の文字を切り取るパーサを生成する時に、構文規則(指定する文字)を引数として受け取り構文解析するプログラムはパーサとするのかパーサを生成するプログラムとなるのか確認したいです。
知りたい事3
最後に、パーサコンビネータに関わらずコンパイラの構文解析は何を表しているのでしょうか?
字句解析→構文解析→中間コード生成→コード最適化→コード生成
(中間コード生成がなぜ構文解析から成り立つのかが分かりません(構文解析が構文解析木を作成している事は分かっています))
できれば、参照したサイトのパーサコンビネータからやっている事から教えて頂けると助かります。
そして、パーサコンビネータは種類や記載する内容にもよりますがどこまで解析するのでしょうか?
字句解析と構文解析をまとめて行っているや構文解析や意味解析や文脈解析まで行うなど
知りたい事4
代表的なパーサコンビネータライブラリはどのようなものがありますか?
HaskellのPersecなど
参照サイト
回答1件
あなたの回答
tips
プレビュー