欢迎来到天天文库
浏览记录
ID:8957238
大小:119.50 KB
页数:4页
时间:2018-04-13
《编译原理——表达式分析》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
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)运行结果
此文档下载收益归作者所有