编译原理:正规式、正规文法与自动机

1.正规式转换到正规文法



对任意正规式R选择一个非终结符Z生成规则Z→R

1.对形如A→ab的规则,转换成A→aB,B→b

2.将形如A→a|b的规则,转换成A→a,A→b(A→a|b)

3.将形如A→a*b的规则,转换成A→aA,A→b

将形如A→ba*的规则,转换成A→Aa,A→b

不断利用上述规则进行转换,直到每条规则最多含有一个终结符为止.

  1(0|1)*101

解析:

S-> A1

A-> B0

B-> C1

C-> 1(0|1)* -> 1|C0|C1

  (a|b)*(aa|bb)(a|b)*

解析:

S->(a|b)S

S->(aa|bb)(a|b)*->S(a|b)

S->(aa|bb)->Aa|Bb

所以:

S->aS|bS|Sa|Sb|Aa|Bb

A->a

B->b

  (0|1)*|(11))*

解析:

S -> ε|((0|1)*|(11))S -> ε|(0|1)*S|11S

S -> (0|1)*S -> (0|1)S|S

S -> 11S -> 1A

A -> 1S

所以:

S -> ε|0S|1S|1A

A -> 1S

  (0|11*0)*

解析:

S -> ε|(0|11*0)S -> ε|0S|11*0S

S -> 11*0S -> 1A

A -> 1*0S -> 1A

A -> 0S

所以:

S -> ε|0S|1A

A -> 1A|0S



2. 自动机M=({q0,q1,q2,q3},{0,1},f,q0,{q3})

其中f:

(q0,0)=q1

(q1,0)=q2

(q2,0)=q3

(q0,1)=q0

(q1,1)=q0

(q2,1)=q0

(q3,0)=q3

(q3,1)=q3

画现状态转换矩阵和状态转换图,识别的是什么语言。

解:

状态转换矩阵:

  0 1
q0 q1 q0
q1 q2 q0
q2 q3 q0
q3 q3 q3

 

状态转换图:

语言:(1*(01)*01)*0(0|1)*



3.由正规式R 构造 自动机NFA 

(a|b)*abb

解析:

(a|b)*(aa|bb)(a|b)*

解析:

1(1010*|1(010)*1)*0

解析:

原文地址:https://www.cnblogs.com/zhif97/p/11723913.html

时间: 2024-10-09 09:49:03

编译原理:正规式、正规文法与自动机的相关文章

编译原理——正规式转DFA算法概述

一.概念概述 给定一个单词,判断该单词是否满足我们给定的单词描述规则,需要用到编译原理中词法分析的相关知识,其中涉及到的两个很重要的概念就是正规式(Regular Expression)和有穷自动机(Finite Automata).正规式是描述单词规则的工具,首先要明确的一点是所有单词组成的是一个无穷的集合,而正规式正是描述这种无穷集合的一个工具:有穷自动机则是识别正规式的一个有效的工具,它分为确定的有穷自动机(Deterministic Finite Automata,DFA)和不确定的有穷

编译原理-正规式和正规集

2正规式和正规文法之间转换规则 规则2看不懂 http://blog.csdn.net/yuyunli1989/article/details/7524701

编译原理DFA(有限确定自动机)的构造

原题: 1.自己定义一个简单语言或者一个右线性正规文法 示例如(仅供参考)  G[S]:S→aU|bV    U→bV|aQ V→aU|bQ     Q→aQ|bQ|e 2.构造其有穷确定自动机,如 3.利用有穷确定自动机M=(K,Σ,f, S,Z)行为模拟程序算法,来对于任意给定的串,若属于该语言时,该过程经有限次计算后就会停止并回答“是”,若不属于,要么能停止并回答“不是”       K:=S: c:=getchar; while c<>eof do {K:=f(K,c); c:=get

编译原理之非确定的自动机NFA确定化为DFA

1.设有 NFA M=( {0,1,2,3}, {a,b},f,0,{3} ),其中 f(0,a)={0,1}  f(0,b)={0}  f(1,b)={2}  f(2,b)={3} 画出状态转换矩阵,状态转换图,并说明该NFA识别的是什么样的语言. 语言为:(a|b)*abb 2.NFA 确定化为 DFA 1.解决多值映射:子集法 1). 上述练习1的NFA 2). 将下图NFA 确定化为 DFA 2.解决空弧:对初态和所有新状态求ε-闭包 1). 图转换为矩阵: 状态转换图: 识别语言为:0

编译原理:非确定的自动机NFA确定化为DFA

1.设有 NFA M=( {0,1,2,3}, {a,b},f,0,{3} ),其中 f(0,a)={0,1}  f(0,b)={0}  f(1,b)={2}  f(2,b)={3} 画出状态转换矩阵,状态转换图,并说明该NFA识别的是什么样的语言. 解析:   a b 0 {0,1} 0 1 2 2 3 3   状态转换图如下: 识别语言为:(a | b)*abb 2.NFA 确定化为 DFA 1.解决多值映射:子集法 1). 上述练习1的NFA 解析: 根据1的NFA构造DFA状态转换矩阵如

正规式到正规文法与自动机

1.正规式转换到正规文法 对任意正规式R选择一个非终结符Z生成规则Z→R 1.对形如A→ab的规则,转换成A→aB,B→b 2.将形如A→a|b的规则,转换成A→a,A→b(A→a|b) 3.将形如A→a*b的规则,转换成A→aA,A→b 将形如A→ba*的规则,转换成A→Aa,A→b 不断利用上述规则进行转换,直到每条规则最多含有一个终结符为止. 1(0|1)*101 (a|b)*(aa|bb)(a|b)* ((0|1)*|(11))* (0|11*0)* 2. 自动机M=({q0,q1,q2

正规式、正规文法与自动机

1.正规式转换到正规文法 对任意正规式R选择一个非终结符Z生成规则Z→R 1.对形如A→ab的规则,转换成A→aB,B→b 2.将形如A→a|b的规则,转换成A→a,A→b(A→a|b) 3.将形如A→a*b的规则,转换成A→aA,A→b 将形如A→ba*的规则,转换成A→Aa,A→b 不断利用上述规则进行转换,直到每条规则最多含有一个终结符为止. 1(0|1)*101 Z → A1 A → B0 B → C1 C → (0 | 1)C | ε C → 0C | 1C | ε (a|b)*(aa

10.23正规式、正规文法与自动机

1.正规式转换到正规文法 对任意正规式R选择一个非终结符Z生成规则Z→R 1.对形如A→ab的规则,转换成A→aB,B→b 2.将形如A→a|b的规则,转换成A→a,A→b(A→a|b) 3.将形如A→a*b的规则,转换成A→aA,A→b 将形如A→ba*的规则,转换成A→Aa,A→b 不断利用上述规则进行转换,直到每条规则最多含有一个终结符为止. (1)1(0|1)*101 (2)(a|b)*(aa|bb)(a|b)* (3)((0|1)*|(11))* (4)(0|110)  答: (1)S

第七次-正规式到正规文法与自动机

1.正规式转换到正规文法 对任意正规式R选择一个非终结符Z生成规则Z→R 1.对形如A→ab的规则,转换成A→aB,B→b 2.将形如A→a|b的规则,转换成A→a,A→b(A→a|b) 3.将形如A→a*b的规则,转换成A→aA,A→b 将形如A→ba*的规则,转换成A→Aa,A→b 不断利用上述规则进行转换,直到每条规则最多含有一个终结符为止. 1(0|1)*101 (a|b)*(aa|bb)(a|b)* ((0|1)*|(11))* (0|110) 2. 自动机M=({q0,q1,q2,q