文档详情

课程设计--简单说明语句的翻译程序.doc

发布:2018-05-11约4.28千字共14页下载文档
文本预览下载声明
学 号: 课 程 设 计 题 目 简单说明语句的翻译程序 学 院 计算机学院 专 业 软件工程 班 级 姓 名 指导教师 何九周 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
显示全部
相似文档