编译原理课程设计c版

本文由leishensc贡献

doc文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。

2008-2009 学年第二学期 学年第二

《编译原理》 课程设计报告

学院(系) : 班 级:

计算机科学与技术学院 08 级

学生姓名: 学 号:

指导教师:

时间: 时间:

一.课程设计的目的

词法分析器要实现的功能是依次扫视字符串形式源程序中的各个字符,逐个 识别出其中的单词。从左至右扫描源程序的字符串,按照词法规则识别出一个个 正确的单词,并转换成该单词相应的二元式交给语法分析使用。是该分析器可以 识别关键字,普通标识符,阿拉伯数字,单分界符,代表双分界符。通过本次词 法分析器课程设计进一步理解高级语言在计算机中的执行过程, 提高自己的编程 能力,培养好的程序设计风格。同时通过某种可视化编程语言的应用,更进一步 加深对编译原理中重点算法和编译技术的理解。

二.课程设计的内容及要求

课程设计内容:利用 VC++6.0 编写 C 语言的词法分析 课程设计要求: 完成下述文法所描述的单词符号的词法分析程序: -->|| -->| -->+|-|*|/|;|(|)|{|}|=|>|:=| -->a|…|z|A|…|Z -->0|…|9 -->’ ’

三.问题分析及相关原理介绍

3.1 编译系统原理介绍

编译原理是介绍如何将高级程序设计语言变换成计算机硬件所能识别的机 器语言, 以便计算机进行处理。 它的理论基础坚实, 其系统不仅应用于编译技术, 还大量应用于人工智能、多媒体技术及数据库等领域。 3.2 算法及功能分析 1.Main 函数为主函数,在程序开始定义了 Iskey,IsLetter,IsDigit 几个 函数 然后把把字符串 ch 赋值为空,主函数 mian .子函数是用来判断是否是关 键字,字母和数字。主函数还有 switch 语句来进行对运算符,单分界符,双分

界符 和控制 。 2.首先运行主函数,并判断输入文件的路径正确与否。输入正确后,开始调 用函数进行分析。 3.判断是否是为空格,制表符,回车。是则输出空。否则继续向下执行。 4.判断是否为字母,若是大写字母的话 ch=ch+32,将字母变成小写。 5.调用函数判断该字符串是否为关键字。是关键字输出字符串及关键字,不 是关键字则输出字符,并说明是普通标识符。 6.下面是匹配数字和运算符,并输出结果,其中运算符用 switch 语句进行判 断。

结构图如下: 结构图如下:

四 设计思路及关键问题的解决方法

1.设计思路 通过主函数,并通过调用子函

数,让子函数各司其职通过主函数的调用提高 程序运行的效率。 首先判断文件是否存在,是否为空,接着打开输入文件,逐个字符地读入要 分析的程序。 对读入的字符串进行分类,分为数字、字符串和其它,然后依次循环分别对 数字串、字符串和其他情况进行判断处理,同时将结果输出界面显示。其中字符 串的判断分为标识符和关键字,其它情况的判断分为单分界符、双分界符。对关 键字的存储问题中中用到了指针数组,使字符串的处理更加灵活方便。 2.本词法分析器设计时的难点 首先是指针的用法,通过使用 fseek 函数,可以重定位流上的文件指针, 轻易把文件指针返回上一个字符 第二是单目运算符和双目运算符的引用,开始不知道该如何去做,后来通过 switch 语句来解决这一难题。

5. 结果及测试分析

1.程序运行后输入源文件名和路径名。

2.程序编译器输出结果。

七、总结心得与体会

