3.1.1
词素序列如下表:
其中,常量的值是存在单元中的对应值;符号没有对应的值;关键字的值为其本身。
3.1.2
词素序列如下表:
其中,常量的值是存在单元中的对应值;符号没有对应的值;关键字的值为其本身。
3.3.2
1.以a开头和结尾的,中间有零个或多个a或b组成的串的组合
2.零个或多个以零或一个a和任意个b组成的串的串的组合
3.倒数第三个字符是a、其余位置为零或多个a或b的串的组合
4.有三个字符是b,其余位置可以是零或多个a组成的串的组合
5.零个或多个aa或bb,和上零个或多个,零个或多个ab或ba与偶数个a或偶数个b的串与零个或多个ab或ba与偶数个a或偶数个b的串的组合。
3.3.5(1-3,9)
1)设A={b-d,f-h,j-n,p-t,v-z}(即除了元音字母外的其他小子字母集合)。
正则表达式:Aa(A|a)e(A|e)i(A|i)o(A|o)u(A|u)
2)正则表达式:abc……xyz*(省略部分按字母序出现)
3)正则表达式:\ / \ * ((^\ * \ / )|(“ * /”)) * \ * \ /(注:” / ” 前和 ” * ” 前必须加多一个 “ \ ”)
4)正则表达式:(ba)|(baba*)
3.3.11
解:设name为所有可以做文件名的字符,前缀一定为可做文件名的字符,然后为?*\的字面字符,点好“”之后也一样
正则表达式:[name\ * \ ?? ’\’].[ name \ * \ ??’\’]
3.4.1
1.a(a|b)a
状态转移图:
化简后的状态转移图:
2.((ε|a)b)
状态转移图:
化简后的状态转移图:
再次化简后的状态转移图:
3.(a|b)a(a|b)(a|b)
状态转移图:
化简后的状态转移图:
4.abababa*
状态转移图:
化简后的状态转移图:
再次化简后的状态转移图:
5.(aa|bb)((ab|ba)(aa|bb)(ab|ba)(aa|bb))
(aa|bb)的状态转移图:
(aa|bb)化简后的状态转移图:
((ab|ba)(aa|bb)的状态转移图:
(aa|bb)和((ab|ba)(aa|bb)整合化简后的状态转移图:
3.4.2
1)Aa(A|a)e(A|e)i(A|i)o(A|o)u(A|u)
2)abc……xyz
3)\ / \ * ((^\ * \ / )|(“ * /”)) * \ * \ /
4)(ba)|(baba*)
3.6.2
1.Aa(A|a)e(A|e)i(A|i)o(A|o)u(A|u)
NFA:
DFA:
2.abc……xyz*
NFA:
DFA:
3./*([*"]*|".*"|*+[/])*/
NFA:
4.(ba*)|(baba*)
NFA:
DFA:
3.6.3
答:这个NFA接受aabb。路径如下:
3.6.4
答:这个NFA接受aabb。路径如下:
3.7.1
1.图3-26
DFA如图所示:
2.图3.29
状态转移表:
3.图3-30
得到DFA:
3.7.3
1)(a|b)*
Thompson算法求NFA:
子集构造法求DFA:
求得DFA:
DFA化简:
2)(a*|b*)*
Thompson算法求NFA:
子集构造法求DFA
求得DFA:
DFA化简:
3)((|a)b*)*
Thompson算法求NFA:
子集构造法求DFA:
求得DFA:
DFA化简:
4)(a|b)abb(a|b)
Thompson算法求NFA:
子集构造法求DFA:
求得DFA:
3.9.4
1.(a|b)*a(a|b)
NFA:
子集构造法求DFA:
根据转换表得到的DFA:
根据切分规则,将~进行如下切分:
得到最简DFA:
2.(a|b)*a(a|b)(a|b)
NFA:
子集构造法求DFA:
根据转换表得到的DFA:
根据切分规则,将~进行如下切分:
得到最简DFA:
3.(a|b)*a(a|b)(a|b)(a|b)
NFA:
子集构造法求DFA:
状态转移表如下:
根据转换表得到的DFA:
根据切分规则,将~进行如下切分:
得到最简DFA: