에는 런타임에 ANTLR을 사용하여 토큰의 축소 작업을 제어하는 방법이 있습니다. 예를 들어, 나는처럼 보이는 ANTLR 문법했습니다 : 나는 런타임에 결정하려는, 즉 모두 'A'와 'B'와 관련된 정확한 가능한 값은 런타임에 알려져있다토큰 감소 제어
s: (a | b);
a: WORD;
b: WORD;
WORD: ('a'..'z')+
를할지 여부 WORD를 'a'또는 'b'로 줄이십시오.
에는 런타임에 ANTLR을 사용하여 토큰의 축소 작업을 제어하는 방법이 있습니다. 예를 들어, 나는처럼 보이는 ANTLR 문법했습니다 : 나는 런타임에 결정하려는, 즉 모두 'A'와 'B'와 관련된 정확한 가능한 값은 런타임에 알려져있다토큰 감소 제어
s: (a | b);
a: WORD;
b: WORD;
WORD: ('a'..'z')+
를할지 여부 WORD를 'a'또는 'b'로 줄이십시오.
의미 론적 조건자를 사용하십시오. 규칙 a 및 b에 작업을 추가 할 계획이 아니라면이 예제는 특히 유용하지 않습니다.
s:
{someBoolFunction();}? a
| b
;
a: WORD;
b: WORD;
WORD: ('a'..'z')+
안녕하세요, 그것은 무엇을 찾고 있었는지 [명확한 의미 론적 술어] (http://stackoverflow.com/questions/3056441/what-is-a-semantic-predicate-in-antlr3)입니다. 감사 – bachr
죄송하지만이 문법은 작동하지 않습니다. 더 구체적으로 설명해 주실 수 있습니까? 정말로 원하는 것은 무엇입니까? 몇 가지 예가 될 수 있습니다 ... – Andremoniy
나는 reduce-reduce 충돌이 있음을 알고 있지만 런타임에서이 충돌을 해결할 방법을 찾고 있습니다. 나는 'a'에서 'b'로 축소 될 수있는 단어 표를 가지고 있지만이 시간은 런타임에 채워집니다. – bachr