나는 다음과 같은 문법을 짓고 있어요 : 나는 "CDIJK을"CD923 "을 소비해야하지 때문에 성공적으로 문자열"CD923IJK "을 구문 분석하지 ANTLR의 근거를-LL (*) 구문 분석 메커니즘
Letter : 'a'..'z'|'A'..'Z' ;
Number : '0'..'9' ;
Float
: Number+ '.' Number+
;
a5
@init
{
int n = 1;
}
: ({n<=5}?=>(Letter|Number){n++;})+
;
내가
물론 고급 분석을 필요로
을 원하는 것처럼이 문법은 LL (K)이 있기 때문에, "CD923"을 FLOAT이 문제가 사라 주석되어 사용되는 경우일어나고처럼 "나는 내다 깊이
을 설정하고있어options
{
k=5;
}
하지만 아무 것도 해결되지 않았습니다. 어떤 생각? 제안 500 - Internal Server Error 에
UPDATE
응답 나는 다음과 같은 규칙
내가 CD923은 영숫자와 1.23 부동이다 CD9231.23 일치 할 필요public test :a5 Float ;
을 추가했다. 난 당신이 간단한 해결책을 만들 수 어쩌면 생각
실제 문법과 입력입니까? 그것은 당신이 점이 없기 때문에'Float' 규칙이 어떤 입력과도 매치 할 수있는 방법을 보지 못합니다. –
@ 500-InternalServerError 이것은 내 문법의 단편입니다. 문제는 이것이 일어난 이유입니다. 체인을 따르는 3 개의 글자에서 "123"을 건너 뛰고 소비하는 이유는 무엇입니까? – Cyberguille
제 제안은 실패한 입력 내용과 함께 여기에 올릴 수있는 문법을 줄이는 것입니다. –