好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

编译原理实验报告LL(1)分析法.doc

13页
  • 卖家[上传人]:大米
  • 文档编号:414216461
  • 上传时间:2023-12-27
  • 文档格式:DOC
  • 文档大小:55KB
  • / 13 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 河南工业大学实验报告课 程 编译原理 实验名称 实验二 LL(1)分析法 实验目的 1.掌握LL(1)分析法的基本原理; 2.掌握LL(1)分析表的构造方法; 3.掌握LL(1)驱动程序的构造方法一. 实验内容及要求根据某一文法编制调试LL(1)分析程序,以便对任意输入的符号串进行分析本次实验的目的主要是加深对预测分析LL(1)分析法的理解 对下列文法,用LL(1)分析法对任意输入的符号串进行分析:(1)E->TG(2)G->+TG(3)G->ε(4)T->FS(5)S->*FS(6)S->ε(7)F->(E)(8)F->i 程序输入一以#结束的符号串(包括+*()i#),如:i+i*i#输出过程如下:步骤分析栈剩余输入串所用产生式1Ei+i*i#E->TG............二. 实验过程及结果代码如下:#include#include "edge.h"using namespace std;edge::edge(){ cin>>left>>right; rlen=right.length(); if(NODE.find(left)>NODE.length()) NODE+=left;}string edge::getlf(){ return left;}string edge::getrg(){ return right;}string edge::getfirst(){ return first;}string edge::getfollow(){ return follow;}string edge::getselect(){ return select;}string edge::getro(){ string str; str+=right[0]; return str;}int edge::getrlen(){ return right.length();}void edge::newfirst(string w){ int i; for(i=0;ifirst.length()) first+=w[i];}void edge::newfollow(string w){ int i; for(i=0;ifollow.length()&&w[i]!='@') follow+=w[i];}void edge::newselect(string w){ int i; for(i=0;iselect.length()&&w[i]!='@') select+=w[i];}void edge::delfirst(){ int i=first.find('@'); first.erase(i,1);}int SUM;string NODE,ENODE;//计算firstvoid first(edge ni,edge *n,int x){ int i,j; for(j=0;j-1) //是非终结符 if(in[j].getfirst().length()) return; } }}//输出集合void out(string p){ int i; if(p.length()==0) return; cout<<"{"; for(i=0;i-1) { cout<<"->"<-1) { cout<<"->"<9) outfu(8," "); else outfu(9," "); cout<-1) { if(ch==a) { fenxi.erase(fenxi.length()-1,1); chuan.erase(0,1); cout<<"'"<

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.