パーサを手動で書く必要があります。 LL(*)とLRのどちらかを選ぶことはできません(おそらくEarleyを試してみてください)。 LLの文法はむしろ難しいので、ボトムアップ解析を使うべきですか?マニュアルパーサーを書く
0
A
答えて
0
これは、使用しようとする文法によって異なります。 LLは文法の不確定さにいくつかの問題を抱えています(あなたはすべてを左回帰する必要があります)。
決定できない場合は、LR(1)またはLALRと一緒にご連絡ください。多分GLRさえ。
0
0
手で書く最も簡単なタイプのパーサは、LLパーサのファミリにある再帰的降下パーサです。他のほとんどのタイプのパーサーは、手書き(大状態遷移テーブルを使用するLALRパーサー)や複雑な言語(自然言語の解析用のEarleyパーサーなど)の解析用には難しいものです。
wikipediaには、再帰的な下降解析に関するいくつかの優れた情報があります。
2
私は、再帰的降下パーサーまたはテール再帰的降下パーサー(すなわち、LL)またはトップダウン演算子優先パーザのいずれかを使用します。
LR、LALR(k)、LALR(1)、GLRなど、パーザのLRファミリは、あなたの頭に残すにはあまりにも "奇妙な"ものであれば何でも構いません。そのうちの1つを書こうとすると、とにかく普通のままにするためには、というパーサー・ジェネレータを実装することになります。
+0
ああナンセンス。私は1979年以来LALRを使ってきましたが、私自身のパーサージェネレータを実装する必要はありませんでした。 – EJP
大部分は、解析しようとしている言語の種類によって異なります。あなたのアプリケーションに関する情報がなければ、どんな種類の合理的な提案もすることは不可能です。 「関連する」質問を見ることもできます(下にスクロールし、右に見てください)。ここでは、構文解析について多くの質問があり、良い議論がたくさんあります。 –
なぜパーサーを手動で書く必要がありますか?これには一般的に価値がありません。 –
yaccやその他のパーサを使用することはできません。パーサは動作します – mystdeim