これが背景です。顧客が単純なスクリプトを記述して、mongodb ベースのデータベースにクエリを実行できるようにする DSL を作成しようとしています。DSL を実装するために antlr を選択します。
私の理解では (正しくない場合はお知らせください)、antlr で生成されたパーサーをシステムに統合するには 2 つの方法があります。
- 生成されたパーサーを直接使用してデータベースにクエリを実行し、結果を特定の形式 (json エンコードなど) で返すことができるように、文法ファイルにコードを埋め込みます。
- パーサーに DSL ファイルをフィードした後、パーサーを純粋なパーサーのままにしておき、生成されたパーサー クラスから AST を取得して、別のクラスでクエリを構築します。
枝角の皆さん、枝角初心者の私が進むべき道はどれだと思いますか? 各アプローチの長所と短所を挙げていただけますか、または他の推奨方法はありますか?