编译原理设计题目_编译原理设计

其他范文 时间:2020-02-28 11:21:11 收藏本文下载本文
【www.daodoc.com - 其他范文】

编译原理设计题目由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“编译原理设计”。

编译原理设计题目

设计原则:

1.使用了《编译原理》中的某些内容,如原理、概念等;

2.具有完整性,表现或演示了某种完整的功能;

3.实用性,有一定的应用价值。

设计目的:花了足够的时间,做了一定量的工作,从而使得水平提高。设计语言:任意熟悉的开发环境。

设计步骤:

1.选好题目

2.思考你将要把软件编成什么模样?

3.写出需求分析

4.开始设计

5.测试

第一大类:充分利用《编译原理》

1.与表达式有关的内容:

 表达式计算器:这是一款算术表达式计算程序,用户通过输入表达式达到计算的目的,可代替目前普遍使用的计算器。使用了编译原理中的词法分析、算符优先分析等。根据功能的不同可分为:

 无符号整数表达式计算器:输入无符号整数表达式,输出结果。难度:较难。工作量:中等。

 整数表达式计算器:考虑负数。难度:较难。工作量:中等。

 定点实数表达式计算器:难度:较难。工作量:中等。

 通用表达式计算器:考虑1.23e-2的形式输入。难度:难。工作量:中等。 函数表达式计算程序:这是一款能计算函数值的实用程序,用户输入含有自变量x的函数表达式被电脑接受后,可接着输入自变量x的值,电脑输出函数值y的值。用户可以是数学、物理等教师,他们可以在上课教授与函数有关的课程时进行课堂演算,也可以在备课时验证数据;用户也可以是工程技术人员和学生。使用了词法分析、算符优先分析。根据功能的不同可以分为:

 多项式函数计算程序:只处理多项式函数,如f(x)=x^3+x^2+5等。难度:较难。也可设计成其他专用函数计算程序,如幂函数计算、三角函数计算等。但要避免出现不同用,如不要设计成仅能处理f(x)=2^x的幂函数,因为这样的函数利用普通编程就能实现,无法体现编译原理。工作量:中等。

 通用初等函数计算程序:能处理所有的初等函数的计算。如f(x)=3*sin(x/2+3.1415)+x^2等。难度:难(因为涉及到函数名称和参数的识别问题)。工作量:较大。

 二元或多元函数的计算:请参考立体解析几何中相关方程。如f(x,y)=x^2+y^2等。难度和工作量同一元函数的计算。

 逻辑运算分析:可对关系表达式进行分析,并得出结果。这个设计结果可改变后用于电路分析、谓词演算等。难度:较难。

2.与字符搜索、匹配有关的内容:

 字符串搜索程序:用户输入要查找的字符串的正则表达式,软件可在大量文本中找

到符合描述的字符串。这个设计可参考微软.NET的正则表达式的功能。使用到正规式、词法分析等,还需要有较大的设计技巧。根据功能的不同可以分为:

 名称查找程序(类似于文件名、词典等):存有大量的名称,如abc,123,a1,ab1245

等,输入要查找的规则,找出符合规则的名称。

 方案1:通配符,把“*、?”当作通配符:如输入“a*”,显示“abc,a1,ab1245”;

输入“a?”,输出“a1”。

 方案2:正规式,把“*”当作“闭包”,把“|”当作“或”:如输入“(a|b)1”,输出“a1”;输入“(a|b)*c”,输出“abc”。

 方案3:只要包含正规式即可,当名称中包含该正规式,就输出来:如输

入“(a|b)1”,输出“a1,ab1245(含有b1)”;输入“(a|b)*”,输出

“abc,a1,ab1245”。

 方案4:含有通配符的正规式,设“@”表示任意字母,“$”表示任意数

字(其他可再设多一点,如表示符号等,但会减少名称中的符号种数):

如输入“a@*” 输出“abc”;输入“a(@|$)*”,输出“abc,a1,ab1245”。

(以上涉及到正规式的方案难度较大,其他难度一般。注:以上的@$等

符号是随便设定的,与.NET中通用的符号不同且有冲突的,请在实际编

程时修改之。)

 文本搜索程序:在一连串文本中搜索所需的字符串。同“名称查找程序”中的有关正则式的方案,难度较大,具体正规式包含哪些符号和通配符可另定。

(关于正则表达式的介绍参见另一文档,详细信息见.NET框架联机文档)

 转义符的识别:C语言的字符串常量书写时使用了大量的转移符,如“”表示单

