1 / 28
文档名称:

编译原理课程设计-基于表达式计算器.doc

格式:doc   页数:28
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

编译原理课程设计-基于表达式计算器.doc

上传人:3346389411 2013/3/26 文件大小:0 KB

下载得到文件列表

编译原理课程设计-基于表达式计算器.doc

文档介绍

文档介绍:**工程学院
编译原理课程设计
课程设计题目:表达式计算器
姓名:***
院(系) :计算机科学与工程学院
专业班级:计算机科学与技术084班
学号:200810214415
指导教师:
设计日期:2010 年 12 月26日
目录
表达式计算器 1
1. 需求分析 1
. 总述 1
2. 概要设计 1
. 开发环境 1
. 总体设计 2
. 模块结构图 2
. 模块说明 2
. 界面设计 3
3. 详细设计 4
. 词法分析模块: 4
. 词法分析简介: 4
. 词法分析模块的设计及实现 4
. 语法分析模块 11
. 语法分析简介 11
. 语法分析器的实现 11
文法分析 19
..1 19
4. .测试分析 21
5 课程总结 24
6 .参考文献 25
表达式计算器
需求分析
总述
计算器是我们经常使用的小工具,它能帮我们对数据进行有效的运算,如通过四则运算能实现对输入数据的加减乘除。本课程设计结合了编译原理中的词法分析、语法分析及语义分析方法,给出了表达式计算器的系统设计过程,并在VC++。
功能要求
计算器的功能要求如下:可以支持加(+)、减(-)、乘(*)、除(/)运算,如3+4-5*2/2;支持括号运算,如(4+5)*5/8;判断用户输入的表达式是否正确,如3+-*3是一个错误的表达式,在计算时将提示错误;用户输入表达式后,按下等号按钮执行计算。
概要设计
开发环境
开发平台:Windows XP + VC++
开发语言:C++
总体设计
程序在VC++。模块设计
模块结构图
词法分析模块
语法分析模块
计算模块
需要一个单词
识别一个单词
得到一个语法短语
计算结果
图1. 程序模块图
模块说明
计算器分为三个功能模块:
(1)词法分析模块:对输入的表达式从左到右扫描,识别出表达式中的单词(包括运算符和运算数),若单词的构成不符合词法规则(运算符和运算数的构成规则),则报错并停止计算。
(2)语法分析模块:将单词分解为各类语法短语,若存在不符合规则的语法短语,则报错并停止计算。
(3)计算模块:对符合语法规则的语法短语进行计算,若计算不能进行,则报错并停止计算。
计算器的三个功能模块中语法分析模块起到了核心作用,如图1所示。
界面设计
图2表达式计算器
详细设计
词法分析模块:
其词法分析器调用接口为lex()
词法分析简介:
词法分析是编译原理程序的第一阶段,其任务是:从左至右逐个字符地对源程序扫描和分解,识别出一个个的单词(如标志符、常量、运算符、界符等),并判断单词的构成是否符合词法规则。可以使用上下文无关文法来描述词法规则,使用有限自动机来识别单词。
词法分析模块的设计及实现
lex工具的基本使用方法和工作原理:
Lex工具是一种词法分析程序生成器,它可以根据词法规则说明书的要求来生成单词识
别程序,由该程序识别出输入文本中的各个单词。一般可以分为<定义部分><规则部
分><用户子程序部分>。其中规则部分是必须的,定义和用户子程序部分是任选的。
(1)定义部分
定义部分起始于%{ 符号,终止于%} 符号,其间可以是包括include语句、声明语句
在内的C语句。这部分跟普通C程序开头没什么区别。
%{
#include ""
int linenum;
%}
(2) 规则部分
规则部分起始于"%%"符号,终止于"%%"符号,其间则是词法规则。词法规则由模式和
动作两部分组成。模式部分可以由任意的正则表达式组成,动作部分是由C语言语句组
成,这些语句用来对所匹配的模式进行相应处理。需要注意的是,lex将识别出来的单
词存放在yytext[]字符数据中,因此该数组的内容就代表了所识别出来的单词的内容。
类似yytext这些预定义的变量函数会随着后面内容展开一一介绍。动作部分如果有多
行执行语句,也可以用{}括起来。
%%
title                 showtitle();
[\n]                  linenum++;
[0-9]+                printf("Int     : %s\n",yytext);
[0-9]*\.[0-9]+        printf("Float   : %s\n",yytext);
[a-zA-Z][a-zA-Z0-9]* pri
nt

最近更新

2026年国开法律专题形考作业4考试题库附完整答.. 44页

2026年国开电大外国文学专题形考题库附参考答.. 41页

2026年在线廉政知识测试题及答案(网校专用).. 14页

2026年大学c语言考试题库往年题考 13页

2026年大连职业技术学院单招职业技能测试题库.. 43页

2025广东深圳市公安局第十三批招聘警务辅助人.. 48页

2026年安徽水利水电职业技术学院单招职业技能.. 44页

2026年宜春幼儿师范高等专科学校单招职业倾向.. 45页

2025浙江温州平阳县萧江镇中心卫生院招聘门诊.. 35页

2026年山西省财政税务专科学校单招职业倾向性.. 44页

2026年工贸试题-考试题库【模拟题】 42页

2025重庆沙坪坝区树人沙磁小学校教师招考试备.. 43页

2026年广东交通职业技术学院单招职业技能测试.. 44页

2026年广西省防城港市单招职业倾向性测试模拟.. 44页

2026北京师范大学附属实验中学教育集团教师及.. 36页

2026山西省面向江南大学选调优秀高校毕业生考.. 47页

2026年华文慕课 刑法学总论课后作业参考答案 16页

2026年注册造价工程师考试题库200道含完整答案.. 86页

2026年吉安幼儿师范高等专科学校单招职业倾向.. 44页

2026年福建省储备粮管理有限公司莆田直属库招.. 51页

2026年自考专业(营销)考试题库2000道及参考答.. 81页

2026年安徽电气工程职业技术学院单招职业倾向.. 44页

2026年阿勒泰职业技术学院单招职业倾向性考试.. 44页

2026年常用党纪法规知识测试题学生专用 18页

2026福建厦门轨道建设发展集团有限公司校园招.. 50页

C语言程序设计实例教程含答案 13页

2026年普通摩托车考试试历年真题带答案 29页

2026年本溪满族自治县辅警招聘考试历年真题必.. 30页

2026年法院廉政知识测试题(模拟题) 15页

2026年江苏省安全生产培训试题word 28页