CN111124414A - 一种基于操作链接的抽象语法树取词方法 - Google Patents
一种基于操作链接的抽象语法树取词方法 Download PDFInfo
- Publication number
- CN111124414A CN111124414A CN201911215834.3A CN201911215834A CN111124414A CN 111124414 A CN111124414 A CN 111124414A CN 201911215834 A CN201911215834 A CN 201911215834A CN 111124414 A CN111124414 A CN 111124414A
- Authority
- CN
- China
- Prior art keywords
- abstract syntax
- syntax tree
- nodes
- variable
- word
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 31
- 238000000605 extraction Methods 0.000 claims abstract description 19
- 238000004590 computer program Methods 0.000 claims abstract description 11
- 230000008569 process Effects 0.000 claims description 4
- 230000009466 transformation Effects 0.000 claims 1
- 230000006870 function Effects 0.000 description 12
- 238000010586 diagram Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000003058 natural language processing Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明实施例公开了一种基于操作链接的抽象语法树取词方法,所述取词方法为:利用编译器将计算机程序处理为抽象语法树,在抽象语法树的基础上进行取词;抽象语法树构建完成后,对抽象语法树进行处理,删除出现频率大的没有区分价值的节点,去除干扰冗余;利用变量连接将抽象语法树进行合并,删除作为连接点的变量节点;得到最终唯一的抽象语法树,从树根到树叶按照预设规则进行取词。解决现有指令码取词方式单一,不能体现程序语言内在含义的问题。
Description
技术领域
本发明实施例涉及及其语言处理技术领域,具体涉及一种基于操作链接的抽象语法树取词方法。
背景技术
自上世纪40年代现代数字计算机发明以来,人类创造了数量繁多的程序语言,以及使用不同程序语言编写的代码。在实践中,需要对这些程序进行分析,比如发现隐藏的恶意代码,比如软件版权保护,再比如软件家族溯源……显然,这项工作是浩大而艰难的。一个自然的想法是使用一些自动化的手段来帮助人工实施分析。
近年来,自然语言处理(Natural Language Processing,NLP)是人工智能应用的一个热点,在应用的过程中产生了很多基础技术,比如n-gram。随着人工智能技术向相关领域渗透和扩展,一些技术也在不同的领域中取得了新的发展。计算机程序语言来自人类的自然语言,但又有很多不同。使用传统的N-Grams的一个问题是计算机程序语句的前后次序关系和人类的自然语言有些差别。
发明内容
为此,本发明实施例提供一种基于操作链接的抽象语法树取词方法,以解决现有指令码取词方式单一,不能体现程序语言内在含义的问题。
为了实现上述目的,本发明实施例提供如下技术方案:
本发明实施例公开了一种基于操作链接的抽象语法树取词方法,所述取词方法为:
利用编译器将计算机程序处理为抽象语法树,在抽象语法树的基础上进行取词;
抽象语法树构建完成后,对抽象语法树进行处理,删除出现频率大的没有区分价值的节点,去除干扰冗余;
利用变量连接将抽象语法树进行合并,删除作为连接点的变量节点;
得到最终唯一的抽象语法树,从树根到树叶按照预设规则进行取词
进一步地,所述编译器处理流程为:对计算机程序进行词法分析,词法分析结束后进行语法分析,语法分析后生成抽象语法树。
进一步地,所述抽象语法树包括但不限于赋值操作、函数调用操作、和动态调用操作,赋值操作包括变量和函数调用两个叶节点,函数调用下设有函数名叶节点和参数类型叶节点,参数类型下设参数值叶节点,动态调用包括变量和调用参数两个叶节点,调用参数下设有变量和参数类型两个叶节点。
进一步地,所述抽象语法树进行关联处理,删除变量节点,用具体的函数名替代函数调用节点,删除具体的参数类型节点下的叶节点,用变量名替代赋值操作节点,通过变量名建立抽象语法树之间的连接。
进一步地,利用抽象语法树之间的变量连接进行合并,合并后删除作为连接节点的变量节点,得到转化后唯一的抽象语法树。
进一步地,在抽象语法树上进行取词操作,取词的顺序为从树根到树叶,不同子树之间不交叉。
进一步地,所述取词方法为利用n-grams取词操作进行取词,所述n-grams取词操作为:从链接指令数的树根开始向下遍历,忽略叶子节点,其中n为取n个词。
进一步地,所述抽象语法树在取词过程根据预设的取词规则进行取词,取词完成后输出取词结果。
本发明实施例具有如下优点:
本发明实施例公开了一种基于操作链接的抽象语法树取词方法,利用编译器将计算机程序处理为抽象语法树,对抽象语法树进行处理,将符合逻辑联系的节点进行关联,去除干扰冗余和区别效果不好的节点,并利用变量的内在逻辑联系将抽象语法树进行合并,合并完成后进行取词。借助抽象语法树的树状结构,重构了语句的顺序,使其取出的词组更加贴合程序的本质逻辑,实现程序识别准确率的提高。
附图说明
为了更清楚地说明本发明的实施方式或现有技术中的技术方案,下面将对实施方式或现有技术描述中所需要使用的附图作简单地介绍。显而易见地,下面描述中的附图仅仅是示例性的,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图引伸获得其它的实施附图。
本说明书所绘示的结构、比例、大小等,均仅用以配合说明书所揭示的内容,以供熟悉此技术的人士了解与阅读,并非用以限定本发明可实施的限定条件,故不具技术上的实质意义,任何结构的修饰、比例关系的改变或大小的调整,在不影响本发明所能产生的功效及所能达成的目的下,均应仍落在本发明所揭示的技术内容得能涵盖的范围内。
图1为本发明实施例提供的一种基于操作链接的抽象语法树取词方法的流程图;
图2为本发明实施例提供的一种基于操作链接的抽象语法树取词方法的抽象语法树示意图;
图3为本发明实施例提供的一种基于操作链接的抽象语法树取词方法的抽象语法树连接示意图;
图4为本发明实施例提供的一种基于操作链接的抽象语法树取词方法的合并结果示意图。
具体实施方式
以下由特定的具体实施例说明本发明的实施方式,熟悉此技术的人士可由本说明书所揭露的内容轻易地了解本发明的其他优点及功效,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1
参考图1,本实施例公开了一种基于操作链接的抽象语法树取词方法,所述取词方法为:
利用编译器将计算机程序处理为抽象语法树(Abstract Syntax Tree,AST),在抽象语法树的基础上进行取词;
抽象语法树构建完成后,对抽象语法树进行处理,删除出现频率大的没有区分价值的节点,去除干扰冗余;
利用变量连接将抽象语法树进行合并,删除作为连接点的变量节点;
得到最终唯一的抽象语法树,从树根到树叶按照预设规则进行取词。
编译器处理流程为:对计算机程序进行词法分析,词法分析结束后进行语法分析,语法分析后生成抽象语法树。
本实施例以具体程序为例对取词方法进行说明,程序为:
$x=base64_decode(“YXNZZXJ0”);
$x($_POST[‘C’]);
将计算机程序通过编译器转化为抽象语法树的形式,参考图2,生成两个抽象语法树,抽象语法树包括但不限于赋值操作、函数调用操作、和动态调用操作,赋值操作为assign,赋值操作包括变量var和函数调用func_call两个叶节点,函数调用下设有函数名base64_decode叶节点和参数类型string节点,参数类型下设参数值叶节点“YXNZZXJ0”,动态调用为dynamic_call,动态调用包括变量var和调用参数array_value两个叶节点,调用参数下设有变量var和参数类型string两个叶节点。
对抽象语法树进行关联处理,删除变量节点var,用具体的函数名替代函数调用func_call节点,删除具体的参数类型节点下的叶节点,用变量名替代赋值操作assign节点,通过变量名建立抽象语法树之间的连接,得到图3。
参考图4,将相关联程序利用$进行连接,使两个抽象语法树进行合并,合并后删除作为连接节点的变量节点,得到转化后唯一的抽象语法树。利用n-grams取词操作进行取词,以2-grams为例,得到dynamic_call base64_decode”、“base64_decode string”、“dynamic_call array_value”、“array_value$_POST”、“array_value string”,更加符合计算机程序的逻辑顺序。取词完成后,对取词结果进行输出。
本发明实施例公开的一种基于操作链接的抽象语法树取词方法利用编译器将计算机程序处理为抽象语法树,对抽象语法树进行处理,将符合逻辑联系的节点进行关联,去除干扰冗余和区别效果不好的节点,并利用变量的内在逻辑联系将抽象语法树进行合并,合并完成后进行取词。借助抽象语法树的树状结构,重构了语句的顺序,使其取出的词组更加贴合程序的本质逻辑,实现程序识别准确率的提高。
虽然,上文中已经用一般性说明及具体实施例对本发明作了详尽的描述,但在本发明基础上,可以对之作一些修改或改进,这对本领域技术人员而言是显而易见的。因此,在不偏离本发明精神的基础上所做的这些修改或改进,均属于本发明要求保护的范围。
Claims (8)
1.一种基于操作链接的抽象语法树取词方法,其特征在于,所述取词方法为:
利用编译器将计算机程序处理为抽象语法树,在抽象语法树的基础上进行取词;
抽象语法树构建完成后,对抽象语法树进行处理,删除出现频率大的没有区分价值的节点,去除干扰冗余;
利用变量连接将抽象语法树进行合并,删除作为连接点的变量节点;
得到最终唯一的抽象语法树,从树根到树叶按照预设规则进行取词。
2.如权利要求1所述的一种基于操作链接的抽象语法树取词方法,其特征在于,所述编译器处理流程为:对计算机程序进行词法分析,词法分析结束后进行语法分析,语法分析后生成抽象语法树。
3.如权利要求1所述的一种基于操作链接的抽象语法树取词方法,其特征在于,所述抽象语法树包括但不限于赋值操作、函数调用操作、和动态调用操作,赋值操作包括变量和函数调用两个叶节点,函数调用下设有函数名叶节点和参数类型叶节点,参数类型下设参数值叶节点,动态调用包括变量和调用参数两个叶节点,调用参数下设有变量和参数类型两个叶节点。
4.如权利要求3所述的一种基于操作链接的抽象语法树取词方法,其特征在于,所述抽象语法树进行关联处理,删除变量节点,用具体的函数名替代函数调用节点,删除具体的参数类型节点下的叶节点,用变量名替代赋值操作节点,通过变量名建立抽象语法树之间的连接。
5.如权利要求1所述的一种基于操作链接的抽象语法树取词方法,其特征在于,所述抽象语法树之间的变量连接进行合并,合并后删除作为连接节点的变量节点,得到转化后唯一的抽象语法树。
6.如权利要求5所述的一种基于操作链接的抽象语法树取词方法,其特征在于,所述抽象语法树上进行取词操作,取词的顺序为从树根到树叶,不同子树之间不交叉。
7.如权利要求6所述的一种基于操作链接的抽象语法树取词方法,其特征在于,所述取词方法为利用n-grams取词操作进行取词,所述n-grams取词操作为:从链接指令数的树根开始向下遍历,忽略叶子节点,其中n为取n个词。
8.如权利要求6所述的一种基于操作链接的抽象语法树取词方法,其特征在于,所述抽象语法树在取词过程根据预设的取词规则进行取词,取词完成后输出取词结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911215834.3A CN111124414B (zh) | 2019-12-02 | 2019-12-02 | 一种基于操作链接的抽象语法树取词方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911215834.3A CN111124414B (zh) | 2019-12-02 | 2019-12-02 | 一种基于操作链接的抽象语法树取词方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111124414A true CN111124414A (zh) | 2020-05-08 |
CN111124414B CN111124414B (zh) | 2024-02-06 |
Family
ID=70496900
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911215834.3A Active CN111124414B (zh) | 2019-12-02 | 2019-12-02 | 一种基于操作链接的抽象语法树取词方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111124414B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112860264A (zh) * | 2021-03-30 | 2021-05-28 | 中国工商银行股份有限公司 | 一种抽象语法树重构方法及装置 |
CN115345155A (zh) * | 2022-08-28 | 2022-11-15 | 成都华大九天科技有限公司 | Sv运行时的表达式求值方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2879099B1 (ja) * | 1998-02-26 | 1999-04-05 | 工業技術院長 | 抽象構文木処理方法、抽象構文木処理プログラムを記録したコンピュータ読み取り可能な記録媒体、抽象構文木データを記録したコンピュータ読み取り可能な記録媒体、及び、抽象構文木処理装置 |
CN101621480A (zh) * | 2008-06-30 | 2010-01-06 | 国际商业机器公司 | 呈现服务器和在其中使用的xsl文件处理方法 |
CN101908006A (zh) * | 2010-07-30 | 2010-12-08 | 北京理工大学 | 一种基于gcc抽象语法树的缓冲区溢出漏洞检测方法 |
CN104657140A (zh) * | 2015-02-10 | 2015-05-27 | 广州华多网络科技有限公司 | 代码生成方法及装置 |
CN108363743A (zh) * | 2018-01-24 | 2018-08-03 | 清华大学深圳研究生院 | 一种智能问题生成方法、装置和计算机可读存储介质 |
CN108875366A (zh) * | 2018-05-23 | 2018-11-23 | 四川大学 | 一种面向php程序的sql注入行为检测系统 |
CN110362827A (zh) * | 2019-07-11 | 2019-10-22 | 腾讯科技(深圳)有限公司 | 一种关键词提取方法、装置及存储介质 |
-
2019
- 2019-12-02 CN CN201911215834.3A patent/CN111124414B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2879099B1 (ja) * | 1998-02-26 | 1999-04-05 | 工業技術院長 | 抽象構文木処理方法、抽象構文木処理プログラムを記録したコンピュータ読み取り可能な記録媒体、抽象構文木データを記録したコンピュータ読み取り可能な記録媒体、及び、抽象構文木処理装置 |
CN101621480A (zh) * | 2008-06-30 | 2010-01-06 | 国际商业机器公司 | 呈现服务器和在其中使用的xsl文件处理方法 |
CN101908006A (zh) * | 2010-07-30 | 2010-12-08 | 北京理工大学 | 一种基于gcc抽象语法树的缓冲区溢出漏洞检测方法 |
CN104657140A (zh) * | 2015-02-10 | 2015-05-27 | 广州华多网络科技有限公司 | 代码生成方法及装置 |
CN108363743A (zh) * | 2018-01-24 | 2018-08-03 | 清华大学深圳研究生院 | 一种智能问题生成方法、装置和计算机可读存储介质 |
CN108875366A (zh) * | 2018-05-23 | 2018-11-23 | 四川大学 | 一种面向php程序的sql注入行为检测系统 |
CN110362827A (zh) * | 2019-07-11 | 2019-10-22 | 腾讯科技(深圳)有限公司 | 一种关键词提取方法、装置及存储介质 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112860264A (zh) * | 2021-03-30 | 2021-05-28 | 中国工商银行股份有限公司 | 一种抽象语法树重构方法及装置 |
CN112860264B (zh) * | 2021-03-30 | 2024-02-09 | 中国工商银行股份有限公司 | 一种抽象语法树重构方法及装置 |
CN115345155A (zh) * | 2022-08-28 | 2022-11-15 | 成都华大九天科技有限公司 | Sv运行时的表达式求值方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111124414B (zh) | 2024-02-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108459860A (zh) | 区块链智能合约形式化验证代码转换器及转换方法 | |
CN103197948B (zh) | 一种电力智能设备通信规约脚本解析方法 | |
JPS6375835A (ja) | 目的コ−ド、プログラム・リスト及び設計文書を生成する装置 | |
JP3345763B2 (ja) | 自然言語翻訳装置 | |
CN111124414A (zh) | 一种基于操作链接的抽象语法树取词方法 | |
CN109522008B (zh) | 一种区块链智能合约构建方法 | |
CN106503496A (zh) | 基于操作码替换与合并的Python脚本程序防逆转方法 | |
CN106598615A (zh) | 一种食谱程序代码生成方法及食谱编译云平台系统 | |
CN112540767B (zh) | 程序代码的生成方法、装置、电子设备及存储介质 | |
CN109116828A (zh) | 一种控制器中模型代码配置方法和装置 | |
Liu et al. | Syntax and domain aware model for unsupervised program translation | |
Manh et al. | The vault: A comprehensive multilingual dataset for advancing code understanding and generation | |
WO2024164559A1 (zh) | 一种系统升级方法、装置、设备及存储介质 | |
CN110879710A (zh) | 一种rpg程序自动转成java程序的方法 | |
CN117093222A (zh) | 一种基于改进转换器模型的代码参数摘要生成方法和系统 | |
CN104731705B (zh) | 一种基于复杂网络的脏数据传播路径发现方法 | |
CN105354035A (zh) | 用于编写web工程测试用例的方法 | |
CN111124422B (zh) | 一种基于抽象语法树的eos智能合约语言转换方法 | |
Cruz et al. | A resource for studying chatino verbal morphology | |
CN110427179B (zh) | 面向智能合约语言的msvl程序自动生成方法及系统 | |
Utkin et al. | Evaluating the impact of source code parsers on ML4SE models | |
CN113641361B (zh) | 一种基于Clang的代码隐藏方法及装置 | |
CN112445492A (zh) | 一种基于antlr4的源码翻译方法 | |
CN109117142A (zh) | 一种基于变量关联树的基本类型重构方法 | |
Griswold | Pattern Matching in Icon |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |