Java antLR解析器匹配的字符太多
我的语言有语法。这是它的一部分Java antLR解析器匹配的字符太多,java,antlr,lexer,Java,Antlr,Lexer,我的语言有语法。这是它的一部分 myAlias: (project_id '.' )? t_name; project_id: DIGIT ; DIGIT : '0'..'9'; 现在在调试输入字符串的解析器时 someText 1.myName 我可以看到解析器匹配的是“1”,而不是我所期望的数字中的“1”。这将进一步导致代码中的解析错误 我怎样才能避免这种行为 谢谢这一定是因为lexer默认的贪婪。 这里有一些关于如何处理它的例子 如果我没有弄错的话,您可以使用片段使lexer本身
myAlias: (project_id '.' )? t_name;
project_id: DIGIT ;
DIGIT : '0'..'9';
现在在调试输入字符串的解析器时
someText 1.myName
我可以看到解析器匹配的是“1”,而不是我所期望的数字中的“1”。这将进一步导致代码中的解析错误
我怎样才能避免这种行为
谢谢这一定是因为lexer默认的贪婪。 这里有一些关于如何处理它的例子 如果我没有弄错的话,您可以使用
片段
使lexer本身不匹配它作为标记。它看起来像这样:
fragment DIGIT = ('0'..'9')
fragment PROJECT_ID: DIGIT '.';
myAlias: PROJECT_ID? t_name;