2014-06-09 3 views
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 ; 

운이 없다. 내가 뭘 잘못했는지 알 수 있니? 많은 감사.

답변

관련 문제