作业评讲(精)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
程序设计语言
CH2.高级语言 及其语法描述
《程序设计语言编译原理》
陈火旺等编著
2000年第3版
CH.2.练习题3(P35.)
3.何谓“标识符”,何谓“名字”,两者的区别是什 么? 标识符: 程序语言中一个最基本的概念; 定义为: 字母开头的字母数字串。 名字:给予标识符以确切含义时,这个标识符就 叫名字。程序语言中的各种程序对象(变量、过 程、函数、标号等)的名字都用标识符来表示。 标识符是一个没有意义的字符序列。 名字却有着确切的意义和属性(类型、作用域 等)。如:A、B1,…作为标识符时没有什么意思, 但作为名字时却可以代表变量名、数组名、函数 名、过程名等。 2 2018/9/26 作业评讲
作业评讲 5
2018/9/26
CH.2.练习题8(P36.)
8. 令文法为
E → T|E+T|E-T T → F|T*F|T/F F → (E)|i (1) 给出 i+i*i、i*(i+i) 的最左推导和最右推导。 (2) 给出 i+i+i、i+i*i和 i-i-i的语法树。 问题:推导错误(同前);语 法树不对
10
4
CH.2.练习题7(P36.)
7. 写一个文法,使其语言是奇数集,且每个 奇数不以0开头。 问题:文法少了或多了产生式;文法不会进行
2*N+1之类的计算,只用于推导符号串产生句子
解:
N N D D → → → → 1|3|5|7|9 1D|2D|3D|4D|5D|6D|7D|8D|9D 0D|1D|2D|3D|4D|5D|6D|7D|8D|9D 1|3|5|7|9
wk.baidu.com
3
CH.2.练习题6(P36.)
6.令文法G6为: N → D|ND D → 0|1|2|3|4|5|6|7|8|9 (1) G6的语言L(G6)是什么? 问题:集合的写法不正确 + 解:L(G6)={0,1,2,3,4,5,6,7,8,9} ={09数字构成的所有数字串,可以0开头} (2) 给出句子0127、34和568的最左和最右推导。 问题:写法错误;缺少步骤; 写为→ 解:0127的最左推导:NNDNDDNDDDDDDD 0DDD01DD012D0127 0127的最右推导:NNDN7ND7N27ND27 N127D1270127
( ) S S
S → SA|A A → (S)|( ) 只能由S产生并列的括号。
(
) (
)
8
CH.2.练习题11(P36.)
11. 给出下面语言的相应文法: 问题:文法不准确;文法有二义性 L1={anbnci| n 1,i 0} a、b的个数一样多 S AB A aAb|ab B cB|ε
CH.2.练习题4(P35.)
4.令+、*和↑代表加、乘和乘幂,按如下的非标准优 先级和结合性质的约定,计算1+1*2↑2*1↑2的值: (1) 优先顺序从高到低为+、*和↑,同级优先采用 左结合。 (2) 优先顺序从高到低为↑、+和*,同级优先采用 右结合。 问题:计算结果错误;缺少计算过程 解: (1) 1+1*2↑2*1↑2 = 2*2↑2*1↑2 = 4↑2*1↑2 = 4↑2↑2 = 16↑2 = 256 (2) 1+1*2↑2*1↑2 = 2*2↑2*1↑2 = 2*4*1↑2 = 2*4*1 = 2*4 = 8
解: i-i-i 的最左 推导及语法树
E ① E - T ⑧
②
F E - T ③ ⑨ ⑥ i T F ④ ⑦ F i ⑤ i
6
CH.2.练习题9(P36.)
9. 证明下面的文法是二义的:
S → iSeS|iS|i 问题:写法不正确 证明: 因为存在句子 iiiei 对应两棵语法树(两个最右推 导),如图: 所以该文法是二义文法。
① i
S ② i S ④ i S S e S i
③
①
2018/9/26
作业评讲
i S e S ③ ② i S i ④ i
7
CH.2.练习题10(P36.)
10. 把下面的文法改写为无二义的:
S
S → SS|(S)|( ) S S 问题:改写的文法不准确 ) S S ( 解:该文法产生的语言是所有配对的、 可嵌套、可并列的圆括号符号串。 ( ) ( ) 因为存在句子( )( )( )对应两棵语 S 法树(如图),所以该文法是二义文法。 S S 改写为无二义文法:
L2={aibncn| n 1,i 0} S aS|B B bBc|bc
b、c的个数一样多
9
CH.2.练习题11(P36.)
11. 给出下面语言的相应文法: L3={anbn ambm| n ,m0} a、b的个数一样多 S A|AA| ε A aAb|ab L4={1n0m 1m0n| n ,m0} 外层1、0的个数一样多,内层0、1的个数一样多, 内层的01嵌套在外层的1、0间,不能分开 S 1S0|A A 0A1| ε
CH2.高级语言 及其语法描述
《程序设计语言编译原理》
陈火旺等编著
2000年第3版
CH.2.练习题3(P35.)
3.何谓“标识符”,何谓“名字”,两者的区别是什 么? 标识符: 程序语言中一个最基本的概念; 定义为: 字母开头的字母数字串。 名字:给予标识符以确切含义时,这个标识符就 叫名字。程序语言中的各种程序对象(变量、过 程、函数、标号等)的名字都用标识符来表示。 标识符是一个没有意义的字符序列。 名字却有着确切的意义和属性(类型、作用域 等)。如:A、B1,…作为标识符时没有什么意思, 但作为名字时却可以代表变量名、数组名、函数 名、过程名等。 2 2018/9/26 作业评讲
作业评讲 5
2018/9/26
CH.2.练习题8(P36.)
8. 令文法为
E → T|E+T|E-T T → F|T*F|T/F F → (E)|i (1) 给出 i+i*i、i*(i+i) 的最左推导和最右推导。 (2) 给出 i+i+i、i+i*i和 i-i-i的语法树。 问题:推导错误(同前);语 法树不对
10
4
CH.2.练习题7(P36.)
7. 写一个文法,使其语言是奇数集,且每个 奇数不以0开头。 问题:文法少了或多了产生式;文法不会进行
2*N+1之类的计算,只用于推导符号串产生句子
解:
N N D D → → → → 1|3|5|7|9 1D|2D|3D|4D|5D|6D|7D|8D|9D 0D|1D|2D|3D|4D|5D|6D|7D|8D|9D 1|3|5|7|9
wk.baidu.com
3
CH.2.练习题6(P36.)
6.令文法G6为: N → D|ND D → 0|1|2|3|4|5|6|7|8|9 (1) G6的语言L(G6)是什么? 问题:集合的写法不正确 + 解:L(G6)={0,1,2,3,4,5,6,7,8,9} ={09数字构成的所有数字串,可以0开头} (2) 给出句子0127、34和568的最左和最右推导。 问题:写法错误;缺少步骤; 写为→ 解:0127的最左推导:NNDNDDNDDDDDDD 0DDD01DD012D0127 0127的最右推导:NNDN7ND7N27ND27 N127D1270127
( ) S S
S → SA|A A → (S)|( ) 只能由S产生并列的括号。
(
) (
)
8
CH.2.练习题11(P36.)
11. 给出下面语言的相应文法: 问题:文法不准确;文法有二义性 L1={anbnci| n 1,i 0} a、b的个数一样多 S AB A aAb|ab B cB|ε
CH.2.练习题4(P35.)
4.令+、*和↑代表加、乘和乘幂,按如下的非标准优 先级和结合性质的约定,计算1+1*2↑2*1↑2的值: (1) 优先顺序从高到低为+、*和↑,同级优先采用 左结合。 (2) 优先顺序从高到低为↑、+和*,同级优先采用 右结合。 问题:计算结果错误;缺少计算过程 解: (1) 1+1*2↑2*1↑2 = 2*2↑2*1↑2 = 4↑2*1↑2 = 4↑2↑2 = 16↑2 = 256 (2) 1+1*2↑2*1↑2 = 2*2↑2*1↑2 = 2*4*1↑2 = 2*4*1 = 2*4 = 8
解: i-i-i 的最左 推导及语法树
E ① E - T ⑧
②
F E - T ③ ⑨ ⑥ i T F ④ ⑦ F i ⑤ i
6
CH.2.练习题9(P36.)
9. 证明下面的文法是二义的:
S → iSeS|iS|i 问题:写法不正确 证明: 因为存在句子 iiiei 对应两棵语法树(两个最右推 导),如图: 所以该文法是二义文法。
① i
S ② i S ④ i S S e S i
③
①
2018/9/26
作业评讲
i S e S ③ ② i S i ④ i
7
CH.2.练习题10(P36.)
10. 把下面的文法改写为无二义的:
S
S → SS|(S)|( ) S S 问题:改写的文法不准确 ) S S ( 解:该文法产生的语言是所有配对的、 可嵌套、可并列的圆括号符号串。 ( ) ( ) 因为存在句子( )( )( )对应两棵语 S 法树(如图),所以该文法是二义文法。 S S 改写为无二义文法:
L2={aibncn| n 1,i 0} S aS|B B bBc|bc
b、c的个数一样多
9
CH.2.练习题11(P36.)
11. 给出下面语言的相应文法: L3={anbn ambm| n ,m0} a、b的个数一样多 S A|AA| ε A aAb|ab L4={1n0m 1m0n| n ,m0} 外层1、0的个数一样多,内层0、1的个数一样多, 内层的01嵌套在外层的1、0间,不能分开 S 1S0|A A 0A1| ε