antlr4中引用字符串正则表达式的问题
我想解析像TOM*、TOM、*TOM、TOM*这样的字符串,以及所有这些不带引号的字符串。我创建了两个规则名为带引号的\u和不带引号的name,但带引号的字符串给出了预期的标记:error 我在lexer.g4文件中有以下令牌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 : '
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 ;
但是没有运气。知道我做错了什么吗?
非常感谢。在这里找到了解决方案。
.
只是改变了顺序,它成功了