我需要在 antlr4 中用 4 位数字解析一个数字
I need to parse a number by 4 digits in antlr4
我刚开始使用 antlr4 我只想编写一个可以解析数字序列但一次只能解析 select 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 : ',';
这是我写的语法,我需要它首先将单个数字打印为标记,然后在逗号后我需要将数字打印为标记中的 4 位数字,请检查附加图像并帮助我
相应的词法分析器规则如下所示:
QUADRUPLE:
INT INT INT INT
;
fragment INT:
[0-9]
;
所以这个问题的关键是放弃使用 ANTLR 的 "repeating-operators"(*
、+
)之一,并简单地手写重复,以便它与所需的完全匹配计数。
我刚开始使用 antlr4 我只想编写一个可以解析数字序列但一次只能解析 select 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 : ',';
这是我写的语法,我需要它首先将单个数字打印为标记,然后在逗号后我需要将数字打印为标记中的 4 位数字,请检查附加图像并帮助我
相应的词法分析器规则如下所示:
QUADRUPLE:
INT INT INT INT
;
fragment INT:
[0-9]
;
所以这个问题的关键是放弃使用 ANTLR 的 "repeating-operators"(*
、+
)之一,并简单地手写重复,以便它与所需的完全匹配计数。