编译原理笔记6 词法分析程序

来源:互联网 发布:网络流行语的翻译建议 编辑:程序博客网 时间:2024/05/17 05:19

1.正规式与有限自动机之间的关系。——有限自动机M向正规式阿尔法的转换。1)把状态转换图的概念拓展,令每条弧上都可以用一个正规式作标记。2)在M的转换图上加两个结点:xy。从x用一颗塞隆弧连接到M的所有初态结点;从M的终态结点用一颗塞隆弧连接到y。这个新的NFAM’,且LM=LM'3)通过引入的3条有限自动机替换规则逐步消去M’中的所有结点,直到只剩下xy为止。这样,在xy的弧线上的标记就是一颗塞隆上的正规式,也就是M接受的正规式。

2.正规式阿尔法向确定有限自动机M的转换。1)由正规式阿尔法构造一个如下仅有两个结点xy的状态图。2)按所引入的3条正规式分裂规则分裂阿尔法。3)重复步骤2直到每个弧上的标记是一颗塞隆上的一个字符或空串为止。4)将所得到的NFA M进行确定化就可得到DFA M

3.词法分析程序:

4.任务:从左至右扫描源程序的字符串,按照词法规则识别出一个个正确的单词,并转换为相应的二元式形式,交给语法分析适用。

5.预处理原因:1)源程序中包含注解部分,还有无用的空格、跳格、回车换行等编辑字符,它们与词法分析无关。2)一行语句结束应配上一个特殊字符说明。3)有些语言要识别标号区,区分标号语句,找出续行符连接成完整语句等。4)输出源程序清单以便复核。

6.超前搜索:注:一般高级语言不必超前搜索,但有些对关键词不加保护的语言,单词间没有明确界符,要在上下文环境中识别单词,这时需要超前搜索。

7.单词分类(以c语言为例):基本字(关键字、保留字),标识符(变量名、数组名、函数名、过程名......),常量,运算符,界符。

8.扫描器的输出格式:使用二元式(类号,内码),每个单词对应一个二元式。其中类号用整数表示,类号既可区分单词种类,又可便于程序处理。类号考虑原则是:1)每个基本字占有一个类号,内码缺省;2)各种标识符统一为一类,由内码来区分不同的标识符名。通常将各标识符的符号表入口地址作为其内码。3)对于常量,以常量的数据类型区分不同类号,对每一类设置相应常量表。各常量在其常量表中的入口地址作为其内码。

9.扫描器的设计:设计方法:1写出该语言的词法规则2)把词法规则转换为相应的状态转换图3)把各转换图的初态连在一起,构成识别该语言的自动机。4)设计扫描器:——把扫描器作为语法分析的一个过程,当语法分析需要一个单词时,就调用扫描器。——扫描器从初态出发,当识别一个单词后便进入终态,送出二元式。

10.词法分析程序=状态转换图+控制程序。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


0 0
原创粉丝点击