编译原理——表达式分析

编译原理——表达式分析

ID:8957238

大小:119.50 KB

页数:4页

时间:2018-04-13

编译原理——表达式分析_第1页
编译原理——表达式分析_第2页
编译原理——表达式分析_第3页
编译原理——表达式分析_第4页
资源描述:

《编译原理——表达式分析》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、一、实验目的:熟悉并设计一个表达式的语法分析器二、相关知识:1、形式语言基础及其文法运算2、语法分析原理及4种常用的语法分析方法其中:四种算法为(1)设计算术表达式的递归下降子程序分析算法三、实验内容:1.设计表达式的语法语法分析器算法2.编写代码并上机调试运行通过要求:输入------------表达式输出------------表达式语法是否正确四、概要设计1.算术表达式的递归下降子程序分析算法(1)算术表达式文法G(E):EàEω0T

2、TTàTω1F

3、FFài

4、(E)(2)文法变换:G’(E)EàT{ω0T}TàF{ω1F}Fài

5、(E)(3)递归下降子程序框图:E:入口T:入口TF

6、nω0?nω1?yy出口出口read(w)read(w)TF开始F:入口主程序:ZàE(?ni?nerrread(w)read(w)EEerrn#?errn)?yyread(w)结束出口(4)数据结构charexp[50];//算术表达式区inti=0;interr=0;//err输出指示charw;//当前单词(5)源程序清单:#include#includevoidE();voidT();voidF();intPrint();charexp[50];//算术表达式区inti=0;interr=0;charw;//当前单词intPrint(){pri

7、ntf("err");err=1;returnerr;}voidF(){if((w>='a'&&w<='z')

8、

9、(w>='0'&&w<='9')){w=exp[i++];//read(w)}elseif(w=='('){w=exp[i++];E();if(w!=')'){if(!err)Print();}elsew=exp[i++];//read(w)}else{if(!err)Print();}}voidT(){F();while(w=='*'

10、

11、w=='/'){w=exp[i++];//read(w)F();}}voidE(){T();while(w=='+'

12、

13、w=='-'){w=

14、exp[i++];//read(w)T();}}intmain(){printf("pleaseinputyourexpression:");//输入表达式scanf("%s",exp);w=exp[i++];//read(w)E();if(!err){if(w=='#')printf("OK!");elseprintf("err");}return0;}(6)运行结果

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

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

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