, 나는 아주 간단한이 테스트 데이터의 구문 분석을 시도하고 문법 위해 모호성을 해결하지ANTLR4 렉서는
BEGIN : 'begin' ; // match b-e-g-i-n sequence; ambiguity resolves to BEGIN
ID : [a-z]+ ; // match one or more of any lowercase letter
실행 : 렉서의 RRV는 테렌스 파의 확실한 ANTLR 4 참조에서 아래의 발췌에 따라, ID 전에 일치하는 닝 상기 테스트 데이터와 ANTLR4 테스트 장비는, 출력
[@0,0:3='RRV0',<4>,1:0]
[@1,4:4='#',<3>,1:4]
[@2,5:7='ABC',<4>,1:5]
[@3,10:9='<EOF>',<-1>,2:0]
line 1:0 mismatched input 'RRV0' expecting 'RRV'
나는 값과, 상기 제 토큰 ID 용 < 4>는 볼 수는 'RRV0'I는 렉서 정리 시도
항목 순서. 또한 명시 적 렉서 항목을 통하는 대신 문법 규칙에서 명시 적으로 일치시켜 암시 적 렉서 항목을 사용하려고했습니다. 나는 성냥도 욕심이없는 만들려고 노력했다. 그것들은 나를 위해 성공하지 못했습니다.
어휘 ID 항목을 대문자와 일치하지 않게 변경하면 RRV 항목이 일치하고 구문 분석이 더 진행됩니다.
나는 ANTLR 4.1에서 같은 문제로 시작했다.
ANTLRWorks와 명령 줄에서 동일한 방법으로 두 가지 방법으로 확인했습니다.
ID보다 선호하는 렉서 항목 RRV와 일치하도록 문법을 변경하려면 어떻게해야합니까?
완벽하게 이해할 수 있습니다. 'RRV'를 토큰으로 명시 적으로 일치시키기 위해 문법을 작성할 수 있습니까? 나는 ID를 매칭하도록 선택해야하고 ID를 확인하기 위해 추가 코드를 사용해야한다고 생각한다. "RRV" – Colin