TEST语言-语法分析,词法分析实验报告

TEST语言-语法分析,词法分析实验报告

ID:37148623

大小:253.00 KB

页数:30页

时间:2019-05-19

TEST语言-语法分析,词法分析实验报告_第1页
TEST语言-语法分析,词法分析实验报告_第2页
TEST语言-语法分析,词法分析实验报告_第3页
TEST语言-语法分析,词法分析实验报告_第4页
TEST语言-语法分析,词法分析实验报告_第5页
资源描述:

《TEST语言-语法分析,词法分析实验报告》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、.编译原理实验报告实验名称:分析调试语义分析程序TEST抽象机模拟器完整程序保证能用!!!!!一、实验目的通过分析调试TEST语言的语义分析和中间代码生成程序,加深对语法制导翻译思想的理解,掌握将语法分析所识别的语法范畴变换为中间代码的语义翻译方法。二、实验设计程序流程图..语法分析..程序代码:Main.cpp#include#includeexternboolTESTparse(char*pFileName);..externintTESTScan(FILE*fin,FILE*fout);FILE*fin,*fou

2、t;//用于指定输入输出文件的指针intmain(){charszFinName[300];charszFoutName[300];printf("请输入源程序文件名(包括路径):");scanf("%s",szFinName);printf("请输入词法分析输出文件名(包括路径):");scanf("%s",szFoutName);if((fin=fopen(szFinName,"r"))==NULL){printf("打开词法分析输入文件出错!");return0;}if((fout=fopen(szFoutName,"w"))==NULL)

3、{printf("创建词法分析输出文件出错!");return0;}intes=TESTScan(fin,fout);fclose(fin);fclose(fout);if(es>0)printf("词法分析有错,编译停止!共有%d个错误!",es);elseif(es==0){printf("词法分析成功!");intes=0;..es=TESTparse(szFoutName);//调语法分析if(es==true)printf("语法分析成功!");elseprintf("语法分析错误!");}elseprintf("词法分

4、析出现未知错误!");}Parse.cpp#include#include#include#include#include//functionboolTESTparse();boolcompound_Stat();boolprogram();boolstatement();boolexpression_stat();boolexpression();boolbool_expr();booladditive_expr();boolterm();boolfactor

5、();..boolif_stat();boolwhile_stat();boolfor_stat();boolwrite_stat();boolread_stat();booldeclaration_stat();booldeclaration_list();boolstatement_list();boolcompound_stat();chartoken[20],token1[40];//token保存单词符号,token1保存单词值FILE*fp;//用于指向输入文件的指针intEsLine=0;typedefstruct{intes;intlin

6、e;}EsInf;std::vectorStackEs;//语法分析程序voidProcessError(intes){EsInftemp;temp.es=es;temp.line=EsLine;StackEs.push_back(temp);}boolReadFile(char*tok,char*tok1){if(feof(fp))returnfalse;fscanf(fp,"%st%s",tok,tok1);..printf("%st%s",tok,tok1);EsLine++;returntrue;}boolTESTpar

7、se(char*pFileName){booles=true;if((fp=fopen(pFileName,"r"))==NULL){printf("打开%s错误!",pFileName);returnfalse;}elseprogram();if(!feof(fp))ProcessError(9);fclose(fp);printf("=====语法分析结果!=====");if(StackEs.size()==0){printf("语法分析成功!");returntrue;}else{inti;for(i=0;i

8、ze();i++){printf("在第%d行",StackEs[i].line

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

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

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