前言

自你武网安脱离计院以来,某些课程的期末考试往年卷就像机密文件一样,从在不官方公开,《编译原理》亦是如此。

考前,老师通常会发两张计算机学院的往年卷,表示咱的考试题型虽然和计院不一样,但涉及的知识点都是那些。话虽然确实是这么说的,但仍会给学生们带来不安感。

在2023年6月15日的下午,笔者在《编译原理》的考试中花了一个小时出头做完了试卷(获得了96分的好成绩/doge)。看着手边的试卷和可以带走的草稿纸(因为是半开卷,可以带一张纸进来),觉得闲着也是闲着,不如抄一份试卷原题,如果能造福后人也是一桩美事。

建议做过几套计院卷子之后再来看,b站上有专门将武大计院编译原理考试做题的视频

第一题

上下文无关文法描述语言 L1={anbmnm1}L_1=\{a^nb^m | n \geq m\geq1\}

第二题

(1) 用正规表达式表达“所有以a开头,b结尾,由a、b构成的串”
(2) 画出其NFA(非确定有穷自动机)状态转换图
(3) 求以上NFA的最小DFA
(4) 自动机识别串"aabab"的过程

第三题

文法定义如下:
EE+EEE2nE\rightarrow E + E | \sqrt{E} | E^2|n

(1) 写出一个最右推导
(2) 消除左递归 G2\rightarrow G_2
(3) 求出G2G_2的first集、follow集
(4) 构造LL(1)分析表,说明其是否为LL(1)文法

第四题

(1) 用第三题中最初的EE+EEE2nE\rightarrow E + E | \sqrt{E} | E^2|n ,画出n+n\sqrt{n} + n的语法树,并说明其二义性
(2) 消除二义性G3\rightarrow G_3,其中 ‘++’ 和 ‘2^2’ 为左结合,'.\sqrt{.}​’为右结合

第五题

自动机的大图题,有 I0I_0 ~ I7I_7

增广文法G(E’)如下:
EEE'\rightarrow E (0)
EE+EE \rightarrow E + E (1)
EEE \rightarrow \sqrt{E} (2)
EE2E \rightarrow E^2 (3)
EnE\rightarrow n (4)

(1) E+E + \sqrt{}\sqrt{}​是否为活前缀,指出其对应有效的项目集,写出其包含的所有LR(0)项目
(2) 指出所有的冲突
(3) 用优先级和结合性来消解冲突
(4) 写出“n+n2\sqrt{n} + n^2”的分析过程(表)

后面两题都没记,但是和计算机学院的相同题型的问法一模一样,在此仅列出知识点

第六题

(1) 语法制导定义 SDD
(2) 附注语法树

第七题

Pascal程序填三地址码