词法分析器(c语言版)

词法分析器(c语言版)

ID:35428295

大小:70.36 KB

页数:13页

时间:2019-03-24

词法分析器(c语言版)_第1页
词法分析器(c语言版)_第2页
词法分析器(c语言版)_第3页
词法分析器(c语言版)_第4页
词法分析器(c语言版)_第5页
资源描述:

《词法分析器(c语言版)》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、***********************************************名称:词法分析器*版本:1.0*作者:*♦*2015/4/2************************************************#include#inelude#include#include#include#defineLENGTH110//typereservedwordsizeFILE*fp=NULL;//outstr

2、eamPointerFILE*fw=NULL;//instreampointercharcharacter;chartoken[32];//Thecharacterarraytostorethesequeneeofcharacters,hasbeenread.//Codetablechar*CODE[]={,,identifier',/,,constant'7,keyword,,;,+u;,-,,;,*,77,7,>,7,<,7,>=,V,<=,7'!=,7,=,7,==,//keywordtablechar*k[]M,,for,7,w

3、hile',z,,do,,;,go'7,to'7,switch,7,if,7,else,,/,,int,7,float'7'char,7,static,7,break,,/”exitTcontinu”,”error”};〃标识符结构体typedefstruct{char*l[256];//标识符数组intlen;〃标识符数量}identifier;〃常量结构体typedefstruct{intcont[300];//存放常量的数组intlen;〃常量的数目}constnumber;〃读入一个字符,从输入流中读入一个字符到变量charact

4、er中。voidgetNextChar(FILE*ifp)if((character=getc(ifp))==EOF)exit(l);}〃读入非空白字符,检查变量character中的字符是否为空白字符或回车或换行符。若是,〃则调用getNextChar()读入下一个字符,直到character中的字符满足条件.voidgetnbc(FILE*ifp){while(character==''11character==''

5、

6、character==9){getNextChar(ifp);}}〃连接字符串,把character屮的字符连接

7、到token数组的结尾。voidconcat(){char*ct=&character;strcatftoken,ct);}〃判断是否为字母。intletter(){returnisalpha(character);}〃判断是否为数字intdigit(){returnisdigit(character);}〃回退字符,将刚读入的character中的字符回退到输入流中。并把character中的值置为空。voidretract(FILE*ifp){(讦p->_cnt)++;(ifp->_ptr)-;character='}〃处理保留字,对

8、存放在token中的字符串查保留字,若查到,则返回该保留字的类别编码,否则返回0.intreserve(char**k){inti;tor(i=0;ilen;i++)if(strcmp(tokenjd->l[i

9、])==0)returni+1;if(id->len>256)assert(O);id->l[id->len]二token;id->len++;returnid->len;}//将数字字符串转化为整数。intstrtonumber(){inti;intsum=0;for(i=0;j

10、constantfconstnumber*con)con->cont[con->len]=strtonumber();con・>len++;returncon->len;〃将整数值转化为字符串

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

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

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