나는 오랫동안 문법을 연구 해왔다.하지만 지금은 큰 코드 기반에서 시도 할 때이 성가신 문제가 발생한다. 예를 들어 "INDEX"와 같은 ID를 구문 분석하려고 할 때 'INDEX'를 찾는 또 다른 규칙이 있는데 파서가 실패합니다. 나는이 문제를 설명하기위한 예시 문법을 만든 : 나는 "@some = 'some'
"을 구문 분석하려고 해요 그래서ANTLR ID가 렉서 규칙과 섞이게된다.
public variable : '@' ID '=' STRING;
index : INDEX;
WS : (' '|'\r'|'\t'|'\u000C'|'\n') {Skip();};
INDEX : 'INDEX';
ID : ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'0'..'9'|'_')*;
STRING : '\'' (ESC_SEQ | ~('\\'|'\''))* '\'';
를 잘 작동하지만, "@index = 'some'
는"C 번호에 AST를 나에게 {<mismatched token: [@1,1:5='index',<8>,1:1], [email protected]='some'>}
출력을 제공하다 . 해결 방법에 대한 아이디어가 있으십니까?
,하지만 내 큰 문법에서 나는 사람들의 수백이 있습니다
는에 수정 될 것이다. 그러면 문법의 모든 단어를 제거하고 확인해야합니다. ID로 모든 것을 구문 분석하고 나중에 처리하는 것은 나에게 의미가 없습니다. 그렇게하면 효과가 있습니까? – JakobHaggvariable
규칙