1

カスタム言語 (JSON とあまり似ていません) を解析しようとしていますが、楽しそうだったので、ブースト表現を使用することにしました。

ただし、xpressive の一致が失敗すると、単純に失敗します。ある種のエラー報告を実装する方法はありますか? 'のように、式は47文字目まで一致しました(そこから行番号を取得できます)。

必要なものを探し、この場合はエラーを報告した後、他のトークンまたは一致を探すように各サブ式を調整する方法はある程度わかりますが、それは非常に複雑な方法になるようです。

これを可能にする表現力のある機能はありますか(または誰かがアプローチを提案できますか)?

ありがとう。

4

1 に答える 1

0

代わりに ANTLR を使用することをお勧めします。これは、Boost Spirit/Qi のようなクールで最先端のものと、lex や yacc のような強力なツールとの間の適切な妥協点です。あまり労力をかけずに、必要に応じて、よりスマートなエラー報告を行うことができます。

現在、ANTLR バージョン 2 と 3 の両方が一般的に使用されていることに注意してください。2 には C++ コード生成が含まれていますが、3 には含まれていません。そのため、今のところ「古い」バージョンを使い続けることをお勧めします (v3 に最終的に C++ ターゲットが含まれる場合、移植はかなり簡単なはずです)。

于 2011-02-13T17:17:23.253 に答える