一种基于GCC抽象语法树的程序特征提取方法

一种基于GCC抽象语法树的程序特征提取方法
作者:张良德 赵彦博
来源:《电子技术与软件工程》2013年第20
骨刺灵uvlo电路>纸浆模具
        推杆炉 提出一种基于GCCGNU Compiler Collection)抽象语法树建立程序特征文本的方法,消除抽象语法树中与程序无关的结点,从消除冗余后的抽象语法树文本中提取可以表达程序语义的可用结点;之后对其进行信息提取,从而高效地生成程序特征文本。通过实验证明了该方法的正确性与实用性。
        【关键词】抽象语法树 信息提取 程序代码 特征文本
        1 引言
        目前主流的程序代码抄袭检测系统JPlag[1]YAP3[2]都采用字符串比较技术,这种技术核心问题之一是提取可以表示源程序的特征[3],即能够代表该程序内容和结构信息的字符串,该字符串是一个线性串,其包含的程序结构信息的多少,将直接影响结果的准确性。针对上述问题,本文提出了一种程序特征提取方法。该方法借助GCCGNU Compiler Collection)编译器,将程序转换成抽象语法树(Abstract syntax tree),重点分析AST结构,从中提取表达程序语义的信息。
        1.1 AST结构
        GCC 编译器以源程序的过程为单位生成AST,而且包含整个编译单元的完整表示, 比较直观地表示出源程序的语法结构,并含有源程序结构显示所需的全部静态信息。ASTGCC编译器前端的中心数据结构,AST的结点类型包括以下7种:标识符结点(identifiersappcpa),类型结点(types),声明结点(declarations),函数结点(functions单顶置凸轮轴),范围结点(scope),语句结点(statements),表达式结点(expressions)。从GCC编译器3.0版本开始,用编译参数-fdump-translation-unit[4]可以得到*.tu的以文本形式输出的AST文件,其中*为源程序名,部分AST文件如图1所示,一个结点的AST结构如图2所示,一个AST文本有若干个这样的结点组。

本文发布于:2024-09-22 11:26:43,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/253214.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:程序   结点   源程序   文本   方法   语法   抽象
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议