编译原理实验2__代码参考.doc





《编译原理实验2__代码参考.doc》由会员分享,可在线阅读,更多相关《编译原理实验2__代码参考.doc(10页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、实验五、六 语法分析程序设计实验目的:1 了解语法分析的主要任务。2 熟悉编译程序的编制。实验内容:根据某文法,构造一基本递归下降语法分析程序。给出分析过程中所用的产生式序列。实验要求:1. 构造一个小语言的文法,例如,Pascal语言子集的文法,考虑其中的算术表达式文法:G: GE:+|-| EE+T|T*|/| TT*F|F|() Fi|(E)2. 设计语法树的输出形式,例如:产生式3. 编写递归下降语法分析程序实现基本的递归下降分析器,能够分析任给的符号串是否为该文法所定义的合法算术表达式。实验报告中要说明分析使用的方法。4. 生成并输出分析过程中所用的产生式序列:1 产生式12 产生式
2、2实验步骤:1. 写出一个小语言的算术表达式文法。2. 写出该小语言的算术表达式等价的LL(1)文法。例如: GE: 其中ETG G为EE+TG| 为TFS S为TT*FS| Fi|(E)3. 编写递归下降语法分析程序。4. 调试运行程序。5. 结果分析。6. 撰写实验报告。实验报告:注意:由于此实验有一定的难度,自由组织3位同学一组,一组同学仅需上交一份报告。报告上需要写明3位同学的学号和姓名。1. 写出实现的算法。#include #include#include#includechar a50 ,b50,d200,e10;char ch;int n1,i1=0,flag=1,n=5;in
3、t total=0; int E();int E1();int T();int G();int S();int F();void input();void input1();void output();void main() /*递归分析*/ int f,p,j=0; char x; d0=E; d1=; d2=; d3=T; d4=G; d5=#;printf(Please input character string(lengthTGt,total);total+; flag=1; input(); input1(); f=T(); if (f=0) return(0); t=G(); i
4、f (t=0) return(0); else return(1);int E() int f,t;printf(%dtE-TGt,total);total+;e0=E;e1=;e2=;e3=T;e4=G;e5=#;output(); flag=1; input(); input1(); f=T(); if (f=0) return(0); t=G();if (t=0) return(0); else return(1); int T() int f,t; printf(%dtT-FSt,total);total+; e0=T;e1=;e2=;e3=F;e4=S;e5=#; output();
5、 flag=1; input(); input1(); f=F(); if (f=0) return(0); t=S(); if (t=0) return(0); else return(1);int G() int f; if(ch=+) bi1=ch; printf(%dtG-+TGt,total);total+; e0=G;e1=;e2=;e3=+;e4=T;e5=G;e6=#;output(); flag=0; input();input1(); ch=a+i1; f=T(); if (f=0) return(0); G(); return(1); printf(%dtG-t,tota
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译 原理 实验 _ 代码 参考

限制150内