欢迎来到天天文库
浏览记录
ID:61826204
大小:22.06 KB
页数:21页
时间:2020-02-06
《LR语法分析器北邮编译原理实验.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、....../*******************************************************************************Title(c++):LR语法分析器.cppAuthor:volantfishnum:10211xxxClass:2010211309Date:2012.11(volantfish)Introduction:Version:*****************************************************************
2、**************/#include#include#include#include#include#include#include#includeusingnamespacestd;.专业专注.......//#defineDEBUG_//枚举常量:用来表示LR分析表中表项的状态enumformStyle{SHIFT,REDUCE,ACCEPT,GOTO,ERROR};//theel
3、ementofresultoflexicalanalysisclassWordEle{public:WordEle():style(-1),real("init"){}WordEle(intst,stringre):style(st),real(re){}intstyle;//thestringreal;//};//theelementoftheformclassformEle{public:formStylestyle;//enum.专业专注.......intnum;//thenumberofproduction.}
4、;//theelementofstackclassstackEle{public:stackEle():state(-1),ch(-1){}stackEle(intst,intc):state(st),ch(c){}intstate;//thenumberofstate.intch;//thenumberofcharacter.};/*Globalvariable*/mapcharNum;//char->numbervectornumChar;//number->charvecto
5、rproListL;//theleftsideofproductionsvector>proListR;//therightsideofproductionsvectorwordList;//thelistofresultoflexicalanalysismap,formEle>form;//theactionandgotoform.专业专注......./***Description:打印此刻的分析动作*Arguments:输入此刻分析表的
6、一个元素*Returns:用string表示的分析动作*/stringPrintOption(constformEle&formTemp){stringoutput;charcharTemp[100];//装门用于atoi()函数的参数,没有其他作用if(formTemp.style==SHIFT){output+="Shift";output+=itoa(formTemp.num,charTemp,10);}else{if(formTemp.style==REDUCE){output+="Reducedby";outp
7、ut+=numChar.at(proListL.at(formTemp.num));output+="->";.专业专注.......vectorvecTemp=proListR.at(formTemp.num);for(vector::iteratori=vecTemp.begin();i!=vecTemp.end();++i){output+=numChar.at(*i);}}else{if(formTemp.style==ACCEPT){output="acc";}}}returnoutput;
8、}/***Description:打印未处理的输入串.专业专注.......*Arguments:输入字符串的迭代器,指向正在处理的字符*Returns:未处理的输入串*/stringPrintInput(vector::const_iteratoriterWord){stringoutput;fo
此文档下载收益归作者所有