这应该相当简单。我正在使用 ANTLR 研究词法分析器语法,并希望将变量标识符的最大长度限制为 30 个字符。我试图用这一行来完成这个(遵循正常的正则表达式 - 除了 '' 东西 - 语法):
ID : ('a'..'z'|'A'..'Z') ('a'..'z'|'A'..'Z'|'0'..'9'|'_'){0,29} {System.out.println("IDENTIFIER FOUND.");}
;
代码生成没有错误,但是由于生成的代码中的一行简单而导致编译失败:
0,29
显然,antlr 将括号之间的文本部分与打印行一起放置在接受状态区域中。我搜索了 ANTLR 站点,但没有找到任何示例或对等价表达式的引用。这个表达式的语法应该是什么?