编译原理第三章词法分析内容总结


1. 内容总结
第三章主要介绍词法分析的相关知识,主要包括正则表达式、有限自动机、词法分析器几个方面的知识。
正则表达式
程序设计语言的大多数单词都可以用正则文法描述,正则表达式(RA)就是正则语言更紧凑的表示方法。RA可以由较小的正则表达式按特定的规则递归的构建。正则表达式r定义一个语言,记为L(r),这个语言也可以递归定义。由RA定义的语言称为正则语言。RA也遵守相关的代数定律。
正则定义
为了方便起见,我们可以对RA命名,像使用符号一样使用它。
有限自动机FA
FA是一类处理系统的数学模型,不是实际的机器,分为确定的有限自动机DFA和非确定的有限自动机NFA。
表示方法有:状态转换矩阵和状态转换图。
遵循最长子串匹配原则。
i. DFA
M=(S,Σ,δ,S0,F)
ii. NFA
与DFA的区别是,从状态s出发,从标记a所能到达的状态有多个,不是唯一的。
     图为两种有限自动机的列子。


iii. DFA,NFA具有等价性
对于任意的NFA n,存在同一语言的DFA d;对于任意的DFA d存在同意语言的NFA n。
实际上,正则文法、正则表达式、FA三者是等价的,由任意一个可以推出其他两个。
从正则表达式到有限自动机的转化
RE->DFA直接转化比较困难,可以由RE->NFA->DFA间接转换。

1) RE->NFA

 

2) NFA->DFA

采用子集构造法
DFA的简化
将状态集分为不相交的子集,使得任何不同的两个子集的状态都是可区别的,而同一个子集中的任何状态都是等价的,最后让每个子集选一个代表,同时消去其他等价状态。

2. 课后练习

3. 感想

这一章的重点和难点是有限自动机,主要是有限自动和正则文法之间的转换,算法比较多。其实应用起来也并不是特别难,但作为一个计算机专业的学生来说,最重要的不是会使用,而是在于如何用语言去实现。课后题就有很多类似于使用某种高级语言实现一个词法分析器之类的题目,我相信,如果自己能够独立完成这种程序的编写,会受益很大。



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值