簡體   English   中英

等於(不是令牌)在ANTLR語法中。 這是什么意思?

[英]Equal (not a token) in an ANTLR grammar. What does this mean?

在以下規則中,構造basename =是什么?

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

語法中只存在一次基basename

謝謝

在該語法中使用equals會創建一個名為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());}
;

在這里,我們說當我們匹配一個帶有PLUS或STAR令牌並后跟2個表達式的樹時,我們將匹配這些表達式並將它們分別命名為ab

使用完這些變量后,我們在Java語句中進行了匹配。 該語句包含在{}括號內。 在這里,我們使用java語句實際進行計算。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM