解析時 (Java の ANTLR4) はいつエイリアスを解決する必要がありますか?
私は単純な「bash」のように見える DSL (パイプで接続されたコマンド) をcommand1 | command2 | ...
持っています。これは、定義済みの一連のコマンドのようなものです。alias com='command2 | command3'
(bash スタイル)のようなカスタム エイリアスを定義するオプションをユーザーに提供したいと考えています。command1 | com
次に、ユーザーは、と同等のクエリでそれを使用できる必要がありますcommand1 | command2 | command3
。
私はそれを行う必要があります (エイリアスの解決):
ユーザーが提供する生の入力テキスト。つまり、字句解析/解析の前に文字列
command1 | com
を次のように変更します。command1 | command2 | command3
レキシングからトークンを取得した後、
解析ツリーの構築中、
またはそれをトラバースするとき(コマンドを実行するとき)?
1) 着信文字列について何も知らず、エイリアスを置き換えるのは悪夢になるため、良い方法ではないようです。2)簡単ではないかもしれません。3) はまったく良いアプローチではないことを覚えていると思いますが、私の記憶は私をだましているだけかもしれません。これは私の最初の推測につながります-オプション番号4)。私はこれで正しいですか、それとも何か不足していますか? ここでの私の唯一の懸念は、エイリアスがそれ自体で小さなクエリになる可能性があるため、エイリアスの解決中にそれも解析する必要があるということですが、それは実行可能でしょうか?