《编译原理》课程设计说明-第1次.docx 立即下载
2025-08-26
约1.1万字
约20页
0
22KB
举报 版权申诉
预览加载中,请您耐心等待几秒...

《编译原理》课程设计说明-第1次.docx

《编译原理》课程设计说明-第1次.docx

预览

免费试读已结束,剩余 15 页请下载文档后查看

10 金币

下载文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

《编译原理》课程设计说明-第1次

第一篇:《编译原理》课程设计说明-第1次《编译原理》课程设计《编译原理》课程设计1.要求完成一个简化C语言——TINYC语言的编译程序,最终能为用TINYC语言编写的源程序(后缀为.tny,已给sample.tny,用一般的文本编辑程序即可打开)生成目标代码,并在给定的虚拟机TM上运行得到运行结果。TINYC语言中允许出现的字词:整数、标识符;算术运算符/关系运算符/赋值运算符/界符:+、-、*、/、=、表达式:简单整型算术表达式、关系表达式语句:条件语句(IFTHENELSEEND)循环语句(REPEATUNTIL)赋值语句(:=)读写语句(READWRITE){}中可以有注释,但不能嵌套2.步骤1)、词法分析2)、语法分析3)、语义分析4)、生成目标代码3.源码构成MAIN.C主程序GLOBALS.H全局类型及变量(如Token类属及语法树结点的组成)UTIL.H、UTIL.C各步骤的实用函数。如输出Token,生成语法树结点等SCAN.C、SCAN.H词法分析程序及其头文件PARSE.C、PARSE.H语法分析程序及其头文件ANALYZE.C、ANALYZE.H语义检查程序及其头文件SYMTAB.C、SYMTAB.H符号表生成程序及其头文件CGEN.H、CGEN.C、CODE.C、CODE.H目标代码生成程序及其头文件《编译原理》课程设计TM编译sample.tny源程序后得到目标代码,在该虚拟机上运行得到结果步骤1——词法分析要求:填写getToken()函数,完成词法分析器scan.c。约定:仅允许整数类型,不允许实数类型标识符由大小写英文字母组成,最多52个。其识别按最长匹配原则整数后紧跟非数字,或标识符后紧跟非字母认为是一个新Token开始由{}括起来符号串都认为是注释部分,该部分在词法分析时被过滤掉识别出的Token由两个变量:currentToken,tokenString识别,其中currentToken代表Token的类属,为一个名为TokenType的枚举类型,在文件globals.h中定义;tokenString代表Token在程序中出现的形式,即其本来面目。例如整数10的currentToken值为NUM,而tokenString值为‘10’;标识符i的currentToken值为ID,而tokenString值为‘i’typedefenum{ENDFILE,ERROR,IF,THEN,ELSE,END,REPEAT,UNTIL,READ,WRITE,/*保留字*/ID,NUM,ASSIGN,EQ,LT,PLUS,MINUS,TIMES,OVER,LPAREN,RPAREN,SEMI:==+*/();}TokenType;画识别符合TINYC语言构词规则的DFA。然后用直接编码的方法构造词法分析器/****************************************************//*File:scan.c*//*ThescannerimplementationfortheTINYcompiler*//****************************************************/#include“globals.h”#include“util.h”#include“scan.h”typedefenum{START,INASSIGN,INCOMMENT,INNUM,INID,DONE}StateType;《编译原理》课程设计chartokenString[MAXTOKENLEN+1];staticintgetNextChar(void)//获得下一字符{实现请自己看scan.c文件}staticvoidungetNextChar(void)//用于回吐字符{实现请自己看scan.c文件}staticstruct{char*str;TokenTypetok;}reservedWords[MAXRESERVED]={{“if”,IF},{“then”,THEN},{“else”,ELSE},{“end”,END},{“repeat”,REPEAT},{“until”,UNTIL},{“read”,READ},{“write”,WRITE}};//定义保留字表staticTokenTypereservedLookup(char*s)//进行保留字的匹配{实现请自己看scan.c文件}/**********************************************//*theprimaryfunctionofthescanner*//*functiongetToke
查看更多
单篇购买
VIP会员(1亿+VIP文档免费下)

扫码即表示接受《下载须知》

《编译原理》课程设计说明-第1次

文档大小:22KB

限时特价:扫码查看

• 请登录后再进行扫码购买
• 使用微信/支付宝扫码注册及付费下载,详阅 用户协议 隐私政策
• 如已在其他页面进行付款,请刷新当前页面重试
• 付费购买成功后,此文档可永久免费下载
全场最划算
12个月
199.0
¥360.0
限时特惠
3个月
69.9
¥90.0
新人专享
1个月
19.9
¥30.0
24个月
398.0
¥720.0
6个月会员
139.9
¥180.0

6亿VIP文档任选,共次下载特权。

已优惠

微信/支付宝扫码完成支付,可开具发票

VIP尽享专属权益

VIP文档免费下载

赠送VIP文档免费下载次数

阅读免打扰

去除文档详情页间广告

专属身份标识

尊贵的VIP专属身份标识

高级客服

一对一高级客服服务

多端互通

电脑端/手机端权益通用