第 1 页 共 5 页
Chapter 2 Lexical Analysis
注意:
1、 本次作业全部批改。
2、 作业中全对以√标识;小问题在答案上做修改;大问题不作任何标记。
3、 每位同学提交的本子都会有“阅”字和日期,并且作为平时成绩记录。
4、 是按照多数同学共同存在的问题统计的,个别同学不具有代表性的问题没有统计。
Homework Analysis:
No. 2.1
a. c*a(a|c)*b[a-c]*
问题的思考:定下第一个 a 和第一个 b 的位置,然后看看串(~a~b~)中存在的可能及其表达
法。
存在的问题:
很多同学考虑的太复杂,考虑到了 a,b 都不存在或者 a 存在 b 不存在的情况,写出了不
存在 a 或者 b 的串,题目中说第一个 a 和第一个 b,那 a、b 必然存在。
(a|c)*ac*b[a-c]*也可以认为是正确的,其标识的 a 是 b 之前的最后一个 a
本题出错率:约 50%
b. ((b|c)*a(b|c)*a)* (b|c)* 或 (b|c)* (a(b|c)*a(b|c)*)*
问题的思考:将需要正则表达式描述的字符串进行如 …(~a~a)(~a~a)(~a~a)(~)的分割,便可
以进行上述表达;或者进行如(~)(a~a~)(a~a~)(a~a~)…的分割。
存在的问题:
很多人写成((b|c)*a(b|c)*a (b|c)*)*,也正确。
本题出错率:约 50%
c. (1|0)*00 或 (1(1|0)*00)|0
问题的思考:0、末两位为 0 的二进制数均是 4 的倍数。情形一:多位为 0 即为 0,0 打头的
二进制数也可以;情形二:不能用多位 0 表示 0,不存在 0 打头的二进制数。
存在的问题:
问题不大。
出错率:很少,个别同学粗心。
d. 10101(0|1) | 1011(0|1)(0|1) | 11(0|1)(0|1)(0|1)(0|1) |(0|1)*1 (0|1)*(0|1)(0|1)(0|1)(0|1)(0|1)(0|1)
问题的思考:大于 101001 的二进制数至少为六位二进制数,最小的大于 101001 的数为
101010,上面分四种情形来表示符合条件的二进制数。
存在的问题:
这个题目做出来的人很少,主要是分类方法没有考虑好。最后一项
最后一项写成 1 (0|1)*(0|1)(0|1)(0|1)(0|1)(0|1)(0|1)也可以。
- 1
- 2
- 3
- 4
- 5
- 6
前往页