词法分析
:由正规文法构造状态转换图
解题方法
1. 由左线性文法构造状态转换图
左 线 性 文 法 G = ( V N , V T , P , Z ) ( 1 ) G 中 形 如 U : : = B a , 则 可 化 成 : B — ( a ) — > U ( 表 示 状 态 B 向 状 态 U 引 一 条 箭 弧 线 并 标 记 符 号 a , 不 方 便 画 图 , 就 直 接 这 样 表 示 了 , 你 们 懂 就 行 ) ( 2 ) G 中 形 如 U : : = a , 则 可 化 成 : S — ( a ) — > U ( 表 示 初 始 状 态 S 向 状 态 U 引 一 条 箭 弧 线 并 标 记 符 号 a ) ( 3 ) 状 态 转 换 图 开 始 状 态 标 记 为 S , 终 止 状 态 标 记 为 Z 左线性文法G=(V_N,V_T,P,Z)\\ (1) G中形如U::=Ba,则可化成:B—(a)—>U(表示状态B向状态U引一条箭弧线并标记符号a,不方便画图,就直接这样表示了,你们懂就行)\\ (2) G中形如U::=a,则可化成:S—(a)—>U(表示初始状态S向状态U引一条箭弧线并标记符号a)\\ (3) 状态转换图开始状态标记为S,终止状态标记为Z 左线性文法G=(VN,VT,P,Z)(1)G中形如U::=Ba,则可化成:B—(a)—>U(表示状态B向状态U引一条箭弧线并标记符号a,不方便画图,就直接这样表示了,你们懂就行)(2)G中形如U::=a,则可化成:S—(a)—>U(表示初始状态S向状态U引一条箭弧线并标记符号a)(3)状态转换图开始状态标记为S,终止状态标记为Z
例题
设 左 线 性 文 法 G [ Z ] = ( V N , V T , P , Z ) , 其 中 V N = Z , U , V V T = 0 , 1 P : Z : : = U 0 ∣ V 1 U : : = Z 1 ∣ 1 V : : = Z 0 ∣ 0 设左线性文法G[Z] = (V_N,V_T,P,Z),其中\\ V_N={Z,U,V}\\ V_T={0,1}\\ P: Z::=U0|V1\\ U::=Z1|1\\ V::=Z0|0 设左线性文法G[Z]=(VN,VT,P,Z),其中VN=Z,U,VVT=0,1P:Z::=U0∣V1U::=Z1∣1V::=Z0∣0
解:
由 Z : : = U 0 ∣ V 1 , 得 U − ( 0 ) − > Z , V − ( 1 ) − > Z 由 U : : = Z 1 ∣ 1 , 得 Z − ( 1 ) − > U , S − ( 1 ) − > U 由 V : : = Z 0 ∣ 0 , 得 Z − ( 0 ) − > V , S − ( 0 ) − > V 由Z::=U0|V1,得U-(0)->Z,V-(1)->Z\\ 由U::=Z1|1,得Z-(1)->U,S-(1)->U\\ 由V::=Z0|0,得Z-(0)->V,S-(0)->V 由Z::=U0∣V1,得U−(0)−>Z,V−(1)−>Z由U::=Z1∣1,得Z−(1)−>U,S−(1)−>U由V::=Z0∣0,得Z−(0)−>V,S−(0)−>V
所以,得到状态转换图如下:
2. 由右线性文法构造状态转换图
右 线 性 文 法 G = ( V N , V T , P , S ) ( 1 ) G 中 形 如 U : : = a B , 则 可 化 成 : U — ( a ) — > B ( 表 示 状 态 U 向 状 态 B 引 一 条 箭 弧 线 并 标 记 符 号 a , 不 方 便 画 图 , 就 直 接 这 样 表 示 了 , 你 们 懂 就 行 ) ( 2 ) G 中 形 如 U : : = a , 则 可 化 成 : U — ( a ) — > Q ( 表 示 状 态 U 向 终 止 状 态 Q 引 一 条 箭 弧 线 并 标 记 符 号 a ) ( 3 ) 状 态 转 换 图 开 始 状 态 标 记 为 S , 终 止 状 态 标 记 为 Q 右线性文法G=(V_N,V_T,P,S)\\ (1) G中形如U::=aB,则可化成:U—(a)—>B(表示状态U向状态B引一条箭弧线并标记符号a,不方便画图,就直接这样表示了,你们懂就行)\\ (2) G中形如U::=a,则可化成:U—(a)—>Q(表示状态U向终止状态Q引一条箭弧线并标记符号a)\\ (3) 状态转换图开始状态标记为S,终止状态标记为Q 右线性文法G=(VN,VT,P,S)(1)G中形如U::=aB,则可化成:U—(a)—>B(表示状态U向状态B引一条箭弧线并标记符号a,不方便画图,就直接这样表示了,你们懂就行)(2)G中形如U::=a,则可化成:U—(a)—>Q(表示状态U向终止状态Q引一条箭弧线并标记符号a)(3)状态转换图开始状态标记为S,终止状态标记为Q
例题
设 右 线 性 文 法 G = ( { S , A , B } , { a , b } , S , P ) , 其 中 P : S : : = b A A : : = b B A : : = a A A : : = b B : : = a 设右线性文法G = (\{S,A,B\},\{a,b\},S,P),其中\\ P: S::=bA\\ A::=bB\\ A::=aA\\ A::=b\\ B::=a 设右线性文法G=({S,A,B},{a,b},S,P),其中P:S::=bAA::=bBA::=aAA::=bB::=a
解:
过程和左线性差别不大,所以得到状态转换图如下:
3. 左线性文法和右线性文法之间的关系
等 价 关 系 右 线 性 文 法 的 产 生 式 左 线 性 文 法 的 产 生 式 S − > a S − > a S − > a 1 A 1 A 1 − > a 1 A 1 − > a 2 A 2 A 2 − > A 1 a 2 A 2 − > a 3 S − > A 2 a 3 等价关系\\ 右线性文法的产生式 \qquad 左线性文法 的产生式\\ S->a \qquad S->a\\ S->a_1A_1 \qquad A_1->a_1\\ A_1->a_2A_2 \qquad A_2->A_1a_2\\ A_2->a_3 \qquad S->A_2a_3 等价关系右线性文法的产生式左线性文法的产生式S−>aS−>aS−>a1A1A1−>a1A1−>a2A2A2−>A1a2A2−>a3S−>A2a3