课程设计--简单说明语句的翻译程序.doc
文本预览下载声明
学 号:
课 程 设 计
题 目 简单说明语句的翻译程序 学 院 计算机学院 专 业 软件工程 班 级 姓 名 指导教师 何九周
2011 年 12 月 30 日
课程设计任务书
学生姓名: 专业班级:
指导教师: 何九周 工作单位: 计算机学院
题 目: 简单说明语句的翻译程序
初始条件:
程序设计语言:主要使用C语言的开发工具,或者采用LEX、YACC等工具,也可利用其他熟悉的开发工具。算法:可以根据《编译原理》课程所讲授的算法进行设计。
要求完成的主要任务: (包括课程设计工作量及其技术要求,说明书撰写等具体要求)
1.明确课程设计的目的和重要性,认真领会课程设计的题目,读懂课程设计指导书的要求,学会设计的基本方法与步骤,学会如何运用前修知识与收集、归纳相关资料解决具体问题的方法严格要求自己,要独立思考,按时独立完成课程设计任务。 1天
系统分析、总体设计、实施计划 3天
撰写课程设计报告书 1天
指导教师签名: 2011年 12月 30日
系主任(或责任教师)签名: 2011年 12月 30日
目录
概述:设计题目,设计目的,设计任务…………….4
设计环境与工具……………………………………….4
设计原则……………………………………………….4
简要的分析与概要设计……………………………….5
详细的算法描述……………………………………….6
测试结果………………………………………………11
收获与体会……………………………………………11
参考文献………………………………………………12
简单说明语句的翻译程序
概述
1.1设计题目
简单说明语句的翻译程序
1.2设计目的与任务
对教材P196中的简单说明语句文法,给出该文法的属性文法,同时实现简单说明语句的翻译,即建立一个符号表,将简单说明语句所引入的名字id和性质登录在符号表中.
二.设计环境与工具
操作系统:Windows7
工具:vc++6.0
语言:c++语言
三.设计原则
程序设计语言中最简单的说明语句的语法描述为:
D→integernamelist∣realnamelist
namelise→namelist,id∣id
即使用关键字integer和real定义一串名字的性质。对这种说明语句的翻译是指在符号表中登录该名和性质。
D→D’,id
∣integer id
∣real id
现在来定义这些产生式所对应的语义动作,给非终结符D一个语义变量D.att,用以记录说明语句所引入的名字的性质(int还是real)。使用过程enter(id ,A)把名字id和性质A登录在名表中。
D→integer id {enter(id,int);D.att:=int}
D→real id {enter(id,real);D.att:=real}
D→D’,id {enter(id,D’.att);D.att:=D’.att}
四.简要的分析与概要设计
程序设计语言中的说明语句旨在定义各种形式的有名实体,如常量、变量、数组、记录(结构)、过程、子程序等等,说明语句的种类也多,对象说明、变量说明、类型说明、过程说明等等。
编译程序把说明语句中定义的名字和性质登记在符号表中,用以检查名字的引用和说明是否一致。
许多说明语句的翻译并不生成相应的目标代码。过程说明和动态数组的说明有相应的代码。
流程图
五.详细的算法描述
#includeiostream.h
#includestdio.h
#includectype.h
#includestdlib.h
#includestring.h
#define BSIZE 128
#define EOS \0
#define STRMAX 999
#define SYMMAX 100
int lineno;
char lexemes[STRMAX];
int lastchar =-1;
int lastentry=0;
struct entry{
char *lexptr;
int token;
}symtable[SYMMAX];
int insert(char s[],int tok);
void error(char *m)
{
printf(line %d:%s!\n,lineno,m);
exit(1);
}
void init()
{
struct entry keywords[]={
int,1,float,2,char,3,bool,4,0,0};
struct entry *p;
for(p=k
显示全部