编译原理第2章笔记

字母表是一个非空有穷集合,由字符组成。(是一个集合

字母表的乘积是笛卡尔积,幂次由乘积定义。

正闭包vs克林闭包:后者包括空串。

句子的乘积:联结句子的0次是空串

子串的定义需注意:串不能隔着抽取字符

一个语言:

即是子集。

很好理解,V对应的元素是不确定的,T对应的是确定的元素(terminal)

注意α和β的所属集合。

注意上图中LA使用的是至少一步推导,因为非终结符不会0步推导为终结符

而开始符号代表文法所定义的语言, ?:0步推导指的是S就是w?

文法分类:

文法定义的要求:在产生式中任取α定义为β,α中至少包含一个非终结符

越推越多。为啥叫上下文有关呢,因为阿尔法也是好些东西的组合【(V∪T)+】产生式往往是一坨东西推出一坨东西^^

 而CFG中α属于V,说明产生式左部就是一个语法成分。产生式是一个推一坨,这一个东西不看上下文就能推。

左右线性是指可以往左/右边增长串

注意A和B就是一个语法成分,α是终结符串。而终结符集是语言的句子中出现的字符,空串不包含在终结符集里。

 

据上图,可见要求是依次严格的。

CFG语法树:

 为什么E不是短语捏?仔细看看短语的定义会发现:短语是要被推导出来的,而最右部的E,他的父亲推导出来的并不是他,而是id*E。

最左直接短语叫做句柄。

CFG的二义性:

动手算算之后发现这个时候如果第一步推乘法,后面就不可能推得出原式的样子了,会变成(E+E)*E。二义性消除。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值