2021年1月编译原理考题汇总

前言

在编译原理的复习过程中,参考了许多前辈总结的考题,获益匪浅,在此向他们表示感谢。趁现在对考题仍有几分记忆,做下记录,希望帮助到学弟学妹们。

考试题型

考试题型近几年都较为固定,分为以下几种:

image-20210214162929530

2021年1月试题汇总

一、基础知识题

判断该正则表达式文法是否正确?如不正确应该如何进行改写?

二、正则表达式->DFA分析题

请画出 C++ 语言中单词的DFA图,并写出对应的词法分析程序。

三、自顶向下分析设计题

请写出 C 语言中 if-else 语句的文法,并用语法树为其生成四元组,写出该语法树的程序。

四、LR分析题

写出判断一个文法是否为 SLR(1) 文法的程序。

五、语义分析题

小明发明了一种新的类型声明语句,形式如下,请你写出其对应的文法及语义分析程序。

1
2
i:float
i,j,k:int

六、综合分析设计题 (矩阵连乘)

当有多个矩阵进行运算时,各个矩阵之间的运算顺序可影响到最终的运算次数。如 A 为 50×20 的矩阵,B为 20×5 的矩阵,C为 5×30 的矩阵,那么 (AB)C 的运算次数为12500次,A(BC) 的运算次数为33000次,下面请你用编译原理的方法完成这一类式子的计算和判别功能,写出相关的思路和代码,要求的输入输出格式如下:

注意:不用编译原理相关的方法最多得3分!!

1
2
3
4
5
6
7
8
9
Input:
(ABC
(AB)C
A(BC)

Output:
No
12500
33000

写在后面

本次汇总是根据回忆所写出来的,因此难免有疏漏或错误。如各位在观看时对汇总的题目有不解,或是发现了错误,请通过我的邮箱mail#charfole.top(#换成@)联系我,感谢!