문제

구성은 무엇을합니까 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 문을 사용하여 실제로 계산을 수행합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top