ANTLRの文法で等しい(ないトークン)。これは何を意味するのでしょうか?
質問
次のルールでは、構築物basename =
を何?
tabname:
(ID'.')? basename = ID
;
basename
のこの単一の発生は文法であります。
おかげ
解決
という構文で等号を使用すると、その後の行動の中で参照できる変数と呼ばれるbasename
を作成します:
tabname:
(ID '.')? basename=ID {
if ($basename.equals("CAT"))
System.out.println("CAT found");
};
他のヒント
変数に名前を付けるために使用されます。
あなたはパーサの間にいくつかのコードを実行したい場合、これは非常に役立つことができます。
Javaの電卓の例を考えてみます:
expr returns [float r]
{
float a,b;
r=0;
}
: #(PLUS a=expr b=expr) {r = a+b;}
| #(STAR a=expr b=expr) {r = a*b;}
| i:INT {r = (float)Integer.parseInt(i.getText());}
;
ここでは、我々は2つの表現が続くPLUSまたはSTARトークンを持つツリーと一致したときに、私たちはそれぞれの表現にマッチし、それらにa
とb
に名前を付けましょうと言っています。
私たちはJAVA文にマッチしたこれらの変数を使用します後。このステートメントは、{
と}
括弧の中に含まれています。ここでは、実際に計算を行うためにJavaステートメントを使用します。
所属していません StackOverflow