短语、直接短语和句柄

合集下载

编译原理复习整理(重点含答案)

编译原理复习整理(重点含答案)

1、给出下面语言的相应文法。

L1={a n b n c i|n≥1,i≥0}从n,i的不同取值来把L1分成两部分:前半部分是anbn:A→aAb|ab后半部分是ci:B→Bc|ε所以整个文法G1[S]可以写为:G1(S):S→AB;A→aAb|ab;B→cB|ε3、构造一个DFA,它接受 ={a,b}上所有包含ab的字符串。

(要求:先将正规式转化为NFA,再将NFA确定化,最小化)4、对下面的文法G:E →TE ’ E ’→+E|ε T →FT ’ T ’→T|εF →PF ’ F ’ →*F ’|ε P →(E)|a|b|∧(1)证明这个文法是LL(1)的。

(2)构造它的预测分析表。

(1)FIRST(E)={(,a,b,^}FIRST(E')={+,ε}FIRST(T)={(,a,b,^}FIRST(T')={(,a,b,^,ε}FIRST(F)={(,a,b,^}FIRST(F')={*,ε}FIRST(P)={(,a,b,^}FOLLOW(E)={#,)} FOLLOW(E')={#,)}FOLLOW(T)={+,),#}FOLLOW(T')={+,),#}FOLLOW(F)={(,a,b,^,+,),#}FOLLOW(F')={(,a,b,^,+,),#}FOLLOW(P)={*,(,a,b,^,+,),#} (2)考虑下列产生式:'→+'→'→'→E E T T F F P E a b ||*|()|^||εεεFIRST(+E)∩FIRST(ε)={+}∩{ε}=φ FIRST(+E)∩FOLLOW(E')={+}∩{#,)}=φ FIRST(T)∩FIRST(ε)={(,a,b,^}∩{ε}=φ FIRST(T)∩FOLLOW(T')={(,a,b,^}∩{+,),#}=φ FIRST(*F')∩FIRST(ε)={*}∩{ε}=φFIRST(*F')∩FOLLOW(F')={*}∩{(,a,b,^,+,),#}=φFIRST((E))∩FIRST(a) ∩FIRST(b) ∩FIRST(^)=φ 所以,该文法式LL(1)文法. (3)+*()a b ^ #EE TE →'E TE →' E TE →' E TE →'E' '→+E E'→E ε'→E εTT F T →'T F T →' T F T →' T F T →'T' '→T ε'→T T '→T ε '→T T '→T T '→T T '→T εFF P F →'F P F →' F P F →' F P F →'F' '→F ε '→'F F * '→F ε '→F ε '→F ε '→F ε '→F ε '→F εPP E →()P a → P b → P →^5、考虑文法: S →AS|b A →SA|a (1)列出这个文法的所有LR(0) 项目。

《编译原理》课后习题答案第三章第3章文法和语言第1

《编译原理》课后习题答案第三章第3章文法和语言第1

《编译原理》课后习题答案第三章第3 章文法和语言第1 题文法G=({A,B,S},{a,b,c},P,S)其中P 为:S→Ac|aBA→abB→bc写出L(G[S])的全部元素。

答案:L(G[S])={abc}第2 题文法G[N]为:N→D|NDD→0|1|2|3|4|5|6|7|8|9G[N]的语言是什么?答案:G[N]的语言是V+。

V={0,1,2,3,4,5,6,7,8,9}N=>ND=>NDD.... =>NDDDD...D=>D......D或者:允许0 开头的非负整数?第3题为只包含数字、加号和减号的表达式,例如9-2+5,3-1,7等构造一个文法。

答案:G[S]:S->S+D|S-D|DD->0|1|2|3|4|5|6|7|8|9第4 题已知文法G[Z]:Z→aZb|ab写出L(G[Z])的全部元素。

盛威网()专业的计算机学习网站 1《编译原理》课后习题答案第三章答案:Z=>aZb=>aaZbb=>aaa..Z...bbb=> aaa..ab...bbbL(G[Z])={anbn|n>=1}第5 题写一文法,使其语言是偶正整数的集合。

要求:(1) 允许0 打头;(2)不允许0 打头。

答案:(1)允许0 开头的偶正整数集合的文法E→NT|DT→NT|DN→D|1|3|5|7|9D→0|2|4|6|8(2)不允许0 开头的偶正整数集合的文法E→NT|DT→FT|GN→D|1|3|5|7|9D→2|4|6|8F→N|0G→D|0第6 题已知文法G:<表达式>::=<项>|<表达式>+<项><项>::=<因子>|<项>*<因子><因子>::=(<表达式>)|i试给出下述表达式的推导及语法树。

(5)i+(i+i)(6)i+i*i盛威网()专业的计算机学习网站 2 《编译原理》课后习题答案第三章答案:<表达式><表达式> + <项><因子><表达式><表达式> + <项><因子>i<项><因子>i<项><因子>i( )(5) <表达式>=><表达式>+<项>=><表达式>+<因子>=><表达式>+(<表达式>)=><表达式>+(<表达式>+<项>)=><表达式>+(<表达式>+<因子>)=><表达式>+(<表达式>+i)=><表达式>+(<项>+i)=><表达式>+(<因子>+i)=><表达式>+(i+i)=><项>+(i+i)=><因子>+(i+i)=>i+(i+i)<表达式><表达式> + <项><项> * <因子><因子> i<项><因子>ii(6) <表达式>=><表达式>+<项>=><表达式>+<项>*<因子>=><表达式>+<项>*i=><表达式>+<因子>*i=><表达式>+i*i=><项>+i*i=><因子>+i*i=>i+i*i盛威网()专业的计算机学习网站 3《编译原理》课后习题答案第三章第7 题证明下述文法G[〈表达式〉]是二义的。

《编译原理》课后习题答案

《编译原理》课后习题答案

第7 题证明下述文法G[〈表达式〉]是二义的。

〈表达式〉∷=a|(〈表达式〉)|〈表达式〉〈运算符〉〈表达式〉〈运算符〉∷=+|-|*|/答案:可为句子a+a*a 构造两个不同的最右推导:最右推导1 〈表达式〉=>〈表达式〉〈运算符〉〈表达式〉=>〈表达式〉〈运算符〉a=>〈表达式〉* a=>〈表达式〉〈运算符〉〈表达式〉* a=>〈表达式〉〈运算符〉a * a=>〈表达式〉+ a * a=>a + a * a最右推导2 〈表达式〉=>〈表达式〉〈运算符〉〈表达式〉=>〈表达式〉〈运算符〉〈表达式〉〈运算符〉〈表达式〉=>〈表达式〉〈运算符〉〈表达式〉〈运算符〉a=>〈表达式〉〈运算符〉〈表达式〉* a=>〈表达式〉〈运算符〉a * a=>〈表达式〉+ a * a=>a + a * a第8 题文法G[S]为:S→Ac|aB A→ab B→bc该文法是否为二义的?为什么?答案:对于串abc(1)S=>Ac=>abc (2)S=>aB=>abc即存在两不同的最右推导。

所以,该文法是二义的。

或者:对输入字符串abc,能构造两棵不同的语法树,所以它是二义的。

第9 题考虑下面上下文无关文法:S→SS*|SS+|a(1)表明通过此文法如何生成串aa+a*,并为该串构造语法树。

(2)G[S]的语言是什么?答案:(1)此文法生成串aa+a*的最右推导如下S=>SS*=>SS*=>Sa*=>SS+a*=>Sa+a*=>aa+a*(2)该文法生成的语言是:*和+的后缀表达式,即逆波兰式。

第10 题文法S→S(S)S|ε(1) 生成的语言是什么?(2) 该文法是二义的吗?说明理由。

答案:(1)嵌套的括号(2)是二义的,因为对于()()可以构造两棵不同的语法树。

第11 题令文法G[E]为:E→T|E+T|E-T T→F|T*F|T/F F→(E)|i证明E+T*F 是它的一个句型,指出这个句型的所有短语、直接短语和句柄。

编译原理试题及参考答案

编译原理试题及参考答案

编译原理试题及参考答案课程测试试题(04A卷)I、命题院(部):数学与计算机科学学院II、课程名称:编译原理III、测试学期:2006-2007 学年度第1 学期IV、测试对象:数计、国交学院计科专业2004 级1、2、国交班V、问卷页数(A4):3 页VI、答卷页数(A4):4 页VII、考试⽅式:闭卷(开卷、闭卷或课程⼩论⽂,请填写清楚)VIII、问卷内容:(请⽼师在出题时安排紧凑,填空题象征性的留出⼀点空格,学⽣将所有的答案做在答题纸上的规定位置,并写清楚⼤题、⼩题的题号)⼀、填空题(共30分,30个空,每空1分)1、典型⾼级程序设计语⾔编译系统的⼯作过程⼀般分为六个阶段,即词法分析、语法分析、语义分析、中间代码⽣成、、⽬标代码⽣成。

编译阶段的两种组合⽅式是组合法和按遍组合法,这两种组合⽅式的主要参考因素都是的特征。

2、Chomsky将⽂法按其所表⽰语⾔的表达能⼒,由⾼往低分为四类:0型,1型,2型,3型⽂法。

其中,2型⽂法也称,它的所有规则α→β都满⾜:α∈,β∈ ((V N∪V T) *且,仅当β= ε时例外。

3、现代编译系统多采⽤⽅法,即在语法分析过程中根据各个规则所相联的或所对应的语义⼦程序进⾏翻译的办法。

该⽅法使⽤为⼯具来说明程序设计语⾔的语义。

4、构造与NFA M等价的正规⽂法G的⽅法如下:(1)对转换函数f(A,a)=B或f(A,ε)=B,改成形如或的产⽣式;(2)对可识别终态Z,增加⼀个产⽣式:。

5、代码⽣成要考虑的主要问题:充分利⽤的问题、选择的问题、选择的问题。

6、设有穷⾃动机M=(K,∑,f,S,Z),若当M为时,满⾜z0∈f(S,α)且z0∈Z,或当M为时,满⾜f(S,α)=P∈Z,则称符号串α∈∑*可被M所。

7、符号表中每⼀项对应⼀个多元组。

符号表项的组织可分为组织、组织、组织等。

8、对于A∈?VN 定义A的后续符号集:FOLLOW(A)={a|S=*>uAβ,a∈VT,且a∈,u∈VT*,β∈V+;若,则#∈FOLLOW(A)。

编译原理习题课解析

编译原理习题课解析
• S→ A • A → Ab bBa • B → aAc a aAb
1.首先拓展文法
• • • • • •
S→ A → A → B → B → B →
A Ab bBa aAc a aAb
2.分解LR(0)项目
• • • • • • S → ·A;S → A·; A → ·Ab;A → A·b;A → Ab· ; A →·bBa;A→b·Ba;A→bB·a;A→bBa·; B →·aAc;B→a·Ac;B→aA·c;B→aAc· ; B → · a; B → a · ; B →·aAb;B→a·Ab;B→aA·b;B→aAb· ;
S→ABS B→SBB S→Aa S→ B→b A→a A
S
B
S
a
S
B
B
A
a

b
b
a
短语、句柄
习题解答
7.给文法G[S]: – SaA|bQ – AaA|bB|b – BbD|aQ – QaQ|bD|b – DbB|aA S – EaB|bF – FbD|aE|b 构造相应的最小的DFA。
由于从S出发任何输入串都 不能到达状态E和F,所以, 状态E,F为多余的状态, 不予考虑。
a a b a
A b Z
b
B a
b
D
b
b
b Q a
简化产生式后生成的NFA
I 1[S] 2[A] 3[Q] 4[B,Z] 5[D,Z] 6[D] 7[B]
Ia
= ε -closure(MoveTo(I,a))
4 5 6 7
8 9
{11,14,16,3,6} {8} {5} {7}
{4,19,17} {9}

编译原理(第2版)陈意云张昱编著课后答案

编译原理(第2版)陈意云张昱编著课后答案

8
(b) 对于句子abab构造两个相应的最右推导.
S aSbS aSb abSaSb abSab abab
rm
rm
rm
rm
rm
S aSbS aSbaSbS aSbaSb aSbab abab
rm
rm
rm
rm
rm
(c)对于句子abab构造两个相应的分析树.
S
S
aSbS
(b) 句子a|aa的两种最左推导. 句子aa*的两种最左推导.
R
R
R
R
R
*
(c)消除二义性
R R ‘|’ S | S S ST | T T U* | U U (R) | a | b
aR
*
R
R
a
a
a
28
4.5 dangling-else文法: stmt if expr then stmt | matched-stmt
tcodenumlexval冶膝嘉篮瞄畅耽找捕案赶骂恭凶魏承弹特选虽丰仁宇汀刺蚁疵夷铁蟹暑牡编译原理第2版陈意云张昱编著课后答案编译原理第2版陈意云张昱编著课后答案stcetcetcttcetcttcnumnumttcnumnum俗铸涣甩呕灿樱涨巾陆蕾胯涣吁飞猜放渭溢惕想诊祭冕捌责境楔烦贴玛耀编译原理第2版陈意云张昱编著课后答案编译原理第2版陈意云张昱编著课后答案55s
( bexpr ) bexpr or bterm bterm bfactor bfactor false
11
true
(c) 试说明此文法产生的语言是全体布尔表达式.
12
练习: 长度为n的字符串, 分别有多少个 前缀, 后缀, 子串, 真前缀, 子序列 ? 前缀: n+1 后缀: n+1 子串: 1+ n+(n-1)+...+1 = 1+n(n+1)/2 真前缀: n 子序列: 1+Cn1+Cn2+Cn3+...+Cnn = 2n

编译原理复题及参考答案

编译原理复题及参考答案

中南大学网络教育课程考试复习题及参考答案编译原理一、判断题:1.一个上下文无关文法的开始符,可以是终结符或非终结符。

( )2.一个句型的直接短语是唯一的。

( )3.已经证明文法的二义性是可判定的。

( )4.每个基本块可用一个DAG表示。

( )5.每个过程的活动记录的体积在编译时可静态确定。

( )6.2型文法一定是3 型文法。

( )7.一个句型一定句子。

( )8.算符优先分析法每次都是对句柄进行归约。

( )9.采用三元式实现三地址代码时,不利于对中间代码进行优化。

( )10.编译过程中,语法分析器的任务是分析单词是怎样构成的。

( )11.一个优先表一定存在相应的优先函数。

( )12.目标代码生成时,应考虑如何充分利用计算机的寄存器的问题。

( )13.递归下降分析法是一种自下而上分析法。

( )14.并不是每个文法都能改写成 LL(1)文法。

( )15.每个基本块只有一个入口和一个出口。

( )16.一个 LL(1)文法一定是无二义的。

( )17.逆波兰法表示的表达试亦称前缀式。

( )18.目标代码生成时,应考虑如何充分利用计算机的寄存器的问题。

( )19.正规文法产生的语言都可以用上下文无关文法来描述。

( )20.一个优先表一定存在相应的优先函数。

( )21.3型文法一定是 2型文法。

( )22.如果一个文法存在某个句子对应两棵不同的语法树,则文法是二义性的。

( )二、填空题:1.( )称为规范推导。

2.编译过程可分为(),(),(),()和()五个阶段。

3.如果一个文法存在某个句子对应两棵不同的语法树,则称这个文法是()。

4.从功能上说,程序语言的语句大体可分为()语句和()语句两大类。

5.语法分析器的输入是(),其输出是()。

6.扫描器的任务是从()中识别出一个个()。

7.符号表中的信息栏中登记了每个名字的有关的性质,如()等等。

8.一个过程相应的DISPLAY表的内容为()。

编译原理作业参考答案

编译原理作业参考答案
T,
T,
「,ST,
2.利用P76表的LL(1)分析表写出表达式(i + i)*i的预测分析过程。
步骤
符号栈
输入串
所用的产生式
0
#E
(i+i) *i#
1
#E' T
(i+i) *i#
E TE‘
编译程序:把输入的源程序翻译成等价的目标程序(汇编语言或机器语 言),
然后再执行目标程序(先编译后执行),执行翻译工作的程序称为编译程序。
解释程序:以该语言写的源程序作为输入,但不产生目标程序。按源 程序中语句动态顺序逐句的边解释边执行的过程,完成翻译工作的程序称 为解释程序。
2、什么叫“遍”
指对源程序或源程序的中间形式(如单词,中间代码)从头到尾扫描一 次,并作相应的加工处理,称为一遍。
优化:对中间代码进行优化处理。
目标代码生成:把中间代码翻译成目标语言程序。
4、编译程序与解释程序的区别
编译程序生成目标程序后,再执行目标程序;然而解释程序不生成目标 程序,边解释边执行。
5、有人认为编译程序的五个组成部分缺一不可,这种看法正确吗
编译程序的5个阶段中,词法分析,语法分析,语51分析和代码生成生 成是必须完成的。而中间代码生成和代码优化并不是必不可少的。优化的 目的是为了提高目标程序的质量,没有这一部分工作,仍然能够得到目标 代码。
(G)
={
(0 1
29)+)
或L
(G)
={
为数字串}
(2)
最左推导
:N
ND
DD
3D 34
N
ND
NDD
DDD 5DD 56D
568
最右推导
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2.6 文法和语言的分类
2.4 短语、直接短语和句柄
* S αAδ 根据最右推导: + SAB ASb bBSb baSb A β * bBSb 句型baSb中的子串a,是(相对 (3) S B a
于非终结符B)句型baSb的短语, 且为直接短语、句柄。 句型baSb中的子串ba,是(相对 于非终结符A)句型baSb的短语。
2.4 短语、直接短语和句柄
根据最左推导: SAB bBB baB baSb * S (1) S 句型本身是(相对于非终结符S) + S baSb 句型baSb的短语。 * αAδ S + Aβ
* baB (2) S B Sb
句型baSb中的子串Sb,是(相对 于非终结符B)句型baSb的短语, 且为直接短语。
EE+T | T TT*F | F
E T T F i E + T
F(E) | i 则句子i*i+i只有 唯一一棵语法树:
F
F i i
*
2.5.3 文法二义性的消除
例2 定义某程序语言条件语句的文法G为: Sif b S | if b S else S | A (其它语句) 试证明该文法是二义性的并消除之。 分析 该文法的句子 if b if b A else A 对应下面两棵不同的语法树:
2.5.1
推导和语法树
分析 首先根据句型baSb的推导过程画出对 S 应的语法树如下: SABbBBbaBbaSb A B SABASbbBSbbaSb 由语法树可知 b B S b baSb 为句型的相对于S的短语 a ba 为句型的相对于A的短语 a 句型的相对于B的短语、直接短语和句柄 Sb 为句型的相对于B的短语、直接短语
2.5.3 文法二义性的消除
将一个语言说成是二义性的,是 指对它不存在无二义性的文法,这样 的语言称为先天二义性的语言。 例如 L={ ai bj ck | i=j 或 j=k 且 i, j, k≥1} 便是这种语言。
2.6 文法和语言的分类
著名的语言学家乔姆斯基(Chomsky) 将文法和语言分为四大类,即0型、1型、 2型、3型。划分的依据是对文法中的规则 施加不同的限制。
2.6 文法和语言的分类
例如,有1型文法G=(VN,VT, P, S) 其中:VN={S,A,B} , VT={a,b,c}
P: S aSAB | abB BA BA' BA' AA' AA' AB bA bb bB bc cB cc
其描述的1型语言为L1(G[S])={anbncn | n≥1}
2.6 文法和语言的分类
例如,有0型文法G=(VN,VT, P, S) 其中:VN={A,B,S} , VT={0,1} P: S 0AB 1B 0 B SA | 01 A1 SB1 A0 S0B 其描述的 0 型语言为 L0(G[S])={ }
STOP
2.6 文法和语言的分类
2.5.1
推导和语法树
E E + F T
短语: i*i+i i*i 第一个i 第二个i T 第三个i F 三个i都是直接短语 第一个i是句柄 i 注意:i+i不是句型的短语
T *
F
i
i
句子 i*i+i
2.5.1
推导和语法树
前例 对文法G[S]=({S,A,B},{a,b},P,S) 其中P为: SAB AAa | bB Ba | Sb 可用语法树非常直观地求出句型baSb 的全部短语,直接短语和句柄。
2.4 短语、直接短语和句柄
分析 根据短语定义,可以从句型 的推导过程 中找出其全部短语、直接短 语和句柄。 对文法,首先建立该句型的推导过程: SAB AAa | bB Ba | Sb 最右推导: 句型 baSb SAB ASb bBSb baSb 最左推导: SABbBBbaB baSb
* ASb (4) S + A ba
2.5 语法树与文法的二义性
推导和语法树
1. 语法树 对句型的推导过程给出一种图形 表示, 这种表示称为语法树,也称推 导树。
2.5.1 推导和语法树
例如 设有文法G[E]: EE+T | E–T | T TT*F | T/F | F F(E) | i 构造句型i*i+i的语法树。 首先给出句型的推导过程 (最左推导) : EE+TT+TT*F+TF*F+Ti*F+T i*i+Ti*i+Fi*i+i
2.4 短语、直接短语和句柄
短语
令G是一个文法,S是文法的开始符 号,假定αβδ是文法G的一个句型,如果 有 + * SαAδ 且 Aβ 则称 β是相对于非终结符A的, 句型αβδ的 短语。
2.4 短语、直接短语和句柄
直接短语
令G是一个文法,S是文法的开始符 号,假定αβδ是文法G的一个句型,如果 有 * αA δ S 且 Aβ
句子 i*i+i 有两个不同的最左推导, 对应两棵不同的语法树。
2.5.2 文法的二义性
最左推导1 EE+EE*E+E i*E+Ei*i+E i*i+i E E + 最左推导2 EE*Ei*E i*E+Ei*i+E i*i+i E E i * E i
E
i
E
+ E
E
i
*
E
i
i
2.5.2 文法的二义性
则称β是直接短语。
2.4 短语、直接短语和句柄
注意:短语和直接短语的区别 在于第二个条件, 直接短语中的第 二个条件表示有文法规则 Aβ , 因此,每个直接短语都是某规则右 部。
2.4 短语、直接短语和句柄
句柄
一个句型的最左直接短语称为该句 型的句柄。
句柄特征: (1) 它是直接短语,即某规则右部。
2.5.3 文法二义性的消除
Sif b S | if b S else S | A 句子 if b if b A else A S if b S else S if b S A A S
if if
b
S
b S else S A A
所以该文法是二义的。
2.5.3 文法二义性的消除
消除文法的二义性可采用下面两种方法: 1. 不改变已有规则,仅 加进一非形式的语法规 S 定:else与前面最接近 if b S 的不带else的 if 相对。 S if else b S 文法G的句子 if b if b A else A A A 只对应唯一的一棵语 法树,消除了二义性。
2.5.3 文法二义性的消除
S S1 | S2 S1 if b S1 else S1 | A S2 if b S | if b S1 else S2 对改写后的文法,句子 if b if b A else A 只对应唯一的一棵语法 树。
S
S2
if b S
S1
if b S1 else S1 A A
2.5.3 文法二义性的消除
2. 改写文法G为G' G: Sif b S | if b S else S | A (其它语句) G': S S1 | S2 S1 if b S1 else S1 | A
S2 if b S | if b S1 else S2
2.5.3 文法二义性的消除
这是因为通过分析,得知引起 二义性的原因是: if—else 语句的 if 后可以 是if型,因此改写文法时规定: if — else之间只能是if—else语 句或其他语句。
2.5.1 推导和语法树
根据推导过程构造句型i*i+i的语法树如下:
EE+T T+T T*F+T F*F+T i*F+T i*i+T i*i+F i*i+i
E
E T T F * + T F
F
i
i
i
2.5.1 推导和语法树
由例可知,语法树的构造过程是从 文法的开始符号出发,构造一个推导的 过程。 因为文法的每一个句型 (句子) 都 存在一 个推导,所以文法的每个句型 (句子) 都存在一棵对应的语法树。
E
E E * + E i E i
i
2.5.3 文法二义性的消除
2. 构造一个等价的无二义性文法。即 把排除二义性的规则合并到原有文法中, 改写原有的文法。 例如,对于上例文法G[E],将运算符的 优先顺序和结合规则:*优先于+; +、* 左结合加到原有文法中, 可构造出无二义 性文法如下 :
2.5.3 文法二义性的消除
2.5.3 文法二义性的消除
应该指出的是文法的二义性和语 言的二义性是两个不同的概念。 通常我们只说文法的二义性, 而不 说语言的二义性, 这是因为可能有两个 不同的文法G和G' ,而且其中一个是二 义性的,另一个是无二义性的, 但却有 L(G)=L(G'), 即这两个文法所产生的语言 是相同的。
如果一个文法存在某个句子对应两 棵不同的语法树,则说这个文法是二义 性的。 或者说,若一个文法中存在某个句 子,它有两个不同的最左 (最右) 推导, 则这个文法是二义性的。
E E+E | E*E | (E) | i
2.5.3 文法二义性的消除
1. 不改变文法中原有的语法规则, 仅加 进一些非形式的语法规定。
若文法G=(VN,VT, P, S)中的每一条规则的 语言是1型语言。 形式为 αAβ αμβ , 其中: AVN , α, β(VN∪VT)* , μ(VN∪VT)+ 则称G是1型文法。 1型语言由线性界 限自动机识别。 1型文法也称为上下文有关文法, 相应 的语言又称为上下文有关语言。
相关文档
最新文档