自下而上分析

自下而上分析

ID:44670551

大小:69.00 KB

页数:12页

时间:2019-10-24

自下而上分析_第1页
自下而上分析_第2页
自下而上分析_第3页
自下而上分析_第4页
自下而上分析_第5页
资源描述:

《自下而上分析》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、自下而上分析实验二语法分析(自下而上分析)一、实验目的通过自C动手编写语法分析器,掌握上下文无关文法、推导的基木概念、口下而上分析方法,理解如何理论联系实际以及明白理论与实际的差别。二、实验任务1.使作C/C++程序设计语言和递归下降子程序的方法编写该函数的词法分析器。要求设计一个语法分析器的测试小程序來调用R己编写的语法分析器测试各种不同的输入。2.语法分析的任务是在词法分析基础上,根据语言的语法规则,把语法符号分解成各类语法单位。语法分析所依据的是语言的语法规则,语法规则通常用上下文无关文法描

2、述。三、实验环境VC++6.0四、运行结果五、程序实现#include#inelude#ineludestructstack{stack*top;charvalue;};charpop(stack*pst){chare;if(pst->top~pst){printf(/zThestackisnull.,z);return0;else!e=pst->top->valuo;pst->top--;returne;}}voidpush(stack*ps

3、t,chare){pst->top++;pst-〉top->vedue二e;}voidprintstack(stack*pst){stack*printtemp=pst;while(printtcmp<=(pst->top)){printf(〃%c",printtemp->value);printtemp++;}}voidprintstring(stack*pst)!stack*prinltemp=(psl->t()p);while(printtemp>=pst)!printfprinttemp-

4、>value);printtemp-一;voidprintSLR(int&numbelstack*status,stack*grammar,stack*string)!printf(z/%d“,number);printstack(status);printf(““);printstack(grammar);printfC'“);printstring(strin£);printfC“);number++;intmain()Istack*string二(stack*)malloc(40);stri

5、ng->top二string;string-〉top->value=‘;stack*status二(stack*)malloc(40);status-〉top二status;status->top->value=,0,;stack*grammar^(stack*)malloc(40);grammar->top=grammar;grammar-〉top-〉value二';FILE*fp;fp二fopen("C:\fj.txt","a+");charfilestring[10][20]={,,}

6、;charstr[10]={,J};intstringnumbor=0;intnumber二0;while(!feof(fp))fgets(filestring[stringnumber],23,fp);if(filestring[stringnumber][0]!二')stringnumber++;}for(inti二0;i<=(stringnumber-1);i++){for(intj=strlen(filestring[i])-3;j>=0;j--)if(filestring[i][

7、j]!=')push(string,filestring[i][j]);printf(,z此次分析的字符串为:%sz,,filestring[i]);printfC步骤状态栈符号栈输入串ACTION〃);printSLR(numbor,status,grammar,string);printfr移进〃);while(string->top->value!=,){charch=pop(string);if(ch='i'){push(grammar,ch);if(status->top

8、->value==,0,)printSLR(number,status,grammar,string);printff归约〃);pop(status);pop(grammar);push(status,'3,);push(grammar,'F');printSLR(number,status,grammar,string);printf(z,!/」约〃);pop(status);pop(grammar);push(status,'2,);push(grammar,'T‘);

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

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

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