antlr4中引用字符串正则表达式的问题

antlr4中引用字符串正则表达式的问题,antlr4,Antlr4,我想解析像TOM*、TOM、*TOM、TOM*这样的字符串,以及所有这些不带引号的字符串。我创建了两个规则名为带引号的\u和不带引号的name,但带引号的字符串给出了预期的标记:error 我在lexer.g4文件中有以下令牌 ID : [a-zA-Z0-9-_]+ ; WILDCARD_STARTS_WITH_STRING: ID'*'; WILDCARD_ENDS_WITH_STRING: '*'ID; WILDCARD_CONTAINS_STRING : '

我想解析像TOM*、TOM、*TOM、TOM*这样的字符串,以及所有这些不带引号的字符串。我创建了两个规则名为带引号的\u和不带引号的name,但带引号的字符串给出了预期的标记:error

我在lexer.g4文件中有以下令牌

    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) ('"' | '\''); 
我的解析器文件中有以下规则:

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  ;
但是没有运气。知道我做错了什么吗? 非常感谢。

在这里找到了解决方案。 . 只是改变了顺序,它成功了