用于拆分数字的antlr4语法

antlr4 grammar for splitting the number

grammar Te;

/*
 * Parser Rules
 */

test : (example+ EOF);
example: digit COMMA digit2 NEWLINE; 
digit: (INT)+? ; 
digit2: (INT INT INT INT)+?; 

/*
 * Lexer Rules
 */ 

INT :[0-9]; 
COMMA: ','; 
NEWLINE : ('\r'? '\n' | '\r')+ ;

这是我编写的语法,用于将数字序列考虑为一位数,直到检测到逗号,然后将数字序列考虑为 4 位数字

比如我输入00000,12345678912345678912 现在它应该考虑 00000 并将其拆分为单个数字,如

token 1 =0, 
token 2 =0,
token 3 =0,
token 4 =0, 
token 5 =0,

在 COMMA 之后应该考虑 12345678912345678912 像

一样分裂
token 1 =1234, 
token 2 =5678,
token 3 =9123,
token 4 =4567, 
token 5 =8912,

但它没有采用第二条规则并将其打印为逗号后的单个数字

任何人,请帮助

提前致谢

你几乎做对了。您犯的唯一错误是您想循环解析器规则而不是词法分析器规则。因此你的语法应该是这样的:

example: digit+ COMMA digit2+ NEWLINE ;
digit: INT ;
digit2: INT INT INT INT ;