《2023年《编译原理课程设计》教学大纲.docx》由会员分享,可在线阅读,更多相关《2023年《编译原理课程设计》教学大纲.docx(11页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、2023年编译原理课程设计教学大纲 编译原理课程设计教学大纲 课程名称: 课程编号: 适用专业: 总 学 分: 总 周 时: 主 撰 人: 撰写日期: 一、目的与任务 通过程序设计上机调试程序实现算法,学习编译程序调试技巧和设计编译程序的一般原则,加深对词法分析、语法分析、语义分析和中间代码生成等编译阶段及实用编译系统的认识,初步掌握编译程序构造的基本原理与技术, 从形式语言理论的角度, 进一步认识与理解程序设计语言。通过编译程序的编写和调试能力的训练,激发学生进一步思考问题,培养学生的学习兴趣和创新能力。并进一步培养学生的抽象思维能力,进一步巩固编译原理课程所学知识。 本次课程设计的时间为2
2、周,目的是通过实际的题目如:词法分析、语法分析、代码优化等,使学生了解和掌握编译程序的工作原理,同时培养学生用相关的程序设计语言进行程序设计,实现编译的功能,从而提高学生的综合能力。 二、教学基本要求 1设计和调试过程要规范化 需求分析:将题目中要求的功能进行叙述分析,并且设计解决此问题的数据存储结构,(有些题目已经指定了数据存储的,按照指定的设计),设计或叙述解决此问题的算法,描述算法可以使用自然语言、伪代码、或函数的方式。 给出实现功能的一组或多组测试数据(测试文法),程序调试后,将按照此测试数据进行测试的结果列出来 。 如果程序不能正常运行或运行过程中出现了不满足算法思想的情况,写出出现
3、这一情况的原因或改进行的方法。 源程序要按照写程序的规则来编写。要结构清晰,重点函数的重点变量,重点功能部分要加上清晰的程序注释。 程序能够运行,要有基本的容错功能。尽量避免出现操作错误时出现死循环。 2课程设计实习报告的书写格式 编译原理 436105 软件工程 1 2W 20236 审 核 人: 设计题目 运行环境(软、硬件环境) 算法设计的思想 算法设计分析 主要函数 源代码 运行结果分析 收获及体会 3实施方式 本次课程设计分成9个题目,都有一定的工作量,涵盖本课程内容和实际应用相关的主要技术,学生可以自由组队选择其中一个实现。课程设计题目见“主要内容”。 根据老师给定的9个题目进行分
4、析设计,本次课程设计采取分组的办法进行, 3-4人为一组,要求每组学生在规定时间内独立完成。 4答辩:课题的论述、测试及问题回答 三、课程设计内容 1、词法分析器的构造: 人们理解一个程序,起码是在单词级别上来思考。同样,在编绎一个程序时,也是在单词级别上来分析和翻译源程序。词法分析是编绎的基础,执行词法分析的程序即为词法分析器,它的任务是对输入或给定的源程序,从左至右逐个字符进行扫描,产生一个个单词符号,把作为字符串的源程序改造成单词符号串的中间程序。 设计目的与任务: 通过本课程设计教学所要求达到的目的是:对词法分析工作流程进行总体设计和详细设计,最终用C语言来设计一个简单词法分析器,实现
5、对源程序的词法分析功能,对输入程序去除注释,并以二元式形式输出程序中所有单词。 2、正则表达式到NFA 在编译系统中,词法分析阶段是整个编译系统的基础。对于单词的识别,有限自动机FA是一种十分有效的工具。有限自动机由其映射f是否为单值而分为确定的有限自动机DFA和非确定的有限自动机NFA。在非确定的有限自动机NFA中,由于某些状态的转移需从若干个可能的后续状态中进行选择,故一个NFA对符号串的识别就必然是一个试探的过程。这种不确定性给识别过程带来的反复,无疑会影响到FA的工作效率。而DFA引擎在任意时刻必定处于某个确定的状态,它搜索是无需象NFA一样必须记录所有的可能路径(trace mult
6、iple poible routes through the NFA),这也是DFA运行效率高于NFA的原因。而已经证明DFA是NFA的一个特例,即对于每一个NFA M存在一个DFA M,使得L(M)=L(M)。 设计目的与任务 通过本课程设计教学所要求达到的目的是:充分理解和掌握NFA,DFA以及NFA确定化过程的相关概念和知识,编程实现对输入的任意正规式转换成NFA的形式输出。 3、NFA的确定化 有限自动机理论是描述词法规则的基本理论。一条词法规则表示一个正规表达式(又叫正规式),而一个正规式又可化为一个DFA(确定有穷自动机),这个有限自动机可用来识别词法规则所定义的所有单词符号。把程
7、序设计语言的所有词法规则都构造出相应的有限自动机,就得到一个词法分析器。然后,再转换为计算机可识别的程序就能自动实现词法的分析和检查。在实际应用中,用NFA(不确定有穷自动机)识别词法存在不确定和状态的冗余,因而,就要将NFA(不确定有穷自动机)转换为DFA(确定有穷自动机),消除了不可到达和不确定。 设计目的与任务 通过本课程设计教学所要求达到的目的是:掌握从NFA到DFA的转换,以及用子集法把NFA转换成DFA理论,编程实现将NFA(不确定有穷自动机)转换为DFA(确定有穷自动机)。 4、DFA的最小化 确定性有限自动机(DFA ,Deterministic Finite Automata
8、)的最小化仍是有限自动机应用及实现方面的重要问题之一。DFA的最小化可以揭示状态之间的内在联系,便于其存储实现,便于建立用DFA描述的任务模型,一些理论问题也与最小化思想有关。DFA的最小化是指,构造一个与之等价且状态数最小的DFA,即等价最小DFA。许多文献给出了一个最小化算法,算法的思想是,构造状态集的一个划分,再将这个划分中的每个子集作为新的状态,从而得到等价最小DFA。 DFA的最小化可以揭示状态之间的内在联系,便于其存储实现,便于建立用DFA描述的任务模型,一些理论问题也与最小化思想有关。 5、语法分析之LL(1)文法 通过该课程设计了解了程序语言的自上而下的语法分析过程,提高了编程
9、能力,能使我们了解编程语言更多的细节 设计目的与任务 (1)读入文法 (2)求出first(), follow() (3)判断是否为LL(1)文法 (4)若是,构造分析表; (5)输入一个字符串看是否是文法的一个句子。 6、算符优先文法 一个文法,如果它的任一产生式的右边都不含有两个相继(并列)的非终结符,即不 含有如下形式的产生式的右部: QR 则我们称该文法为算符文法。 假设文法中的任意两个终结符之间最多只有一个优先关系,则该文法称为算符优先文法。 该课程设计按照求, (P), (P)各两条规则,求出各非终结符的集。然后按照算符优先算法求出各终结符的算符优先关系,填写算符优先表,并将其输出
10、。 7、LR(0)分析表的构造 LR分析技术是一种有效的自下而上分析技术,是一种规范归约,其中L表示从左到右扫描输入串,R表示构造一个最右推导的逆过程。这种方法可以适用于很大一类上下无关文法的语法分析。LR方法的基本思想是:在规范归约过程中,一方面记住已经移进和归约出的整个符号串,即记住“历史”;另一方面根据所用的产生式推测未来可能碰到的输入符号,即对未来进行“展望”。当一串貌似句柄的符号串呈现于分析栈的顶端时,我们希望能够根据所记载的“历史”和“展望”以及“现实”的输入符号等三方面的材料,来确定栈顶的符号传是否构成相对某一产生式的句柄。 LR分析器的核心部分是一张分析表。这张分析表包括两部分
11、,一是“动作”(ACTION)表,另一是“状态转换”(GOTO)表。对于一个文法,如果能用一个每步顶多向前检查K个输入符号的LR分析器进行分析,则这个文法就称为LR(K)文法。本文研究的LR(0)文法即K=0时的文法。 设计目的与任务 本课程设计所设计目的与任务是:通过C语言程序实现LR(0)分析表的构造,熟练掌握LR(0)分析表的构造方法,即利用拓广文法和构造项目集规范族的方法。了解LR(0)分析器的工作原理,并能利用LR(0)分析表对输入串进行分析。 8、逆波兰表达式生成算法 虽然源程序可以直接翻译为目标语言代码,但许多编译程序采用了独立于机器的、复杂性介于源语言和机器翻译语言之间的中间语
12、言:后缀式(逆波兰表达式)等。这样做的好处是: (1)便于进行与机器无关的代码优化工作; (2)使编译程序改变目标机更容易; (3)使编译程序的结构在逻辑上更为简单明确。以中间语言为界面,编译前端和后端的接口更清晰。 设计目的与任务 将非后缀式用来表示的算术表达式转换为用逆波兰式来表示的算术表达式,并能运行查看结果。 9、表达式的中间代码生成 源程序可以直接翻译为目标语言代码,但是许多编译程序却采用了独立于机器的、复杂性介于源语言和机器语言之间的中间语言。这样我们可以做下面工作: (1):便于进行与机器无关的代码优化工作; (2):使编译程序以改变目标机更容易; (3):使编译程序的结构在逻辑
13、上更为简单明确; 而以中间语言为界面,编译前端和后端的接口更清晰,表达式可以用四个域分别称为OP、ORG 1、ORG2及RESULT来表示。 四、时间安排 编译原理课程设计安排在第三学期进行,时间2周(17-18周)。 五、组织管理 1由院、系指派经验丰富的专业教师担任指导教师。 2课程设计实行指导教师负责制,由指导教师全面负责课程设计的指导与管理工作。 六、成绩考核与评定 学生课程设计结束后写出总结报告,对设计的内容和效果进行总结,按照学生在设计期间的表现,指导老师对每位学生写出评语和鉴定,系课程设计领导小组组织答辩,最后确定每位学生课程设计成绩,课程设计成绩分为优、良、中、及格和不及格五个
14、等级。 课程设计成绩为平时表现30%、设计报告50%、答辩20%。 评分标准: 优秀:目的明确,态度端正,模范遵守学校的各项纪律。工作认真,积极 主动,吃苦耐劳,能出色的完成设计任务。撰写了高质量的总结报告。答辩准确流利。 良好:目的明确,态度端正,能遵守学校的各项纪律,工作比较积极主动。 能较好地完成设计任务,成绩较突出,表现良好;撰写了质量比较高的实习报告。答辩较准确流利。 及格:目的明确,态度基本端正,能遵守学校纪律,在督促下能开展工作 并完成一定的设计任务,无大的违纪违规现象;撰写了实习报告。通过了答辩。 不及格:实习态度端正,不能遵守实习单位的纪律,不服从领导,自由散漫,工作消极被动
15、,不能完成实习任务,实习期间有失职、旷工、打架、酗酒等大的过失。或无实习报告,没有通过答辩。 2成绩评定 依据上述考核内容,最后采用优(90分)、良(8089分)、中(7079分)及格(6069分)、不及格( 七、主要参考资料 教材: 编译原理及实践冯博琴等译,机械工业出版社 教学参考书 1、程序设计语言与编译龚天富、侯文永编,电子工业出版社。 2、编译原理吕映芝、张素琴、蒋维杜主编,清华大学出版社,1998年 3、编译原理胡伦骏、徐兰芳、刘建农编,电子工业出版社2023年 4、编译原理(第二版)蒋立源、康慕宁主编,西北工业大学出版社,2023年 5、编译原理习题精选陈意云、张昱著,中国科技大学出版社,2023年 6、编译原理习题与解析 伍春香著,清华大学出版社,2023年 7、编译原理实验指导书自编 编译原理课程设计教学大纲 编译原理课程设计教学大纲(优秀) 编译原理课程设计大纲 编译原理课程设计实训大纲 编译原理教学大纲 机械原理课程设计教学大纲 化工原理课程设计教学大纲. 化工原理课程设计教学大纲 化工原理课程设计教学大纲 化工原理课程设计教学大纲