Что делает конструкция basename =
в следующем правиле?Равно (не токен) в грамматике ANTLR. Что это значит?
tabname:
(ID'.')? basename = ID
;
Существует это единственное появление basename
в грамматике.
Благодаря
Что делает конструкция basename =
в следующем правиле?Равно (не токен) в грамматике ANTLR. Что это значит?
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());}
;
Здесь мы говорим, когда мы сопоставляем дерево, которое имеет PLUS или ЗВЕЗДУ лексема следуют 2 выражения, мы возместим выражения и называть их a
и b
соответственно ,
После того, как мы будем использовать эти переменные, мы сопоставим в описании java. Этот оператор содержится внутри скобок {
и }
. Здесь мы используем инструкции java для фактического расчета.
хороший ответ Kaleb :) – chollida