欢迎来到天天文库
浏览记录
ID:52139997
大小:531.00 KB
页数:31页
时间:2020-03-23
《词法、语法分析器.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、词法、语法分析器*文件名:FenXi.h*文件描述:词法语法分析的头文件*创建人:程红秀,2005年06月15*版木号:1.0*1*•Af<£>Q>^£>^£>%£^/J"T^JJg#if!defined_FENXI_H#defineFENXIHimnType;符intnValue;charszText[20];〃0:错误,1:标志符,2:数字,3■:关键字和操作符,结束//二元式屮的值〃单词intnAddr;〃源文件缓冲区屮地址);classCFenXipublic:voidYuFaFenXi();〃语法分析voidCiFaFenXi();〃词法分析intm_nE
2、rrAddr;〃语法错误对应单词的地址intm_nErrNo;〃语法错误代码charm_str[20000];〃源程序缓冲区charm_szErrMsg[100][100];//错误信息表CIFA*m_cifa[10000];〃词法分析结果protected:voidinit();intm_nCur;〃用于语法分析屮,指示词法分析结果表屮当前的位置intm_n;〃用于词法分析屮,用于指示词法分析结果的个数charm_szKW[50][20];〃关键词表intFindInKWTab(char*);/*语法分析函数*/booly_GuanXi();〃关系booly_Gu
3、anXiBiaoDaShi();〃关系表达式booly_BuErBiaoDaShi();〃布尔表达式booly_YinZi();〃因了booly_Xiang();〃项booly_BiaoDaShi();〃表达式booly_ShiCanBiao();〃实参表booly_GuoChengYuJu();〃过程语旬booly_XunHuanYuJu();〃循环语句booly_TiaoJianYuJu();〃条件语句booly_FuZhiYuJu();〃赋值语句booly_FuHeYuJu();〃复合语句booly_YuJu();〃语句booly_YuJuChuan();〃语
4、句串booly_XingCan();〃形参booly_XingCanBuFeng();〃形参部分booly_GuoChengShengMing();〃过程说明booly_BianliangShengMingO;〃简便说明booly_ShengMing();〃说明booly_ShengMingChuan();//说明串booly_ChengXuTi();〃程序体booly_ChengXu();〃稈序/**/};#endif/■士•士<1^■If■匕■匕•士•匕■士■If•匕•士*£x・士•匕■士•匕•士<1^^£x^£z•匕■士•匕•士K♦卜叫J♦卜♦卜叫・♦卜•卜<
5、X*♦卜叫、"卜叫J♦卜*1*•卜*¥*•卜叫、•卜^7*♦卜叫・J"卜―卜*k*•卜叫・"卜♦卜叫J*1*♦卜*1*♦卜*1*"卜6、返冋值:void:*/voidCFenXi::CiFaFenXi(){BOOLflag=false;chartoken[20];intk,v;init();for(inti=0;i7、n])n++;n++;fl8、ag=false;while(1){while((m_str[n]==32)II(m_str[n]==9))n++;if(!((m_str[n]==13)&&(m_str[n+1]==10)))break;n++;n++;讦(isalpha(m_str[n]))〃字母{k=0;while(1){if(kv⑼〃标志符的长度为20token[k++]=m_str[n++];elsen++;if(!isalnum(m_str[n]))//如果不是数字或字母就退出break;}token[k]=0;v=FindInKWTab(token);//查找关键词表if(v)〃如
6、返冋值:void:*/voidCFenXi::CiFaFenXi(){BOOLflag=false;chartoken[20];intk,v;init();for(inti=0;i7、n])n++;n++;fl8、ag=false;while(1){while((m_str[n]==32)II(m_str[n]==9))n++;if(!((m_str[n]==13)&&(m_str[n+1]==10)))break;n++;n++;讦(isalpha(m_str[n]))〃字母{k=0;while(1){if(kv⑼〃标志符的长度为20token[k++]=m_str[n++];elsen++;if(!isalnum(m_str[n]))//如果不是数字或字母就退出break;}token[k]=0;v=FindInKWTab(token);//查找关键词表if(v)〃如
7、n])n++;n++;fl
8、ag=false;while(1){while((m_str[n]==32)II(m_str[n]==9))n++;if(!((m_str[n]==13)&&(m_str[n+1]==10)))break;n++;n++;讦(isalpha(m_str[n]))〃字母{k=0;while(1){if(kv⑼〃标志符的长度为20token[k++]=m_str[n++];elsen++;if(!isalnum(m_str[n]))//如果不是数字或字母就退出break;}token[k]=0;v=FindInKWTab(token);//查找关键词表if(v)〃如
此文档下载收益归作者所有