这次课程设计是用 C++编写该程序编写程序,通过这次写程序,了解了词 法分析程序的开发过程及程序的运行,掌握了词法分析的一些基本理念,同时也 感到自己的知识水平有限, 写的这个词法分析程序功能有限在很多方面的功能还 有待完善,在这次试验中有几点体会。 1. 由于对 C 语言不太熟悉,所以采用的较为熟悉的 C++作为设计语言。刚 开始的时候认为这是个很简单的程序,但一做下来发现,有很多地方 不知道该怎么实现,特别是指针部分,以及对程序的整结构方面的不 能实现功能,等到后来看了好几遍书之后,捋清思路后才实现功能。 2. 写程序前(无论大小)最好先把程序流程写下来,这样一来,有了明 确的思路,即使错了也能很好的找出错误,完成程序。 在今后的学习中,要注意实践,不能眼高手低,多做试验才能更好的理解 理论,并且要多问几个问什么,把知识学到家。

八、附录(程序源代码:) 附录(程序源代码 )

#include #include using namespace std;//申请空间 #define a 22 char ch =' ';//CH 字符类型 空值 string key[15]={//文件指针

cout


相关内容

  • 编译原理课程设计心得体会

    经过一个星期的编译原理课程设计,本人在刘贞老师的指导下,顺利完成该课程设计。通过该课程设计,收获颇多。   一、对实验原理有更深的理解   通过该课程设计,掌握了什么是编译程序,编译程序工作的基本过程及其各阶段的基本任务,熟悉了编译程序总流 ...


  • "编译原理"教学实践探究

    "编译原理"教学实践探究 摘要:教学需要"教"与"学"双方的密切配合.树立"学生为主体.教师为主导"的良好教学关系,是成功教学的关键.本文根据"编译原 ...


  • 张瑞编译原理实验报告

    黑龙江大学 "编译原理课程设计"读书报告 学院 年级 专业 学号 姓名 报告日期 成绩 软件学院 2012级 软件工程 20122515 张瑞 2014年6月28日 黑龙江大学计算机科学技术学院 黑龙江大学软件学院 概述 ...


  • 编译原理课程设计报告

    南京航空航天大学 编译原理课程设计 题目一个PASCAL语言子集(PL/0)编译器的设计与实现 专业 班 号 学号 姓名 指导老师 答辩日期2014年1月 1设计的题目 一个PASCAL语言子集(PL/0)编译器的设计与实现 2课程设计的要 ...


  • 广工2014编译原理课程设计报告

    课 程 设 计 课程名称 编译原理 题目名称 PL/0编译器的扩充 学生学院 计算机学院 专业班级 计算机科学与技术12(4) 学 号 3112005901 学生姓名 柏石先 指导教师 李杨 2014 年 12 月 28日 一. 实验目的与 ...


  • 智能仪器原理及应用

    课 程 设 计 基本信息 学生姓名: 学号: 院系名称:信息与电气工程学院 课程设计名称:智能仪器原理及应用 同组人姓名: 课程设计时间: 2013年11月11日 至 2013年11月15日 课程设计内容目录 页码 一. 课程设计题目与任务 ...


  • 编译原理论文

    编译原理心得体会 编译原理是计算机专业的一门重要专业课,旨在介绍编译程序构造的一般原理和基本方法,在计算机本科教学中占有十分重要的地位. 该课程理论性与实践性都很强,我们在学习 是普遍感到内容非常抽象,不易理解,内容多且繁琐,难以完整.全面 ...


  • WO老K广工编译原理实验报告(广东工业大学编译原理试验报告)2016

    实 验 报 告 课程名称 编译原理 题目名称 PL/0编译器的扩充 学生学院 计算机学院 专业班级 计算机科学与技术13(一) 学 号 31130057xx 学生姓名 xxxx 指导教师 张巍 2015 年 12 月 10日 实验目的与要求 ...


  • 乐曲演奏电路

    指导教师: 日 期: <EDA 技术与VHDL 语言设计> 课程设计 题 目: EDA技术及其应用 --乐曲演奏电路 姓 名: 陈 院 系: 电子信息工程学系 专 业: 电子信息工程 班 级: 电信092 学 号: 910706 ...