16、基于精炼的程序输入语法学习算法解析

基于精炼的程序输入语法学习算法解析

1. 引言

在程序输入语法学习领域,有一个大致可分为两步的过程:种子语法提取和语法精炼。种子语法提取主要是利用程序源代码的抽象语法树(AST)提取初始语法,重点在于获得高召回率的种子语法,即便牺牲一定的精确率。语法精炼则是通过对产生式集合进行连续的精炼步骤来提高种子语法的精确率。

2. 预备知识
  • 基本符号定义 :设Σ为字母表,即有限的符号集合。从Σ中取出的有限符号序列称为Σ上的单词或字符串。Σ的自由幺半群,即Σ上所有(有限)字符串加上空字符串λ,记为Σ∗,也称为Σ的Kleene星。若v, w ∈Σ∗,则vw ∈Σ∗是v和w的连接,且|vw| = |v| + |w|为其长度。若u = vw,则v是u的前缀,w是u的后缀。语言是Σ∗的任意子集。
  • 语法的形式定义 :语法正式定义为一个四元组G = (N, Σ, P, S),其中N和Σ分别是有限的非终结符和终结符集合,S ∈N是起始符号,P是有限的产生式规则集合,每个规则形式为(Σ ∪N)∗N(Σ ∪N)∗→(Σ ∪N)∗。
  • 推导和语言 :G从字符串x一步推导出字符串y,记为x ⇒y,当且仅当存在u, v, p, q ∈(Σ ∪N)∗使得x = upv,p →q ∈P且y = uqv。若y可从x经过零步或多步推导得到,则记为x ⇒∗y,⇒∗表示关系⇒的自反传递闭包。G的语言记为L(G),是所有能从起始符号S经过有限步推导得到的Σ∗中的字符串集合,即L(G) = {w ∈Σ∗| S →∗w}。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值