简单说明语的翻译程序编译原理课程设计.docVIP

简单说明语的翻译程序编译原理课程设计.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
简单说明语的翻译程序编译原理课程设计

学 号: 课 程 设 计 题 目 简单说明语句的翻译程序 学 院 计算机学院 专 业 软件工程 班 级 姓 名 指导教师 20 年 月 日 课程设计任务书 学生姓名: 专业班级: 指导教师: 工作单位: 计算机学院 题 目: 简单说明语句的翻译程序 初始条件: 程序设计语言:主要使用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=keywo

文档评论(0)

liwenhua11 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档