斜杠,而“n”表示换行(同“u000A”),“x20”表示十六进制表示形式(恰好两位)与 ASCII 字符匹配(这里代表值为32的ASCII字符,即空格)。请参照C语言教材,编制一个软件,输入包含转义符的字符串,输出没有转义符的真实字符串。难度:一般。工作量:一般。

 源程序中特定信息的提取:可以提取全局变量列表、所有变量列表、所有函数列表、所有名称列表、注解信息等。主要利用词法分析的原理,有时用到有限自动机的运行。难度:一般,实用性强。

3.纯粹的编译原理的实现

 迷你编译器的设计:利用Lex/Yacc等实用工具,开发一个编译器。通过自学有关的编译器生成工具,定义小型C语言,设计相应的文法,利用编译器生成工具生成一个自己的编译器。难度高,需要自学大量的东西,实用性强。

 CPU仿真:自己定义一个CPU指令,指令若干条、寄存器若干个、内存若干,用

软件模拟汇编代码的执行。难度高,实用性高,可扩展性强。

 有限自动机的确定化和最小化:输入一个不确定的优先自动机,输出它的确定化、最小化后的确定的优先自动机。难度:较难。

 正规文法转化为有限自动机:输入正规文法,自动转化为不确定的优先自动机。为

了实用,可以考虑加点其他功能(参考有限自动机的确定化和最小化)。难度:一般。

 正则表达式转化为有限自动机:输入正则表达式,转化为不确定的有限自动机(参

考相关题目)。难度:较难。

 万能有限自动机的运行:以状态转移表驱动的万能有限自动机的运行,输入不同的状态表(也可以以状态转换函数的形式输入),可以使程序识别不同的字符串,从而达到万能的运行效果。难度:较难。

第二大类:利用《编译原理》的有关概念

1.词频分析程序:分析一篇文章中词的出现频率,从而得出有意义的结果。如果仅使用字符串匹配的概念,则和编译原理搭不上边了,可以加点正则表达式匹配的概念(参考.Net关于正则表达式的例子和说明),这样实用性会更强一点。难度一般,实用性强。

2.在应用软件中添加正则表达式的校验(或搜索)功能:这是一类程序,这类程序完成某个实际的应用,但是在某个环节需要对数据进行校验,或从一大片文本中搜索特定的子串,那么,在校验和搜索时可利用正则表达式。而正则表达式是很多开发语言和运行库都提供的,你只需要调用其中的功能就能达到校验或搜索的目的。如用户注册时的密码的字符组成校验,用户手机号码的校验,用户名的组成校验、日期校验等;搜索,如在一篇文章中搜索并提取出所有货币表示的内容、人的姓名、数字、日期、单词、手机。其中一个实用的例子就是:分析web网页,提取其中的文本,即滤掉html标记,获取有用的文本信息;也可以差找到网页中游多少个超级链接,从而得到网页内的超链接列表;也可以搜索到网页内的邮箱地址列表。

3.查找替换:你能否在你的某个应用程序中设立查找替换功能,支持通配符的查找,然后在文本中标出,或显示出,或替换之。难度:一般。实用性强。

编译原理论文

编译原理心得体会编译原理是计算机专业的一门重要专业课,旨在介绍编译程序构造的一般原理和基本方法,在计算机本科教学中占有十分重要的地位。该课程理论性与实践性都很强,我们......

编译原理实验报告

编译原理实验报告报告完成日期 2018.5.30 一. 组内分工与贡献介绍二. 系统功能概述;我们使用了自动生成系统来完成我们的实验内容。我们设计的系统在完成了实验基本要求的前提......

编译原理 学习心得

国际学院 0802 杨良燕 200819100227《编译原理》课程学习心得《编译原理》是计算机专业的一门重要课程,正如教材第一章的引论所述,“编译程序是现代计算机系统的基本组成部分......

编译原理教学大纲

编译原理教学大纲一、课程的性质、地位本课程是计算机专业的重要专业课之一,是一门理论性和实践性较强的课程。主要介绍程序设计语言编译程序构造的基本原理和基本实现方法。......

编译原理试题

《编译原理》试题A 1.名词解释短语LL(1)文法 语法分析无环路有向图(DAG) 语法制导翻译 2. Pascal语言无符号数的正规定义如下:num  digit+ (.digit+)? (E(+|-)? digit+)? 其中dig......

下载编译原理设计题目word格式文档
下载编译原理设计题目.doc
将本文档下载到自己电脑,方便修改和收藏。
点此处下载文档

文档为doc格式

热门文章
点击下载本文