#编译原理# 词法分析(三)第二部分 (5)

 

#编译原理# 词法分析(三)第二部分

2.最优匹配原则

如有一字符串,有两条规则可以匹配,那么用规则序列中位于前面的规则相匹配,即排列在前面的的规则优先权高。

 

LEX实例:

 

#编译原理# 词法分析(三)第二部分

1.得出单独的NFA

 

#编译原理# 词法分析(三)第二部分

2.合并为一个NFA

 

#编译原理# 词法分析(三)第二部分

3.确定化

 

#编译原理# 词法分析(三)第二部分

4.最后写出状态转换矩阵和控制程序即可

 

分析过程:

#编译原理# 词法分析(三)第二部分

 

构造出的LEX是一个通用的工具,用它可以生成各种语言的语法分析程序,只需要根据不同的语言书写不同的LEX源文件就可以了。

LEX不但能自动生成词法分析其,而且也可以产生多种模式识别器及文本编辑程序。

 

题目讲解

在描述推导过程是,如果有了根据...,则不必再说一个“可得”了

做题时注意判断所有的终结符和非终结符,看题

判断短语:在一句型的语法树中,对任意结节点U,如果以其为根节点的子树高度不为0,将此子树的所有叶节点连接得到串u,u则是相对于U的对于该句型的短语,也就是说即使在树的最后,只要有f→p,且p后无延伸,则p本身也是一个短语,且是一个简单短语。

在绘制特定描述的字符串自动机时,直接编写语法可能会不够随机,可以用状态图进行辅助。

在根据集合获取对应字符的后继集合时,步骤如下:遍历集合的每个状态,获取每个状态通过任意长度符号为该符号的弧到达的状态以及从该状态经过任意长ε弧到达的状态(不包含出发的那个状态,除非可以通过这两种方法到达)。遍历结束后汇总获取到的状态即可获得新的集合。

左右线性:根据右侧非终结符的位置而定,在左则左。

左右线性文法生成状态图:后续补充。

 

给出描述的正则表达式时,注意几个点:保持随机,分段构造表达式,注意符号的真正含义(*是重复,并且是从0到无穷的,并且如果没括号只能重复一个,例如(11)*就是偶数个重复)。

表达式构造FA:从外开始从左开始,并且*转时,两个ε不是必需的,何时使用??

进行确定化时由于是集合类型,所以注意看清

判断NFA:同一个符号两个后继、有ε弧

FA的五元:全部状态,全部符号,转化矩阵,开始状态(非空开始集合),终止状态集合。注意状态转化后如果是{},就是多个后继。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wppdws.html