CN110362310A - 一种基于不完全抽象语法树的代码语法错误修复方法 - Google Patents
一种基于不完全抽象语法树的代码语法错误修复方法 Download PDFInfo
- Publication number
- CN110362310A CN110362310A CN201910219636.8A CN201910219636A CN110362310A CN 110362310 A CN110362310 A CN 110362310A CN 201910219636 A CN201910219636 A CN 201910219636A CN 110362310 A CN110362310 A CN 110362310A
- Authority
- CN
- China
- Prior art keywords
- code
- token
- information
- incomplete
- error
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 40
- 230000008439 repair process Effects 0.000 title claims abstract description 35
- 238000012937 correction Methods 0.000 claims abstract description 17
- 230000000644 propagated effect Effects 0.000 claims abstract description 4
- 239000011159 matrix material Substances 0.000 claims description 11
- 238000013528 artificial neural network Methods 0.000 claims description 8
- 230000007257 malfunction Effects 0.000 claims description 6
- 238000012549 training Methods 0.000 claims description 5
- 230000007246 mechanism Effects 0.000 claims description 4
- 230000009467 reduction Effects 0.000 claims description 4
- 230000002159 abnormal effect Effects 0.000 claims description 3
- 238000001514 detection method Methods 0.000 claims description 3
- 238000004891 communication Methods 0.000 claims description 2
- 230000000306 recurrent effect Effects 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 4
- 238000013135 deep learning Methods 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000002474 experimental method Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- ORILYTVJVMAKLC-UHFFFAOYSA-N Adamantane Natural products C1C(C2)CC3CC1CC2C3 ORILYTVJVMAKLC-UHFFFAOYSA-N 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000013136 deep learning model Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Biophysics (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Biomedical Technology (AREA)
- Artificial Intelligence (AREA)
- Mathematical Physics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明公开了一种基于不完全抽象语法树的代码语法错误修复方法。针对代码编译错误,该方法实现了对代码编译错误的定位与纠错。该方法利用不完全的AST信息,构建包含代码结构信息的输入序列,使用图模型传播、更新相邻节点之间的信息。该方法同时提出了一种新的纠错的方法。通过预测错误起始位置,结束位置,是否拷贝,拷贝位置,生成的词这5种信息,该方法可以修改和替换任意长度的错误代码。同时,该方法基于迭代的方式进行纠错,能够实现代码中多个错误的修复。
Description
技术领域
本发明涉及利用深度学习的方法,基于代码的文本与结构的信息,构建神经网络,纠正代码语法错误的方法,属于深度学习和软件工程的交叉应用领域。
背景技术
语法错误指的是被语法检测器认为不符合编程语言语法规则的错误。语法错误是程序开发中会遇到的常见错误,一些简单的语法错误往往会因为编译器生成的误导信息而掩盖。这些错误信息使得语法错误难以定位,同时也浪费编程者(特别是新手)大量宝贵时间。若能自动化的准确发现并修复语法错误,将会极大的提高开发效率,降低开发成本,带来经济和社会效益。
在之前已经有以下几种代码语法纠错的方法。(1)基于规则的语法错误修复方法:通过设置一些规则来筛选可能错误的位置,并枚举可能的修复操作;(2)基于概率的方法:将代码视为一段文本,统计不同位置不同情况下发生错误的概率分布,使用规则或枚举可能的替换符号;(3)基于深度学习的语言模型方法:将代码视为一段文本,构建代码的语言模型,预测纠错的操作;(4)基于端到端的深度学习模型的方法:模型将定位到错误位置,并重新生成新的代码替换原有的错误代码。
语法纠错的难点在于词与词之间的依赖关系十分远,并且对文法要求十分严苛。目前的方法存在以下问题:(1)基于概率的错误定位方法过于简单,无法准确定位错误;(2)仅仅将代码视为文本,没有充分利用代码的结构和语义的信息;(3)需要大量启发式的规则限制修复的方法。
为了提高代码语法纠错的准确度,本发明提出了一种基于不完全抽象语法树的代码语法错误修复方法,可以有效利用代码结构信息,改进错误定位的方法,无需启发式规则限制。
发明内容
本发明的目的是充分利用代码的结构信息,结合代码的文本信息,提出一种新的语法纠错的方法,提高代码语法纠错的准确度。本发明采用的技术方案是:
一种基于不完全抽象语法树(Abstract Syntax Tree,AST)的代码语法错误修复方法,该方法包括以下步骤:
1)生成代码的不完全AST树
2)编码代码信息
3)预测错误位置
4)预测修复内容
5)根据预测的修复操作,生成新的代码
6)检测代码纠错结果,迭代修复错误
7)结束
其中步骤1所述的生成代码的不完全抽象语法树的说明:
在自底向上的LALR方法生成代码的语法树的过程中,语法解析器从给定的标记(token) 序列归约到开始符号。这个过程中,语法解析器将归约的语法节点信息存储到symstack栈中。在生成语法错误的代码的过程中,语法解析器将会在某个状态查询到无合法的归约节点(分析表中对应位置为空),因而产生错误。我们使用yacc生成的C语言语法分析器,利用存储在symstack栈中的已经推导完成的语法节点信息,构建一个未推导完成的不完全的抽象语法树信息。我们定义图G=(V;E;X)。将AST信息以图的形式进行保存。具体步骤如下:
1)利用词法分析工具将代码划分为一个token序列,根据字典生成token的id序列Itoken;
2)将代码输入语法解析器中,尝试进行编译;
3)捕获AST异常,从symstack栈中获得之前得到的节点,构建不完全AST;
4)深度优先搜索整个不完全的AST的所有节点,根据字典生成节点的id队列Iast;
5)将节点id队列Iast连接到token的id队列Itoken末尾,得到输入的序列I;
6)记录AST中连接的节点的边,生成边集合E。边的类型包含两种:①AST中连接的节点的边,②AST的节点与对应的token相连;
7)计算输入序列I的长度L。构造一个大小为L*L的矩阵,初始值为0。根据边集合E,将存在边的位置置为1,得到邻接矩阵A;
8)结束。
其中步骤2所述的编码代码信息:
模型编码输入序列I和邻接矩阵A,转换为中间状态。我们利用GGNN(Gated GraphNeural Networks)对输入的图进行编码。GGNN是一个迭代的图传播网络,用来学习图上节点的新的表示。随着图上信息在每层的传播,节点的信息将传递到相邻的节点并更新。具体步骤如下:
1)利用embedding模块编码token的id序列I,获得token的向量表示:
I=[w1,w2,...,wL]
xi=E[wi],i=1,2,...,L
2)由前馈神经网络计算初始的每个位置的状态:
3)进行多层的信息传播与更新。在每层编码中,先用GRU对当前节点信息进行更新,再利用 GGNN网络,根据邻接矩阵A将更新后的信息传播到相邻(相连)的节点。
其中j为编码的层数。
4)取Le层的隐藏层状态为编码的输出h,结束。在实验中,我们取层数Le为3
其中步骤3所述的预测错误位置的说明:
模型利用步骤2中得到的编码信息,预测错误的起始位置P1与结束位置P2。起始位置与结束位置之间的内容是错误的代码片段。具体步骤如下:
1)根据encoder的输出hLe与查询向量计算错误的起始位置P1概率分布;
其中和为两个可训练的权重,q1为可训练的起始位置的查询向量,p1为起始位置的概率分布。
2)根据起始位置P1概率分布更新查询向量q1为新的查询向量q2;
q2=GRUu(q1,tq)
3)根据query向量q2计算错误的结束位置P2概率分布;
其中和为两个可训练的权重,q2为可训练的结束位置的查询向量,p2为结束位置的概率分布。
4)计算具体起始位置P1与具体结束位置P2:
5)结束。
其中步骤4所述的预测修复内容的说明:
模型对起始位置之前与结束位置之后的内容进行编码,并在此基础上利用循环神经网络 (RNN),结合注意力(Attention)机制,循环生成预测的token内容。将前后文分开编码,能够较好的利用前后正确代码的上下文信息,而不引入错误代码片段的影响。RNN能够恰当的生成不定长的模型输出。Attention机制能够更好的利用原文的字面信息,在多个其他任务中都取得了不错的结果。具体步骤如下:
1)编码错误位置前后文状态信息。拼接错误起始位置P1之前信息与错误结束位置P2之后信息:
其中hi为模型编码的输出hLe。
2)使用GRU,循环的生成隐藏状态:
其中x0为输入的token序列。
3)预测当前位置是否需要从源代码中复制:
其中Wc、bc为可训练参数。
4)预测复制的token的位置:
其中sc为预测是否拷贝的向量表示。
5)预测生成的token的id:
其中ss为预测是否拷贝的向量表示,Ws为可训练参数。
6)当生成的token为<END>,结束,否则转步骤3),继续预测下一个token。
7)结束。
其中步骤5所述的生成新的修复代码的操作并修复错误:
对于一段错误代码I,我们将产生一个预测的修复错误的操作。我们定义一个错误的修复操作0为(P1,P2,C,Wc,Ws),其中P1为错误起始位置,P2为错误结束位置,C为是否从原代码中拷贝的列表,Wc为复制的token在源代码中的位置的列表,Ws为生成的token的id列表,其中C,Wc,Ws为相同长度的列表。对于一个给定的错误修复操作O=(p1,p2,c,wc,ws),生成新代码的操作如下:
1)得到输入序列I:
I=[w1,w2,...,wL]
2)判断此位置是否需要拷贝,如果需要拷贝,则转步骤3)。若不需要拷贝,则转步骤4);
3)如果此位置需要拷贝,从输入序列I中获得第个token。转步骤5)
4)如果此位置不需要拷贝,则此处生成的token即为转步骤5)
5)若生成的token不为<END>且仍然有后续token,则重新回到步骤2)。最终得到完整的生成token序列wr:
6)生成的新代码:
I′=I[:p1]+wr+I[p2:]
7)结束。
其中步骤6所述的检测代码纠错结果,迭代修复错误的说明:
在生成一个修复操作之后,我们根据操作生成一段新的代码,并编译这段代码。若代码中仍然存在语法错误,则重新回到步骤1生成不完全的抽象语法树,进入新的一次迭代,生成新的错误修复操作,在之前修改的基础上迭代的修复错误代码。这种错误修复方式,能够解决一份代码中存在多个语法错误。同时,由于每次修复的操作都是选择错误可能性最高的位置,因此能够最小化引入新错误的可能性。最终停止修复的条件有如下两种:1)代码纠错完成;2)迭代次数超过限制。具体步骤如下:
1)根据源代码I,预测错误的修复操作O=(p1,p2,c,wc,ws)。
2)根据错误修复操作O=(p1,p2,c,wc,ws)和源代码I,生成修复的代码I′;
3)尝试编译这段代码,获得编译结果;
4)若编译出错且未达停止修复条件,则重新回到步骤1),重新预测错误的修复操作
5)若编译出错且达到停止修复条件,则修复失败,结束。
6)若编译成功,则修复成功,结束。
在整个神经网络中,隐藏层大小均为400,编码网络层数Le为3。模型使用已标记错误修复操作的错误代码作为训练数据。在实验中,我们通过修改正确代码得到语法错误的代码,并记录修改的动作生成相应的错误修复操作。模型使用Adam算法进行训练。
附图说明
图1基于不完全抽象语法树的代码语法错误修复方法流程图
图2生成不完全抽象语法树流程图
图3输入序列示例图
图4编码代码信息流程图
图5修复错误并生成新的代码流程图
图6迭代修复错误流程图
具体实施方式
为了加深对本发明的理解,下面结合附图和实施例对本发明进一步说明,该实施例仅用于解释本发明,并不对本发明的保护范围构成限定。
图1是基于不完全抽象语法树的代码语法错误修复方法流程图。首先,系统生成错误代码的不完全的AST树,根据文本与AST树编码代码信息,利用神经网络预测代码发生语法错误的位置和修复的内容,还原并验证新的代码,重复迭代修复直至修复全部语法错误。
图2描述了生成基于代码的不完全抽象语法树的输入序列的具体流程图。我们选用 PYCParser工具对错误的C代码进行编译。具体步骤如下:
1)利用词法分析工具CLex将错误的C语言代码划分为一个token序列,得到token的id序列Itoken
2)将代码输入PYCParser中,编译代码
3)捕获AST异常,从symstack栈中获得不完全AST
4)深度优先搜索整个AST的所有节点,根据字典生成节点的id队列Iast
5)将节点id队列Iast连接到token的id队列Itoken末尾,得到输入的序列I
6)记录AST中连接的节点的边,将节点与对应token连接,生成边集合E
7)计算输入序列I的长度L。构造一个大小为L*L的矩阵,初始值为0。根据边集合E,将存在边的位置置为1,得到邻接矩阵A
8)结束
图3描述了步骤1得到的最终输入序列I示例。序列由5部分组成:<BEGIN>节点,代码的token序列,<Delimiter>节点,AST节点序列,<END>节点。
图4描述了编码代码信息的具体流程图。具体步骤如下:
1)计算输入序列中每个token的向量表示:
I=[w1,w2,...,wL]
xi=E[wi],i=1,2,...,L
2)由前馈神经网络计算初始的每个位置的状态:
3)从第0层开始,进行多层的信息传播与更新。在每层编码中,利用6RU更新每个节点的节点信息。更新节点状态为
其中j为编码的层数。
4)由邻接矩阵A和节点状态传播和更新节点信息为
其中j为编码的层数。
5)取Le层的隐藏层状态为编码的输出。
6)结束
图5描述了修复错误并生成新的代码的操作的具体流程图。对于一段错误代码I,我们将产生一个预测的修复错误的操作。我们定义一个错误的修复操作为(P1,P2,C,Wc,Ws),其中P1为错误起始位置,P2为错误结束位置,C为是否从原代码中拷贝的列表,Wc为复制的token在源代码中的位置的列表,Ws为生成的token的id列表,其中C,Wc,Ws为相同长度的列表。一组(C[i],Wc[i],Ws[i])可以确定一个唯一的token,i表示位置。因此模型的输出可以预测一个连续的token序列。对于一个给定的错误修复操作O=(p1,p2,c,wc,ws),生成新代码的操作如下:
1)得到输入序列I:
I=[w1,w2,...,wL]
2)根据ci判断位置i是否需要拷贝,如果需要拷贝,则转步骤3)。若不需要拷贝,则转步骤 4);
3)如果此位置需要拷贝,从输入序列I中获得第个token。转步骤5)
4)如果此位置不需要拷贝,则此处生成的token即为转步骤5)
5)若生成的token不为<END>且仍然有后续token,则重新回到步骤2),i向后自增1。最终得到完整的生成token序列wr:
6)生成的新代码
I′=I[:p1]+wr+I[p2:]
7)结束。
图6描述了检测代码纠错结果,迭代修复错误的具体流程图。在生成一个修复操作之后,我们根据操作生成一段新的代码,并编译这段代码。若代码中仍然存在语法错误,则重新回到步骤1生成不完全的抽象语法树,进入新的一次迭代,生成新的错误操作,在之前修改的基础上迭代的修复错误代码。这种错误修复方式,能够解决一份代码中存在多个语法错误。同时,由于每次修复的操作都是选择错误可能性最高的位置,因此能够最小化引入新错误的可能性。最终停止修复的条件有如下两种:1)代码纠错完成;2)迭代次数超过限制。具体步骤如下:
1)根据源代码I,预测错误的修复操作O=(p1,p2,c,wc,ws)。
2)根据错误修复操作O=(p1,p2,c,wc,ws)和源代码I,生成修复的代码I′;
3)尝试编译这段代码,获得编译结果;
4)若编译出错且未达迭代次数上限,则重新回到步骤1),重新预测错误的修复操作
5)若编译出错且达到迭代次数上限,则修复失败,结束。
6)若编译成功,则修复成功,结束。
Claims (7)
1.一种基于不完全抽象语法树(Abstract Syntax Tree,AST)的代码语法错误修复方法,其特征在于该方法包括以下步骤:
1)生成基于不完全的AST树的输入序列;
2)编码代码信息;
3)预测错误位置;
4)预测修复内容;
5)根据预测的修复操作,生成新的代码;
6)检测代码纠错结果,迭代修复错误;
7)结束。
2.根据权利要求1所述的一种基于不完全抽象语法树的代码语法错误修复方法,其特征在于:生成代码的不完全抽象语法树,在底向上的LALR方法生成语法错误代码的语法树的过程中,语法解析器将会在某个状态查询到无合法的归约节点(分析表中对应位置为空),因而产生错误,我们利用已经推导的部分语法节点信息,构建一个未推导完成的不完全的抽象语法树信息,将AST信息以图G=(V;E;X)的形式进行保存,具体步骤如下:
1)利用词法分析工具将代码划分为一个标记(token)序列,根据字典生成token的id序列Itoken;
2)将代码输入语法解析器中,尝试进行编译;
3)捕获AST异常,获得之前已经推导完成的节点信息,组成不完全AST;
4)深度优先搜索整个不完全的AST的所有节点,根据字典生成节点的id队列Iast;
5)将节点id队列Iast连接到token的id队列Itoken末尾,得到输入的序列I;
6)生成边集合,包含两种类型的边:①AST中连接的节点的边,②AST的节点与对应的token相连;
7)计算输入序列I的长度L,构造一个大小为L*L的矩阵,初始值为0,根据边集合E,将矩阵中对应位置置为1,得到邻接矩阵A;
8)结束。
3.根据权利要求1所述的一种基于不完全抽象语法树的代码语法错误修复方法,其特征在于:编码代码信息,模型编码输入序列I、邻接矩阵A,转换为中间状态,利用图传播网络对输入的图进行编码,随着节点信息在每层的传播,节点的信息将传递到周围的节点并更新,具体步骤如下:
1)利用embedding模块编码token的id序列I,获得token的向量表示:
I=[w1,w2,...,wL]
xi=E[wi],i=1,2,...,L
2)由前馈神经网络计算初始的每个位置的状态h(0):
3)进行多层的信息传播与更新,在每层编码中,先用GRU对当前节点信息进行更新,再利用GGNN网络,根据邻接矩阵A将更新后的信息传播到相邻(相连)的节点:
其中j为编码的层数;
4)取Le层的隐藏层状态为编码的输出h,Le为模型的超参数编码层数;
5)结束。
4.根据权利要求1所述的一种基于不完全抽象语法树的代码语法错误修复方法,其特征在于:预测错误位置,模型利用权利要求3中计算得到的编码信息,预测错误代码的起始位置P1与结束位置P2,起始位置与结束位置之间的内容是预测的错误的代码片段,具体步骤如下:
1)根据encoder的输出h与查询向量q1计算错误的起始位置P1概率分布;
其中和为可训练的权重,q1为可训练的起始位置的查询向量,p1为起始位置的概率分布;
2)根据起始位置P1概率分布更新查询向量q1为新的查询向量q2;
q2=GRUu(q1,tq)
3)根据查询向量q2计算错误的结束位置P2概率分布;
其中和为两个可训练的权重,q2为可训练的结束位置的查询向量,p2为结束位置的概率分布;
4)计算具体起始位置P1与具体结束位置P2:
5)结束。
5.根据权利要求1所述的一种基于不完全抽象语法树的代码语法错误修复方法,其特征在于:预测修复内容,模型对起始位置之前与结束位置之后的内容进行编码,并在此基础上利用循环神经网络(RNN),结合注意力(Attention)机制,循环生成预测的token内容,将前后文分开编码,能够较好的利用前后正确代码的上下文信息,而不引入错误代码片段的影响,RNN能够恰当的生成不定长的模型输出,Attention机制能够更好的利用原文的字面信息,在多个其他任务中都取得了不错的结果,具体步骤如下:
1)编码错误位置前后文状态信息,拼接错误起始位置P1之前信息与错误结束位置P2之后信息:
其中hi为模型编码的输出hLe;
2)使用GRU,循环的生成隐藏状态:
其中x0为输入token的向量表示;
3)预测当前位置是否需要从源代码中复制:
其中Wc、bc为可训练参数;
4)预测复制的token的位置:
其中sc为预测是否拷贝的向量表示;
5)预测生成的token的id:
其中ss为预测是否拷贝的向量表示,Ws为可训练参数;
6)当生成的token为<END>,结束,否则转步骤2),继续预测下一个token;
7)结束。
6.根据权利要求1所述的一种基于不完全抽象语法树的代码语法错误修复方法,其特征在于:生成新的修复代码的操作并修复错误,对于一段错误代码I,我们将生成一个预测的修复错误的操作,定义一个错误的修复操作为(P1,P2,C,Wc,Ws),其中P1为错误起始位置,P2为错误结束位置,C为是否从原代码中拷贝的列表,Wc为复制的token在源代码中的位置的列表,Ws为生成的token的id列表,其中C,Wc,Ws为相同长度的列表,对于一个给定的错误修复操作O=(p1,p2,c,wc,ws),生成新代码的操作如下:
1)得到输入序列I:
I=[w1,w2,...,wL]
其中w为token;
2)将i赋值为1,从1开始逐个遍历修复操作的列表;
3)判断此位置ci是否需要拷贝,如果需要拷贝,则转步骤4);不需要拷贝,则转步骤5);
4)如果此位置需要拷贝,从输入序列I中获得第个token;步骤6);
5)如果此位置不需要拷贝,则此处生成的token即为步骤6);
6)若生成的token不为<END>且仍然有后续token,则重新回到步骤3),生成下一个token;最终得到完整的生成token序列wr:
7)生成的新代码为:
I′=I[:p1]+wr+I[p2:]
其中p1为错误起始位置,p2为错误结束位置;
8)结束。
7.根据权利要求1所述的一种基于不完全抽象语法树的代码语法错误修复方法,其特征在于:检测代码纠错结果,迭代修复错误,在生成一个修复操作之后,我们按照权利要求6所述方式生成一段新的代码,并编译这段代码,若代码中仍然存在语法错误,则重新回到步骤1生成不完全的抽象语法树,进入新的一次迭代,生成新的错误修复操作,在之前修改的基础上迭代的修复错误代码,这种错误修复方式,能够解决一份代码中存在多个语法错误,同时,由于每次修复的操作都是选择错误可能性最高的位置,因此能够最小化引入新错误的可能性,最终停止修复的条件有如下两种:1)代码纠错完成;2)迭代次数超过限制,具体步骤如下:
1)根据源代码I,预测错误的修复操作O=(p1,p2,c,wc,ws);
2)根据错误修复操作O=(p1,p2,c,wc,ws)和源代码I,生成修复的代码I′;
3)尝试编译这段代码,获得编译结果;
4)若编译出错且未达停止修复条件,则重新回到步骤1),重新预测错误的修复操作;
5)若编译出错且达到停止修复条件,则修复失败,结束;
6)若编译成功,则修复成功,结束。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910219636.8A CN110362310A (zh) | 2019-03-19 | 2019-03-19 | 一种基于不完全抽象语法树的代码语法错误修复方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910219636.8A CN110362310A (zh) | 2019-03-19 | 2019-03-19 | 一种基于不完全抽象语法树的代码语法错误修复方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110362310A true CN110362310A (zh) | 2019-10-22 |
Family
ID=68214723
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910219636.8A Pending CN110362310A (zh) | 2019-03-19 | 2019-03-19 | 一种基于不完全抽象语法树的代码语法错误修复方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110362310A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111580825A (zh) * | 2020-04-28 | 2020-08-25 | 中国科学院软件研究所 | 一种面向机械臂程序开发编程语言的编译方法及系统 |
CN112181428A (zh) * | 2020-09-28 | 2021-01-05 | 北京航空航天大学 | 一种基于抽象语法树的开源软件缺陷数据分类方法及系统 |
CN112269568A (zh) * | 2020-11-16 | 2021-01-26 | 加和(北京)信息科技有限公司 | 一种基于nlp算法的预警处理方法及系统 |
CN112379888A (zh) * | 2020-12-02 | 2021-02-19 | 北京皮尔布莱尼软件有限公司 | 一种代码变更分析方法 |
WO2021174823A1 (zh) * | 2020-07-30 | 2021-09-10 | 平安科技(深圳)有限公司 | 语法纠错方法、装置、计算机系统及可读存储介质 |
CN115686923A (zh) * | 2023-01-05 | 2023-02-03 | 中国人民解放军军事科学院系统工程研究院 | 一种软件源代码缺陷自动修复方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160350199A1 (en) * | 2015-06-01 | 2016-12-01 | Cisco Technology, Inc. | Predictive in-field memory repair scheme |
CN108460117A (zh) * | 2018-02-12 | 2018-08-28 | 清华大学 | 一种预测结果驱动的数据修复方法 |
CN108829438A (zh) * | 2018-07-05 | 2018-11-16 | 南京大学 | 一种基于深度学习与程序合成的c/c++程序缺陷自动修复方法 |
CN108932192A (zh) * | 2017-05-22 | 2018-12-04 | 南京大学 | 一种基于抽象语法树的Python程序类型缺陷检测方法 |
-
2019
- 2019-03-19 CN CN201910219636.8A patent/CN110362310A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160350199A1 (en) * | 2015-06-01 | 2016-12-01 | Cisco Technology, Inc. | Predictive in-field memory repair scheme |
CN108932192A (zh) * | 2017-05-22 | 2018-12-04 | 南京大学 | 一种基于抽象语法树的Python程序类型缺陷检测方法 |
CN108460117A (zh) * | 2018-02-12 | 2018-08-28 | 清华大学 | 一种预测结果驱动的数据修复方法 |
CN108829438A (zh) * | 2018-07-05 | 2018-11-16 | 南京大学 | 一种基于深度学习与程序合成的c/c++程序缺陷自动修复方法 |
Non-Patent Citations (1)
Title |
---|
李斌等: "" 程序自动修复:关键问题及技术"", 《软件学报》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111580825A (zh) * | 2020-04-28 | 2020-08-25 | 中国科学院软件研究所 | 一种面向机械臂程序开发编程语言的编译方法及系统 |
WO2021174823A1 (zh) * | 2020-07-30 | 2021-09-10 | 平安科技(深圳)有限公司 | 语法纠错方法、装置、计算机系统及可读存储介质 |
CN112181428A (zh) * | 2020-09-28 | 2021-01-05 | 北京航空航天大学 | 一种基于抽象语法树的开源软件缺陷数据分类方法及系统 |
CN112269568A (zh) * | 2020-11-16 | 2021-01-26 | 加和(北京)信息科技有限公司 | 一种基于nlp算法的预警处理方法及系统 |
CN112379888A (zh) * | 2020-12-02 | 2021-02-19 | 北京皮尔布莱尼软件有限公司 | 一种代码变更分析方法 |
CN115686923A (zh) * | 2023-01-05 | 2023-02-03 | 中国人民解放军军事科学院系统工程研究院 | 一种软件源代码缺陷自动修复方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110362310A (zh) | 一种基于不完全抽象语法树的代码语法错误修复方法 | |
Wang et al. | Search, align, and repair: data-driven feedback generation for introductory programming exercises | |
Autili et al. | Aligning qualitative, real-time, and probabilistic property specification patterns using a structured english grammar | |
Harer et al. | Tree-transformer: A transformer-based method for correction of tree-structured data | |
CN113064586B (zh) | 一种基于抽象语法树增广图模型的代码补全方法 | |
CN103049458B (zh) | 一种修正用户词库的方法和系统 | |
CN110888798B (zh) | 一种基于图卷积神经网络对软件缺陷预测方法 | |
EP4204968A1 (en) | Unit test case generation with transformers | |
CN112463424A (zh) | 一种基于图的端到端程序修复方法 | |
US20240070053A1 (en) | Automatic generation of assert statements for unit test cases | |
Wu et al. | Ggf: A graph-based method for programming language syntax error correction | |
CN115934147A (zh) | 软件自动修复方法、系统、电子设备及存储介质 | |
Culpepper | Fortifying macros | |
Tucci et al. | Parsing nonlinear languages | |
Engelen | From napkin sketches to reliable software | |
Kalyon et al. | A two phase smart code editor | |
Wang et al. | Data-driven feedback generation for introductory programming exercises | |
Cao et al. | Guaranteeing sound reactions to long-tailed changes: A syntax-directed annotation approach | |
Zhang et al. | Patterns for Activities on Formalization Based Requirements Reuse | |
Zhang et al. | Human-Machine Cooperative Program Translation Based on Abstract Syntax Tree | |
Ballis et al. | Fixing web sites using correction strategies | |
Ráth | Event-driven model transformations in domain-specific modeling languages | |
Gray et al. | Reuse of constraint knowledge bases and problem solvers explored in engineering design | |
CN116069337A (zh) | 一种结合修复模板与深度学习的代码缺陷自动修复方法 | |
CN115408698A (zh) | 一种基于rust-IR2Graph与RGNN的rust漏洞检测方法 |
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 | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20191022 |
|
WD01 | Invention patent application deemed withdrawn after publication |