0
我正在使用ANTLR4作为项目,但我的任务是我不太了解。我有一个词法分析规则标记化以下划线或字母开头的内容,不能以'xml'开头,并且可以包含句点,破折号,字母,数字和下划线。我如何确保开头是一个字母或下划线,并确保它不是'xml'?ANTLR4特定位置的特定字符
我正在使用ANTLR4作为项目,但我的任务是我不太了解。我有一个词法分析规则标记化以下划线或字母开头的内容,不能以'xml'开头,并且可以包含句点,破折号,字母,数字和下划线。我如何确保开头是一个字母或下划线,并确保它不是'xml'?ANTLR4特定位置的特定字符
语法:
grammar Expr;
prog: word+ EOF;
word : STRING ;
STRING : ~[xml]STRINGCHAR+;
WS : [ \t\r\n]+ -> skip;
fragment
STRINGCHAR : [_a-z] ;
匹配“男孩”和“_girl”,而不是“xmlboy”通过明确排除〜运营商定义字符串。
这个问题很抽象。你能举一些具体的例子吗? – Rnet
我想具体怎么去识别一个以下划线或字母开头但并不以字母'xml'开头的字符串。因此,它会接受'_hello'和'hello',但不接受'xmlhello' – Alex5775
您可以在定义令牌时使用负面预见正则表达式模式。例如:^(?! xml)。+将匹配任何不以xml开头的东西 – Rnet