为了解析测试文件,我想允许标识符以数字开头。
我的规则是:
ID : ('a'..'z' | 'A'..'Z' | '0'..'9' | '_') ('a'..'z' | 'A'..'Z' | '0'..'9' | '_' | '&' | '/' | '-' | '.')*
;
但是,我还需要匹配此文件中的数字。我的规则是:
INT : '0'..'9'+
;
显然 Antlr 不会让我这样做,因为 INT 永远不会匹配。
有没有办法允许这样做?具体来说,我想匹配一个 INTEGER 后跟一个没有空格的 ID 作为一个 ID,并且只有在它后面跟着一个空格时才创建一个 INT 令牌。
例如:
3BOB -> [ID with text "3BOB"]
3 BOB -> [INT with text "3"] [ID with text "BOB"]