我刚刚开始使用antlr4我只想编写一个可以解析数字序列但只能一次选择4位数的语法
例如,我的号码是1234567891234567 然后我希望它将前4个数字解析为1个令牌,然后将下一个数字解析为另一个令牌,然后将另一个数字解析为另一个令牌,以便获得4个不同的4位数令牌。
token1 = 1234,
token2 = 5678,
token3 = 9123,
token4 = 4567,
任何人都可以帮我写这个语法吗
grammar TEST;
/*
* Parser Rules
*/
test : (example+ EOF);
example : digit COMMA digit2 NEWLINE;
digit : SINGLE+;
digit2 : QUADRUPLE+;
/*
* Lexer Rules
*/
SINGLE:
INT
;
QUADRUPLE:
INT INT INT INT
;
fragment INT:
[0-9]
;
NEWLINE : ('\r'? '\n' | '\r')+ ;
COMMA : ',';
这里的语法我已经写了我需要它来打印单个数字作为标记第1个然后在逗号之后我需要将数字打印为4digits在标记中请检查附加图像并帮助我< / p>
答案 0 :(得分:1)
相应的词法分析器规则如下所示:
QUADRUPLE:
INT INT INT INT
;
fragment INT:
[0-9]
;
因此,这个问题的关键是放弃使用ANTLR&#34;重复运算符&#34; (*
,+
)并且只需手动编写重复内容,使其与所需的数字完全匹配。