代码处理方法及装置制造方法及图纸

技术编号:14399458 阅读:108 留言:0更新日期:2017-01-11 12:43
本发明专利技术公开一种代码处理方法及装置,方法包括:解析目标代码得到所述目标代码对应的语法树;解析所述语法树,确定所述目标代码包括的操作,并通过对所述语法树进行拓扑排序,将所述目标代码包含的操作序列化;生成与所述目标代码包括的操作一一对应的节点,并基于所述目标代码所包括的操作的序列化结果,以及所生成的节点生成节点序列,所述节点序列所包括的节点的排序与所述目标代码所包括操作的序列化结果对应;基于所述节点序列中的每个节点的信息依次对所述节点序列中的每个节点进行解析,得到所述目标代码对应的中间语言代码。采用本发明专利技术,能够在实现目标代码到矢量图的转换过程中输出可读的中间内容。

【技术实现步骤摘要】

本专利技术涉及中间语言技术,尤其涉及一种代码处理方法及装置
技术介绍
结构化查询语言(SQL,StructuredQueryLanguage)是一种数据库查询和程序设计语言,数据流通常是指一组有顺序的、有起点和终点的节点集合,用数据流的形式来表示SQL,把SQL文本中的原子节点集合按照一定的顺序组织起来,最终得到一个数据流图,称为矢量图;目前关于将SQL转换成矢量图形的相关技术方案非常少,主要的技术方案是先将SQL解析,并将解析所得内容通过可扩展标记语言(XML,ExtensibleMarkupLanguage)存储或直接进行处理,并使用高级程序语言的图形库绘制成与SQL等价的矢量图。将SQL转换成矢量图,从形态和结构上存在很大的差异导致基于相关技术实现这一转换时实现非常复杂,不存在可读可输出的中间内容,这就导致即使对SQL精通的数据专家难以参与从SQL到矢量图形的转化过程。综上所述,相关技术对于在实现SQL到矢量图的转换过程中,如何实现可读中间内容的输出,尚无有效解决方案。
技术实现思路
本专利技术实施例提供一种代码处理方法及装置,能够在实现在目标代码如SQL到矢量图的转换过程中输本文档来自技高网...
代码处理方法及装置

【技术保护点】
一种代码处理方法,其特征在于,所述方法包括:解析目标代码得到所述目标代码对应的语法树;解析所述语法树,确定所述目标代码包括的操作,并通过对所述语法树进行拓扑排序,将所述目标代码包含的操作序列化;生成与所述目标代码包括的操作一一对应的节点,并基于所述目标代码所包括的操作的序列化结果,以及所生成的节点生成节点序列,所述节点序列所包括的节点的排序与所述目标代码所包括操作的序列化结果对应;基于所述节点序列中的每个节点的信息依次对所述节点序列中的每个节点进行解析,得到所述目标代码对应的中间语言代码。

【技术特征摘要】
1.一种代码处理方法,其特征在于,所述方法包括:解析目标代码得到所述目标代码对应的语法树;解析所述语法树,确定所述目标代码包括的操作,并通过对所述语法树进行拓扑排序,将所述目标代码包含的操作序列化;生成与所述目标代码包括的操作一一对应的节点,并基于所述目标代码所包括的操作的序列化结果,以及所生成的节点生成节点序列,所述节点序列所包括的节点的排序与所述目标代码所包括操作的序列化结果对应;基于所述节点序列中的每个节点的信息依次对所述节点序列中的每个节点进行解析,得到所述目标代码对应的中间语言代码。2.如权利要求1所述的方法,其特征在于,所述生成与所述目标代码包括的操作一一对应的节点,包括:确定所述目标代码包括的操作所对应的名称、属性、输出至少三个方面的信息;基于每个所述操作所对应的至少三个方面的信息,生成与每个所述操作对应的节点。3.如权利要求2所述的方法,其特征在于,所述基于节点序列中的每个节点的信息依次对所述每个节点进行解析,得到所述目标代码对应的中间语言代码,包括:基于所述节点序列中的待处理节点的至少三个方面的信息至少生成实例化代码,所述实例化代码中包含与所述待处理节点对应的节点对象的名称;将所生成的实例化代码所设置的节点对象的名称进行入栈操作。4.如权利要求3所述的方法,其特征在于,基于所述节点序列中的待处理节点的至少三个方面的信息生成实例化代码,将所生成的实例化代码所对应的节点对象的名称进行入栈操作,包括:当所述节点序列中的待处理节点的名称为数据源时,对所述待处理节点的
\t至少三个方面的信息生成与所述待处理节点对应的实例化代码;将生成的实例化代码设置的对应所述待处理节点的节点对象的名称进行入栈操作。5.如权利要求3所述的方法,其特征在于,基于所述节点序列中的待处理节点的至少三个方面的信息生成实例化代码,将所生成的实例化代码所对应的节点对象的名称进行入栈操作,包括:当所述节点序列中的待处理节点的名称为非数据源、非交集且非合并时,对所述待处理节点之前的已处理节点对应的节点对象的名称进行出栈操作,利用出栈的节点对象名称、以及所述待处理节点的至少三个方面的信息生成对应所述待处理节点的实例化代码以及函数调用代码;将生成的实例化代码设置的对应所述节点的节点对象的名称进行入栈操作。6.如权利要求3所述的方法,其特征在于,基于所述节点序列中的待处理节点的至少三个方面的信息生成实例化代码,将所生成的实例化代码所对应的节点对象的名称进行入栈操作,包括:当所述待处理节点的名称为交集或合并时,对应所述待处理节点之前的两个已处理节点的对应的节点对象的名称进行两次出栈操作,利用出栈的两个节点对象名称生成与所述待处理节点对应的实例化代码,并将得到的实例化代码设置的对应所述节点的节点对象的名称进行入栈操作。7.如权利要求1至6任一项所述的方法,其特征在于,所述方法还包括:基于预先加载的运行库提供的应用程序接口和运行类,执行所述中间语言代码,绘制出与所述节点对应的图形元...

【专利技术属性】
技术研发人员:李金龙
申请(专利权)人:深圳市腾讯计算机系统有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1