구문 분석시 다음 오류가 발생하지만 그 이유는 확실하지 않습니다.antlr4 SQL 구문 분석기의 입력 오류가 잘못되었습니다.
라인 1:24가 일치하지 않음 '1'이 (가) NUM 라인 1:24가 일치하지 않습니다. '1'이 (가) NUM 을 예상합니다. abc 제한 1을 선택하십시오.
-
문법 SQLCmd;
parse : sql ;
SQL : (((열 (','열) ) '선택'| '에서'카운트)) 테이블을 ('여기서'조건 ((그리고 | 또는) 조건)) * (제한) ? ';' ;
한계 : '제한'NUM ;
num : NUM ;
카운트 : '카운트 (*)' ;
열 : VAL ;
테이블 : VAL ;
조건 : (왼쪽 '='오른쪽) + ;
및 : '및' ;
또는 '또는' ;
왼쪽 : VAL ;
오른쪽 : VAL ;
VAL : [* a-z0-9A-Z ~?] + ;
NUM : [0-9] + ;
WS : [\ t \ n \ r] + -> skip ;
고마워요! 파서 규칙에서 '제한'NUM을 명시 적으로 말하면 왜 VAL이 먼저 일치합니까? – user3536913
_all_ lexing은 파서가 관련되기 전에 수행됩니다. 이것은 문맥에 의존해서는 안되는 미리보기와 관련이 있습니다 ("문맥 자유 문법"참조). – Onur