编译原理与技术(第二版)个人总结2

由于有些符号不好打出来,我直接手写截图吧

DFA:
在这里插入图片描述
NFA:只是最后那个映射和DFA不一样,其余的都是一样的。NFA是可以转换成DFA D的。

下面介绍转换方法:
首先把Q的所有子集并起来成为Q撇
接着把所有含有原NFA终态的Q的子集也并起来即为F撇,
然后把Q撇的每个子集依次与输入信号进行配对,若原NFA有映射关系则作为转换函数的一部分,否则判断下一个。
空集状态属于无用状态可以去掉

DFA的化简直接把输入和输出信号均相同的合并就行(大多数这样就可以)

每一个DFA都存在一个等价的右线性文法和左线性文法。
至于怎么转换,个人总结了一下:
集合变换:左线性加个初状态,右线性加个终态。
产生式和转换函数的转换:找终结符左边最近的非终结符。写法:找到的这个非终结符输入终结符得到其他的符号串。比如:
在这里插入图片描述
词法分析程序相对于语法程序是独立的
词法分析程序的实现有三种:
1.利用词法分析程序生成器(基于正规表达式)
2.利用传统的系统程序设计语言(如Pascal,C)来编写词法分析程序
3.利用汇编语言编写词法分析程序
词法分析程序引入了3个术语:记号,模式,单词。

C语言预处理程序(JAVA实现)已上传至本人下载界面,有需要的小伙伴可以自行下载。
点我下载

发布了26 篇原创文章 · 获赞 0 · 访问量 837

猜你喜欢

转载自blog.csdn.net/GodGump/article/details/103652546
今日推荐