関数型プログラミング言語Haskell Part13
■ このスレッドは過去ログ倉庫に格納されています
0647デフォルトの名無しさん
2011/01/19(水) 22:31:53A = Be | Ce | De | F
Be = B*
Ce = C?
De = D >> string "" --この種もε?
これを書き換えるとすると
A = B' | C | D | e
B' = B+
最も外側にある<|>までさかのぼってこの種の変換をする
再帰関数を書くことでうまくいくかもしれないけど
正しく動くのか検証出来そうにないです
Maybe C -> C
みたいにパース結果の型も変わるだろうし
色々と調べてみて
RFCにあるようなBNFをそのまま記述するだけで何とかなる、
みたいな夢のパーサジェネレータはないのかなと思いました
そういうのを実現出来るものがあるとすれば
GLRみたいなアルゴリズムを実装するしかないんでしょうね
そうすると実用的な速度では動かないから
実用レベルでは、もうちょっと細かいハックが色々と要るってことなのかな
■ このスレッドは過去ログ倉庫に格納されています