汇编原理-词法分析
1.程序语言的单词符号一般分为:保留字,标识符,常数,运算符,界符。
2.状态图:开始的粗箭头,结束使用的双圈(有时会有*在结束双圈上,表示多读进一个不属于标识符部分的字符,应当把它退还给输入串。)
3.正规式与正规集:p36
4.确定有限自动机(DFA):
– M=(Q, Σ, δ, q0, F)
· 其中,
– Q——状态的非空有穷集合。
– Σ——输入字母表。
– δ——状态转移函数。每一个转移都有确定的值
– q0——M的开始状态。(是唯一的初态)
– F——M的终止状态集合。(可空)
如M=({A,B,C},{x,y},f(转换函数),A,{C})
5.不确定有限自动机(NFA):
– M=(Q, Σ, δ, q0, F)
· 其中,
– Q——状态的非空有穷集合。
– Σ——输入字母表。
– δ——状态转移函数。每一个转移(一个状态下,同一个输入)都几个不确定的值(次态),采取随机转移方式转移到下一个状态
– q0——M的开始状态。(是非空初态集)
– F——M的终止状态集合。(可空)
6.DFA与NFA的区别就在于:DFA只有一个唯一的初态,NFA可以有若干个非空初态;DFA的转换函数是单值函数,NFA的转换函数是多值函数。
7.NFA转化为DFA:
(1)状态集I的ε闭包:ε_CLOSURE()
第一是自身,第二是从自身出发经过任意条空串弧而达到的任何状态都属于这个闭包。
(2)状态集I的a弧转换集:就是从I集合中的每一个元素通过a弧达到的集合,再来求这个集合的ε闭包。
(3)非确定有限自动机的确定化:p41
第一看有没有ε,如果没有,直接把NFA的初态作为DFA的初态(NFA只有一个初态时)。除此之外,都引入一个初态,求初态的ε闭包为DFA的初态。
第二就是状态集I的a弧转换集来构造状态转换矩阵,并使用代换成型的状态转换表。
第三根据状态转化表画出DFA的状态转换图。
8.确定有限自动机的化简:p43,消除无关状态,合并等价状态(注意:在使用状态集I的a弧转换集时,要将有转化的和无转化的分开)
9.右线性文法与有限自动机的互相转化:
(1)文法转自动机:就是 M=(Q, Σ, δ, q0, F)的个元素确定化,并画出有限自动机的状态转换图。注意这是是引进一个初态的的Z`的。p47
(2)自动机转文法:首先要满足一个条件:有限自动机只有一个初态结,且终态结一定是ε_弧的射入。不满足条件的,就化为满足条件的。G[S]={Vn,Vt,P,S}
(Vn是非终结符号,Vt是终结符号,P是转换函数,S是文法开始符)
10.左线性文法与有限自动机的转换
(1)文法转自动机:基本和右线性的文法一样,但需要注意的是不需要消除左递归。
(2)自动机转文法:与上面的9.(2)一样。
11.正规式与有限自动机的等价转换。比较简单。

浙公网安备 33010602011771号