下载此文档

编译原理课程设计C-语言编译器.doc


文档分类:IT计算机 | 页数:约49页 举报非法文档有奖
1/49
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/49 下载此文档
文档列表 文档介绍
编译原理课程设计报告
课题名称: C-语言编译器设计

提交文档学生姓名: 李杰
提交文档学生学号: 0743041240
同组 成 员 名 单: 无
指导 教 师 姓 名: 金军
指导教师评阅成绩:
指导教师评阅意见:


提交报告时间: 2010年 6 月 10日
课程设计目标
实验建立C-编译器。只含有scanner和parser部分。
分析与设计
(1)实现方法:
编程语言为C语言。
编程方法:scanner部分根据DFA图用switch-case结构实现状态转换;parser部分用递归下降分析方法实现。
(2)扫描器:
C-惯用的词法
1、语言的关键字:else if int return void while
2、专用符号:+ - * / < <= > >= == != = ; , ( ) [ ] { } /* */
3、其他标记是ID和NUM,通过下列正则表达式定义:
ID = letter letter* NUM = digit digit* letter = a||z|A||Z digit = 0||9
4、空格由空白、换行符和制表符组成。空格通常被忽略,除了它必须分开ID、NUM关键字。
5 注释用通常的C语言符号/ * * /围起来。注释可以放在任何空白出现的位置(即注释不能放在标记内)上,且可以超过一行。注释不能嵌套
各单词的状态转换图(DFA图如下)词法结构见文件"globalsh"中。
(3)分析器:分析树结构见文件"globalsh"中。
C-的BNF语法如下:
(4)代码设计说明:
程序结构:语法分析函数parse通过调用词法分析函数getToken实现语法分析。
文件和函数的设计说明:文件mainc包含相应头文件,及main函数的实现;文件golbalsh包含符号表和分析数的数据结构及在其它文件中使用的变量;文件utilh 和utilc实现与词法分析和语法分析输出相关的函数printToken和printTree,以及分析树节点初始化相关的函数newStmtNode,newExpNode(Expkind)和copyString;文件scanh 和scanc实现词法分析,主要函数为getToken;文件parseh 和parsec实现语法分析,函数为与文法规则对应的函数。
关键数据结构
程序代码实现
文件mainc代码如下:
//实验建立C-编译器。只含有scanner和parser部分。
#include"globalsh"
#include "utilh"
#include "scanh"
#include "parseh"
//全局变量和标志
int lineno=0;
FILE*source;
FILE*listing;
FILE*code;
int EchoSource=TRUE;
int TraceScan=TRUE;
int TraceParse=TRUE;
int Error=FALSE;
int main(int argc,char*argv[])
{
TreeNode*syntaxTree;
char pgm[120]; //代码文件名
if(argc!=2)
{
fprintf(stderr,"usage:%s C:\sourcec \n",argv[0]);
return -1;
}
strcpy(pgm,argv[1]);
if (strchr(pgm,'')==NULL)
{ strcat(pgm,"tny"); }
source=fopen(pgm,"r");
if(source==NULL)

编译原理课程设计C-语言编译器 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数49
  • 收藏数0 收藏
  • 顶次数0
  • 上传人1314042****
  • 文件大小181 KB
  • 时间2021-03-02