ANTLR-仅在括号之间写入数字
我不喜欢在括号内写字母/数字。然而,我的语法不接受数字 规则在我的语法文件中定义如下:ANTLR-仅在括号之间写入数字,antlr,grammar,antlr3,Antlr,Grammar,Antlr3,我不喜欢在括号内写字母/数字。然而,我的语法不接受数字 规则在我的语法文件中定义如下: id_list : '(' ID (',' ID)* ')' -> ID+ ; ID : ('a'..'z' | 'A'..'Z' | '_' | '.' | '-' | Digit)* ; Number : Int ('.' Digit*)? ; fragment Int : '1'..'9' Digit*
id_list
: '(' ID (',' ID)* ')'
-> ID+
;
ID
: ('a'..'z' | 'A'..'Z' | '_' | '.' | '-' | Digit)*
;
Number
: Int ('.' Digit*)?
;
fragment Int
: '1'..'9' Digit*
| '0'
;
fragment Digit
: '0'..'9'
;
但是我不会写(1,2)。它告诉我“不匹配的输入'1'需要ID”
它只接受字母或带数字的字母,而不仅仅是数字
你能告诉我怎么了吗?当给出1234444时,lexer无法猜出你是指一个ID还是一个数字。
此问题类似于:由于您已将其包含在该问题中,语法应该正常工作。在创建问题时,您要么从语法中删除了一些规则,要么更改了规则的顺序,使其不再产生您描述的结果。(或者你在ANTLR 3中发现了一个bug。)嗯,这很奇怪。如果我将“'('Number(','Number)*')”->Number+“添加到“id_列表”,我现在可以只接受数字。