好文档 - 专业文书写作范文服务资料分享网站

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

天下 分享 时间: 加入收藏 我要投稿 点赞

..

编译原理实验报告

实验名称: 分析调试语义分析程序

TEST抽象机模拟器完整程序

保证能用!!!!!

一、实验目的

通过分析调试TEST语言的语义分析和中间代码生成程序,加深对语法制导翻译思想的理解,掌握将语法分析所识别的语法畴变换为中间代码的语义翻译方法。

二、实验设计

程序流程图

w

..

Statement_list()开始es=0读入一个符号es=0token=}Y{YNes=1Tooken=ifToken=ifNYIf_stat()Token=whileYwhile_stat()es=0NNToken=forNYfor_stat()declaration_list()Yes=0NNToken=readNYread_stat()NStatement_list()Token=writeNYwrite_stat()YYes=0NToken={NYCompound_state()}YNes=2Token=ID|NUM|(Yexpression_stat()N返回token=}YReturn(es) 语法分析 w

..

开始Es=0词法分析Es>0NY输出词法分析失败输出词法分析成功语法分析Es=0N输出语法分析错误Y输出语法分析成功结束 程序代码: Main.cpp #include #include extern bool TESTparse(char *pFileName); w

..

extern int TESTScan(FILE *fin,FILE *fout);

FILE *fin,*fout; //用于指定输入输出文件的指针

int main() {

if(es > 0)

printf(\词法分析有错,编译停止!共有%d个错误!\\n\if( (fin = fopen(szFinName,\{ }

if( (fout = fopen(szFoutName,\{ }

int es = TESTScan(fin,fout); fclose(fin); fclose(fout);

printf(\创建词法分析输出文件出错!\\n\return 0;

printf(\打开词法分析输入文件出错!\\n\return 0;

printf(\请输入词法分析输出文件名(包括路径):\scanf(\

printf(\请输入源程序文件名(包括路径):\scanf(\char szFinName[300]; char szFoutName[300];

else if(es == 0) {

printf(\词法分析成功!\\n\int es

=

0;

w

..

}

es = TESTparse(szFoutName); //调语法分析

if(es== true) printf(\语法分析成功!\\n\else printf(\语法分析错误!\\n\

} else

printf(\词法分析出现未知错误!\\n\

Parse.cpp

#include #include #include #include #include

// function bool TESTparse(); bool compound_Stat(); bool program(); bool statement(); bool expression_stat(); bool expression(); bool bool_expr(); bool additive_expr(); bool term(); bool factor();

w

9myel0qsug565jb3urou8mpoj7ocb000zpx
领取福利

微信扫码领取福利

微信扫码分享