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

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值