【发布时间】:2019-10-21 12:04:15
【问题描述】:
我对这个 ANTLR 工具非常陌生,需要帮助在 ANTRL 中编写语法规则,用于使用 java 将纯文本转换/解析为等效的 .xml 文件。 请任何人帮助我。
根据我的理解,我尝试如下,它适用于单行(解析器)而不是完整的 configList(解析器)
下面的ANTLR语法规则是我的语法.g4
grammar MyTest;
acl : 'acl number' INT configList ('#' configList)* ;
configList : config ('\n' config)*;
config : line ('\n' line)* ;
line : line WORD INT (WORD)+ ((SOURCE_LOW_IP)* |(WORD)* |(SOURCE_LOW_IP)*)+
|WORD INT (WORD)+
;
fragment
DIGIT : ('0'..'9');
INT : [0-9]+ ; // Define token INT as one or more digits
//WORD : [A-Za-z][A-Za-z_\-]* ;
WORD : [A-Za-z][A-Za-z_\-]* ;
NEWLINE:'\r'? '\n' ; // return newlines to parser (is end-statement signal)
WS : [ \t\r\n]+ -> skip ; // toss out whitespace
SOURCE_LOW_IP : INT '.' INT '.' INT '.' INT ; // match IPs in parser
配置列表的示例输入:
acl number 3001
规则 0 允许 ip 源任何 规则 1 允许 ip 源 172.16.10.1 # 规则 2 允许 ip 源 172.16.10.2 0.0.0.255 规则 3 拒绝目的地任何 规则 4 拒绝目的地 172.16.10.4 规则 5 拒绝目的地 172.16.10.5 0.0.0.255 # 规则 6 允许 ip 源任何目标 172.16.10.6 0.0.0.255 规则 7 允许 ip 源 172.16.10.7 0.0.0.255 目标 172.16.11.7 #
预期输出格式如下(一旦antlr生成.java和其他文件,使用java会注意这一点)
【问题讨论】:
标签: java xml parsing antlr4 plaintext