




如果您无法下载资料,请参考说明:
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

闪闪****魔王
实名认证
内容提供者


最近下载