编译原理课设计.doc

编译原理课设计.doc

ID:56344994

大小:143.50 KB

页数:29页

时间:2020-06-12

编译原理课设计.doc_第1页
编译原理课设计.doc_第2页
编译原理课设计.doc_第3页
编译原理课设计.doc_第4页
编译原理课设计.doc_第5页
资源描述:

《编译原理课设计.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、编译原理课程设计(C-词法分析器、语法分析器)平台:VC++姓名:闫洪波学号:20040810426班级:计科四班实验报告一.程序思路1.词法分析器对输入的程序进行分析,将关键字,保留字与系统标识符分开,并对其属性进行说明。建立数组,将单词读入,对单词的ASCII码进行判断,将在ASCII码值在一定区间进行区分(使用if语句来判断),分开来后,对其所在ASCII值区间的不同,给予以不同的属性(比如:系统保留字…),词法分析器完成后要能识别+,-,=等字符。2.语法分析器对输入的程序语句进行分析。对每个非终结点定义单个函数

2、,定义了它的后继节点。然后用一个构造来的函数,使定义的后继节点符合语法,否则报错。下面是C-语言的EBNF文法:1declaration-list->declaration{declaration}2declaration->(int

3、void)ID(;

4、[NUM];

5、(params)compound-stmt)3var-declaration->(int

6、void)ID(;

7、[NUM];)4params->intID(e

8、[]){,param}

9、void(e

10、ID(e

11、[]){,param})5param->(int

12、

13、void)ID(e

14、[])6compound-stmt->{local-declarationsstatement-list}7local-declarations->{var-declaration}8statement-list->{statement}9statement->assign-stmt

15、compound-stmt

16、selection-stmt

17、iteration-stmt

18、return-stmt10selection-stmt->if(expression)statement(e

19、elsestateme

20、nt)11iteration-stmt->while(expression)statement12return-stmt->return(;

21、expression;)13assign-stmt->ID(e

22、[expression])=expression;14expression->additive-expression{relopadditive-expression}15relop-><(e

23、=)

24、>(e

25、=)

26、(=

27、!)=16additive-expression->term{addopterm}17addop->

28、+

29、-18term->factor{mulfactor}19mulop->*

30、/20factor->(expression)

31、ID(e

32、[expression]

33、(args))

34、NUM21args->expression{,expression}

35、e二、源代码1、词法分析:#include#include#include#include#include#defineMAXTOKENLEN40//#defineMAXLINE1000#

36、defineMAXRESERVED6#defineFALSE0#defineTRUE1#defineBUFLEN256//usingnamespacestd;intlineno=0;//FILE*source;//FILE*listing;//intlinepos=0;//staticintbufsize=0;//charfile_in[100];charfile_out[100];charlineBuf[MAXLINE];//chartokenString[MAXTOKENLEN+1];typedefenum{ENDF

37、ILE,ERROR,ELSE,IF,INT,RETURN,VOID,WHILE,//keywordID,NUM,ADD,SUB,MUL,DIV,LT,LE,GT,GE,EQ,NEQ,ASSIGN,SEMICOLON,COMMA,LSP,RSP,LMP,RMP,LLP,RLP}TokenType;typedefenum{START,INASSIGN,SINCOMMENT,FINCOMMENT,INCOMMENT,INNUM,INID,INL,ING,INNE,DONE,}StateType;staticstruct{cha

38、r*str;TokenTypetok;}reservedWords[MAXRESERVED]={{"else",ELSE},{"if",IF},{"int",INT},{"return",RETURN},{"void",VOID},{"while",WHILE}};TokenTypereservedLookup(ch

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

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

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