1

basename =次の規則の構成要素は何ですか?

tabname:
   (ID'.')? basename = ID
;

basename文法には、この単一の出現があります。

ありがとう

4

2 に答える 2

2

basenameその構文で equals を使用すると、アクションで参照できるという変数が作成されます。

tabname:
    (ID '.')? basename=ID {
        if ($basename.equals("CAT"))
            System.out.println("CAT found");
    };
于 2010-02-09T16:45:27.803 に答える
1

変数に名前を付けるために使用されます。

これは、パーサー中にコードを実行したい場合に非常に便利です。

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 つの式が続くツリーを一致させる場合、式を一致させabそれぞれに名前を付けると言います。

これらの変数を使用した後、Java ステートメントで一致させます。このステートメントは、括弧{}括弧の中に含まれています。ここでは、java ステートメントを使用して実際に計算を行います。

于 2010-02-09T18:06:11.107 に答える