编译原理课程设计c-语言编译器

编译原理课程设计c-语言编译器

ID:8957166

大小:176.00 KB

页数:49页

时间:2018-04-13

编译原理课程设计c-语言编译器_第1页
编译原理课程设计c-语言编译器_第2页
编译原理课程设计c-语言编译器_第3页
编译原理课程设计c-语言编译器_第4页
编译原理课程设计c-语言编译器_第5页
资源描述:

《编译原理课程设计c-语言编译器》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、编译原理课程设计报告课题名称:C-语言编译器设计提交文档学生姓名:李杰提交文档学生学号:0743041240同组成员名单:无指导教师姓名:金军指导教师评阅成绩:指导教师评阅意见:..提交报告时间:2010年6月10日1.课程设计目标实验建立C-编译器。只含有scanner和parser部分。2.分析与设计(1)实现方法:编程语言为C语言。编程方法:scanner部分根据DFA图用switch-case结构实现状态转换;parser部分用递归下降分析方法实现。(2)扫描器:C-惯用的词法1、语言的关键字:e

2、lseifintreturnvoidwhile2、专用符号:+-*/<<=>>===!==;,()[]{}/**/3、其他标记是ID和NUM,通过下列正则表达式定义:ID=letterletter*NUM=digitdigit*letter=a

3、..

4、z

5、A

6、..

7、Zdigit=0

8、..

9、94、空格由空白、换行符和制表符组成。空格通常被忽略,除了它必须分开ID、NUM关键字。5.注释用通常的C语言符号/*...*/围起来。注释可以放在任何空白出现的位置(即注释不能放在标记内)上,且可以超过一行。注释不能嵌

10、套各单词的状态转换图(DFA图如下)词法结构见文件"globals.h"中。(3)分析器:分析树结构见文件"globals.h"中。C-的BNF语法如下:(4)代码设计说明:程序结构:语法分析函数parse通过调用词法分析函数getToken实现语法分析。文件和函数的设计说明:文件main.c包含相应头文件,及main函数的实现;文件golbals.h包含符号表和分析数的数据结构及在其它文件中使用的变量;文件util.h和util.c实现与词法分析和语法分析输出相关的函数printToken和printT

11、ree,以及分析树节点初始化相关的函数newStmtNode,newExpNode(Expkind)和copyString;文件scan.h和scan.c实现词法分析,主要函数为getToken;文件parse.h和parse.c实现语法分析,函数为与文法规则对应的函数。关键数据结构1.程序代码实现文件main.c代码如下://实验建立C-编译器。只含有scanner和parser部分。#include"globals.h"#include"util.h"#include"scan.h"#include"

12、parse.h"//全局变量和标志intlineno=0;FILE*source;FILE*listing;FILE*code;intEchoSource=TRUE;intTraceScan=TRUE;intTraceParse=TRUE;intError=FALSE;intmain(intargc,char*argv[]){TreeNode*syntaxTree;charpgm[120];//代码文件名if(argc!=2){fprintf(stderr,"usage:%sC:source.c",

13、argv[0]);return-1;}strcpy(pgm,argv[1]);if(strchr(pgm,'.')==NULL){strcat(pgm,".tny");}source=fopen(pgm,"r");if(source==NULL){fprintf(stderr,"file%snotfound",pgm);return-1;}listing=stdout;fprintf(listing,"C-COMPILATION:%s",pgm);//while(getToken()!=END

14、FILE);EchoSource=FALSE;TraceScan=FALSE;syntaxTree=parse();if(TraceParse){fprintf(listing,"Syntaxtree:");printTree(syntaxTree);}fclose(source);return0;}文件globals.h代码如下:#ifndef_GLOBALS_H_#define_GLOBALS_H_#include#include#include

15、e.h>#include#ifndefFALSE#defineFALSE0#endif#ifndefTRUE#defineTRUE1#endif#defineMAXRESERVED6typedefenum{ENDFILE,ERROR,IF,ELSE,INT,RETURN,VOID,WHILE,//关键字ID,NUM,ASSIGN,EQ,LT,PLUS,MINUS,TIMES,OVER,LPAREN,RPAR

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。