欢迎来到天天文库
浏览记录
ID:44668500
大小:51.50 KB
页数:4页
时间:2019-10-24
《语法分析程序(c)》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、跟大家分享一下:这个必须从文件读入语法#include<cstdio>#include<iostream>#include<cstdlib>#include<fstream>#include<string>#include<cmath>usingnamespacestd;structtoken//token结构体{intcode;intnum;token*next;};token*token_head5*token_tail;
2、//token队歹Ustructnumbei7/number结构体{intnum;intvalue;number*next;};number*number_head,*number_tail;//number队列structstr//string结构体{intnum;stringword;str*next;};str*string_head,*string_tail;//string队歹!Jstructivan//表达式结构体{charleft;stringright;intlen;};ivanc
3、ss[20];//20个表达式structpank//action表结构体{charsr;intstate;};pankaction[46][181;//action表intgo_to[46][11];//go_to表structike//分析栈结构体,双链ike*pre;intnum;intword;ike*next;};ike*stack_head,*stack_tail;//分析栈首尾指针voidscan();//按字符读取源文件intjudge(charch);〃判断输入字符的类型void
4、out1(charch);//,hjAtoken.txtvoidout2(charch,stringword);//^Anumber,txtvoidout3(charch,stringword);//写入string.txtvoidinput1(token气emp);〃插入结点到队列tokenvoidinput2(number*temp);//插入结点到队列numbervoidinput3(str*temp);〃插入结点到队列stringvoidoutput();//输出三个队列的内容voidou
5、tfileO;〃输出三个队列的内容到相应文件屮voidyufa_initialize();//初始化语法分析数据结构intyufa_main(inta);〃语法分析主体部分intIDl(inta);〃给输入字符编号,转化成action表列编号stringID10(inti);〃给输入字符反编号intID2(charch);〃给菲终结状态编号,转化成go_to表列编号intID20(charch);〃给非终结状态编号charID21(intj);//给非终结状态反编号voidadd(ike*temp
6、);〃给ike分析栈链表增加一个结点voiddel();〃给ike分析栈链表删除一个结点FILE*fp;〃文件intwordcount;//标志符计数intnumcount;//整型常数计数interr;//标止词法分析结果止确或错误intnl;//读取行数voidmain(){token_head=newtoken;token_head->next=NULL;token_tail=newtoken;token_tail->next=NULL;number_head=newnumber
7、;number_head->next二NULL;number_tail=newnumber;number_tail->next=NULL;string_head=newstr;string_head->next=NULL;string_tail=newstr;string_tail->next=NULL;//初始化三个队列的首尾指针wordcount=0;〃初始化字符计数器numcount=0;//初始化常数计数器err=O;〃初始化词法分析错误标志nl=l;//初始化读取
8、行数scan();if(err==O){charm;cout<<"词法分析正确完成!"<<endl<<endl<<"下边将输出结果,如果将结果保存到文件中请输入y,否则请输入其它键:";cin>>m;output();if(m=='y'){cout<<"结果同时保存在token.txtxnumber.txt和sting.txt三个文件屮,请打开查
此文档下载收益归作者所有