Antlr 문법에서 동일 (토큰이 아님). 이것은 무엇을 의미 하는가?
문제
구성은 무엇을합니까 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());}
;
여기서 우리는 플러스 또는 스타 토큰과 2 개의 표현이있는 나무와 일치 할 때 표현과 일치하고 이름을 지정합니다. a
그리고 b
각기.
이러한 변수를 사용한 후에는 Java 문에서 일치합니다. 이 진술은 내부에 포함되어 있습니다 {
그리고 }
브래킷. 여기서 우리는 Java 문을 사용하여 실제로 계산을 수행합니다.
제휴하지 않습니다 StackOverflow