0

実行時にパーサーの文法規則を変更する必要があり、規則が変更されるたびにパーサーを再生成することを避けたいと考えています。

コード生成を使用しないパーサーはありますか?

よろしく、

4

2 に答える 2

0

PEGを使用できます(手書きまたはboost:spiritのようなもの)

PEG は LL 文法の厳密なスーパーセットではありませんが、制限付き否定や次のコンテキスト テストなどのさまざまな追加機能があるため、一般的により表現力があります。

于 2014-07-17T17:03:47.220 に答える
0

Earley parserを使用できます (つまり、おそらく自分で実装することを意味し、横たわっているライブラリである可能性は低いです) 。

もちろん、これには間接費がかかります。文法とそれが解析するソースが小さい場合、これで問題ない可能性があります。

そうでなければ、再考するかもしれません。パーサーを再構築したくないのはなぜですか? ほとんどのパーサー ジェネレーターは、人間がルールを編集するよりもはるかに高速に実行されます。

于 2014-07-17T16:51:02.300 に答える