0
"TOM *", "TOM", "* TOM", "TOM", "*"등 인용 부호가없는 문자열을 구문 분석하려고합니다. 나는이 규칙은 따옴표없이 & 이름을 name_with_quotes 만들었지 만 따옴표 문자열을 토큰 예상주고있다 : <EOF> 오류 난 내 파서 규칙에 따라 한antlr4에서 따옴표 붙은 문자열 정규식과 관련된 문제
ID : [a-zA-Z0-9-_]+ ;
WILDCARD_STARTS_WITH_STRING: ID'*';
WILDCARD_ENDS_WITH_STRING: '*'ID;
WILDCARD_CONTAINS_STRING : '*'ID'*' ;
STRING : ('"' | '\'') (((~('"' | '\\' | '\r' | '\n') | '\\'('"'))*) |) ('"' | '\'');
QUOTED_ID : ('"' | '\'') (((STAR)? ID (STAR)?) | ID | STAR) ('"' | '\'');
lexer.g4 파일의 토큰 다음 한
파일 :
name_without_quotes : ID | WILDCARD_STARTS_WITH_STRING | WILDCARD_ENDS_WITH_STRING | WILDCARD_CONTAINS_STRING | STAR ;
name_with_quotes : QUOTED_ID;
name : name_with_quotes | name_without_quotes;
다음 규칙을 사용해 보았습니다.
WITHOUT_QUOTES : '"' (ID | ID'*' | '*'ID | '*'ID'*') '"';
WITH_QUOTES : ID | WILDCARD_STARTS_WITH_STRING | WILDCARD_ENDS_WITH_STRING | WILDCARD_CONTAINS_STRING | STAR ;
운이 없다. 내가 뭘 잘못했는지 알 수 있니? 많은 감사.