编译原理 下载本文

课 程 设 计

课程名称 题目名称 专业班级 学生姓名 学 号 指导教师

二○一六年 五 月 二十八 日

编译原理

布尔表达式的语法分析及语义分析程

序设计

2013级软件工程

贺璟 丁瑞 王威风 赵文 鲍金林 张浩

51302041034 51302041023 51302041011 51302010000 51302041035 51302041045

邹青青

蚌埠学院计算机科学与技术系课程设计任务书

课 程 题 目 编译原理 班级 2013级软件工程 指导教师 邹青青 布尔表达式的语法分析及语义分析程序设计 完成时间 2016年5月23日 至 2015年6月17日 主要内容 ⒈给出语法分析方法及中间代码形式的描述、文法和属性文法的设计;或者词法分析方法及符号表和TOKEN代码的设计。 ⒉简要的分析与概要设计、算法设计与程序设计 ⒊编制好分析程序后,设计若干用例,上机测试并通过所设计的分析程序。 ⒋撰写课程设计报告书 1.封面 2.课程设计任务书 3. 分工协作说明 4. 成绩评定表 5.课程设计报告 ⑴ 系统总体方案 ⑵ 设计思路和主要步骤 ⑶ 各功能模块和流程图 ⑷ 设计代码 ⑸ 心得体会和参考资料 说明:学生完成课程设计后,提交软件及课程设计电子和纸质版,要求报告文字通畅、字迹工整,文字不少于3000字,并按要求装订成册。 1.题目用黑体三号,段后距18磅(或1行),居中对齐; 2.标题用黑体四号,段前、段后距6磅(或0.3行); 3.正文用小四号宋体,行距为1.25倍行距; 4.标题按“一”、“㈠”、“1”、“⑴”顺序编号。 星期 周次 第14周 至 第17周 设计报告要求指导时间地点

版面要求 一 二 2013级软件工程,1-2节 三 四 五 2013级软件工程,5-6节 六 日 上机时间安排 上机时间,多媒体技术实验室(A503)

分工协作说明

课题名称 学生姓名 学号 所做的工作 贺璟 51302041034 总体架构,模块指导 丁瑞 51302041023 系统分析 王威风 51302041011 代码设计,程序分析 鲍金林 51302041035 代码设计,程序分析 赵文 吴振杰 张浩 51302041006 文档撰写,总结 动态模型设计 文档撰写,总结

蚌埠学院计算机科学与技术系课程设计成绩评定表

项目 文献阅读与调查论证 设计质量 论文撰写质量 学习态度 学术水平与创新 总分 0.10 100 权重 0.20 分值 100 具体要求 能独立查阅文献和从事其它调研活动;有收集、加工各种信息的能力 设计合理、功能齐备,程序运行正常,实验数据准确可靠;有较强的实际动手能力 设计说明书完全符合规范化要求,用A4复印纸打印成文 学习态度认真,科学作风严谨,严格按要求开展各项工作,按期完成任务 设计有创意,有一定的学术水平或实用价值 得分 0.30 100 0.20 100 0.20 100 评语: 等级: 指导教师: 年 月 日

一、系统分析

1.1引言

“编译原理”是一门研究设计和构造编译程序原理和方法的课程,是计算机各 专业的一门重要的专业基础课。编译原理这门课程蕴含着计算机学科中解决问题的思路、形式化问题和解决问题的方法,对应用软件和系统软件的设计与开发有一定的启发和指导作用。“编译原理”是一门实践性较强的课程,要掌握这门课程中的思想,就必须要把所学到的知识付诸实践。而课程设计是将理论与实践相互联系的一种重要方式。

通过设计、编制、调试一个布尔表达式的语法及语义分析程序,加深对语法及语义分析原理的理解,并实现词法分析程序对单词序列的词法检查和分析。 1.2开发背景

布尔表达式(Boolean expression)是一段代码声明,它最终只有true(真)和false(假)两个取值。从最基本的层次来说,所有的布尔表达式,不论它的长短如何,其值只能是true或false。布尔表达式的语义在于指明计算一个逻辑值的规则.。布尔表达式在程序设计语言中有两个基本的作用:

一是在某些控制语句中作为实现控制转移的条件; 另一个则是用于计算逻辑值本身。

二、概述

2.1设计题目

布尔表达式的递归下降翻译程序设计 2.2设计目的

课程设计是对学生的一种全面综合训练,是与课堂听讲、自学和练习相辅相成的必不可少的一个教学环节。通常,设计题中的问题比平时的练习题要复杂,也更接近实际。编译原理这门课程安排的课程设计的目的是旨在要求学生进一步巩固课堂上所学的理论知识,深化理解和灵活掌握教学内容,选择合适的数据逻辑结构表示问题,然后编制算法和程序完成设计要求,从而进一步培养学生独立思考问题、分析问题、解决实际问题的动手能力。

三、设计环境与工具

Visual C++

四、设计原则

4.1基本方法

在本程序中,输入一段布尔语句,使用递归下降的方法得到其推到过程,并 利用递归下降翻译的方法的到四元式序列,最终根据生成的四元式序列分析得到逆波兰式。

4.2属性文法

B ? TB′ B’.in=T.type

B′? and T B′ B’.in=T.type addtype(and,entry,B.in) B′?ε B’.val=ε T ? FT T.in=F.type.

T′? or FT′ T’.in=F.type addtype(or,entry,B.in) T′?ε T’val=ε F ? not F F.val= not.F.val F ? true F.val=true F ? false F.val=false F ?(B) F.val=B.val F ? i rop i F.val=i.lexval rop i.lexval addtype(i,entry,l.in)