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_列表”,我现在可以只接受数字。