ANTLR4(八) 将JSON翻译成XML

本文介绍了使用ANTLR4将JSON转换为XML的过程,包括预期效果、语法文件分析、转换策略和具体实现步骤。通过建立辅助数据结构,从JSON的value开始向上构建XML节点,并处理object和array的嵌套情况,最后展示运行结果并提出对嵌套结构显示的优化思考。
摘要由CSDN通过智能技术生成

预期效果

输入t.json
在这里插入图片描述
输出t.xml
在这里插入图片描述

原有语法文件

// Derived from http://json.org

grammar JSON;

json:   object
    |   array
    ;

object
    :   '{' pair (',' pair)* '}'    
    |   '{' '}'                     
    ;
pair:   STRING ':' value ;

array
    :   '[' value (',' value)* ']'  
    |   '[' ']'                     
    ;

value
    :   STRING  #String
    |   NUMBER  #Atom
    |   object  #ObjectValue
    |   array   #ArrayValue
    |   'true'  #Atom
    |   'false' #Atom
    |   'null'  #Atom
    ;

STRING :  '"' (ESC | ~["\\])* '"' ;

fragment ESC :   '\\' (["\\/bfnrt] | UNICODE) ;
fragment UNICODE : 'u' HEX HEX HEX HEX ;
fragment HEX : [0-9a-fA-F] ;

NUMBER
    :   '-'? INT '.' [0-9]+ EXP? // 1.35, 1.35E-9, 0.3, -4.5
    |   '-'? INT EXP             // 1e10 -3e4
    |   '-'? INT                 // -3, 45
    ;
fragment INT :   '0' | [1-9] [0-9]* ; // no leading zeros
fragment EXP :   [Ee] [+\-]? INT ; // \- since - means "range" inside [...]

WS  :   [
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值