basename =
次の規則の構成要素は何ですか?
tabname:
(ID'.')? basename = ID
;
basename
文法には、この単一の出現があります。
ありがとう
basename
その構文で equals を使用すると、アクションで参照できるという変数が作成されます。
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());}
;
ここでは、PLUS または STAR トークンの後に 2 つの式が続くツリーを一致させる場合、式を一致させa
てb
それぞれに名前を付けると言います。
これらの変数を使用した後、Java ステートメントで一致させます。このステートメントは、括弧{
と}
括弧の中に含まれています。ここでは、java ステートメントを使用して実際に計算を行います。