[英]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個表達式的樹時,我們將匹配這些表達式並將它們分別命名為a
和b
。
使用完這些變量后,我們在Java語句中進行了匹配。 該語句包含在{
和}
括號內。 在這里,我們使用java語句實際進行計算。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.