• 语文科
  • 数学科
  • 英语科
  • 政治科
  • 物理科
  • 化学科
  • 地理科
  • 历史科
  • 生物科
  • 中考备战
  • 高考备战
  • 高考试题
  • 中考试题
  • 当前位置: 天一资源网 > 文法 正文

    slr1分析表例题_SLR1文法分析实验报告

    时间:2020-07-16 08:19:08 来源:天一资源网 本文已影响 天一资源网手机站

     共享知识 分享快乐

     《编译原理》课程设计报告

     —SLR(1)分析的实现

     学院计算机科学与技术

     专业 计算机科学与技术

     学号

     学生姓名

     指导教师姓名

      日26月12年2015

     AAAAAAAA

     共享知识 分享快乐

      目录1.设计的目的与内容 ..................................................................................................................... 1

     1.1课程设计的目的 ................................................................................................................. 1

     1.2设计内容............................................................................................................................. 1

     1.3设计要求............................................................................................................................. 1

     1.4理论基础............................................................................................................................. 1

     2算法的基本思想 ............................................................................................................................ 2

     2.1主要功能函数 ..................................................................................................................... 2

     2.2算法思想............................................................................................................................. 3

     SLR文法构造分析表的主要思想: ................................................................................ 3

     解决冲突的方法: ........................................................................................................... 3

     SLR语法分析表的构造方法: ........................................................................................ 4

     3主要功能模块流程图 .................................................................................................................... 5

     3.1主函数功能流程图 ............................................................................................................. 5

     4系统测试........................................................................................................................................ 6

     5 结论 ............................................................................................................................................ 11

     附录程序源码清单 ......................................................................................................................... 12

     AAAAAAAA

     共享知识 分享快乐

      设计的目的与内容1.

     1.1课程设计的目的

     编译原理课程设计是计算机专业重要的教学环节,它为学生提供了一个既动手又动脑,将课本上的理论知识和实际有机的结合起来,独立分析和解决实际问题的机会。

     ? 进一步巩固和复习编译原理的基础知识。

     ? 培养学生结构化程序、模块化程序设计的方法和能力。

     ? 提高学生对于编程语言原理的理解能力。

     ? 加深学生对于编程语言实现手段的印象。

     1.2设计内容

     构造LR(1)分析程序,利用它进行语法分析,判断给出的符号串是否为该文法识别的句子,了解LR(K)分析方法是严格的从左向右扫描,和自底向上的语法分析方法。

     1.3设计要求

     1) SLR(1)分析表的生成可以选择编程序生成,也可选择手动生成;

     2) 程序要求要配合适当的错误处理机制;

     3) 要打印句子的文法分析过程。

     1.4理论基础

     由于大多数适用的程序设计语言的文法不能满足LR(0)文法的条件,即使是描述一个实数变量说明这样简单的文法也不一定是LR(0)文法。因此对于LR(0)规范族中有冲突的项目集(状态)用向前查看一个符号的办法进行处理,以解决冲突。这种办法将能满足一些文法的需要,因为只对有冲突的状态才向前查看一个符号,以确定做那种动作,因而称这种分析方法为简单的LR(1)分析法,用SLR(1)表示。

     AAAAAAAA

      分享快乐共享知识

      算法的基本思想22.1主要功能函数

     class WF

     {

     WF(char s1[],char s2[],int x,int y)

     WF(const string& s1,const string& s2,int x,int y)

     booloperator<(const WF& a)const

     booloperator==(const WF& a)const

     void print()

      };class Closure

     {

     void print(string str)

     booloperator==(const Closure& a)const

     };

      ()make_itemvoid )& xdfsvoid(const string ()voidmake_first )& str2,const string stringvoid append(const& str1 ) string str id,constint _check(const vector<>&bool ()make_followvoid ()make_setvoid ()make_Vvoid )char,ch cmp1,inti<voidmake_cmp(vectorWF>& ()voidmake_go ()voidmake_tablevoid print(string s1, string s2, string s3, string s4, string s5, string

      ), string s7s6 ) xstringget_steps(int )stkT(vector<>stringget_stk )&(stringget_shiftWF tempAAAAAAAA

      分享快乐 共享知识 )(string srcvoidanalyse

      算法思想2.2 文法构造分析表的主要思想:SLR 集而获解决。许多冲突性的动作都可能通过考察有关非终结符的FOLLOW 解决冲突的方法:如果这两,和FOLLOW(B)B的句型,考察集合FOLLOW(A)解决冲突的方法是分析所有含A和 时,我们可以使用如下策略:那么当状态I面临输入符号a个集合不相交,而且也不包含b,

      a=b,则移进。若 A→α进行归约;∈FOLLOW(A),则用产生式若a B→α进行归约;∈FOLLOW(B),则用产生式若a 的基本算法:此外,报错*SLR

      个移进项目I中含有m假定LR(0)规范族的一个项目集;βm,…,Am→α?am2a1A1→α?β1,A2→α?a2β n个归约项目同时含有 B3→α?,B1→α?,B2→α?,…,FOLLOW两两不相交(包括不得有两个FOLLOW(B1),…,FOLLOW(Bn),如果集合{ a1,…, am}个集合中n+1a属于上述),则隐含在集合有#I中的动作冲突可以通过检查现行输入符号 的哪个集合而活的解决: ,则移进。,m,i=1,2,…ai若a是某个 →α进行归约;Bii=1,2,,…,m,则用产生式FOLLOW(Bi)a若∈ 此外,报错 这种冲突的解决方法叫做。解决办法SLR(1)

     AAAAAAAA

     共享知识 分享快乐

     SLR语法分析表的构造方法:

     首先把G拓广为G',对G'构造LR(0)项目集规范族C和活前缀识别自动机的状态转换函数GO。函数ACTION和GOTO可按如下方法构造:

     若项目A→α?bβ属于Ik,GO(Ik,a)= Ij,a为终结符,置ACTION[k,a]为“把状态j和符号a移进栈”,简记为“sj”;

     若项目A→α?属于Ik,那么,对任何非终结符a,a∈FOLLOW(A),置ACTION[k,a]为“用产生式A→α进行归约”,简记为“rj”;其中,假定A→α为文法G'的第j个产生式

     若项目S'→S?属于Ik,则置ACTION[k,#]为可“接受”,简记为“acc”;

     若GO(Ik, A)= Ij,A为非终结符,则置GOTO[k, A]=j;

     分析表中凡不能用规则1至4填入信息的空白格均填上“出错标志”。

     语法分析器的初始状态是包含S'→?S的项目集合的状态

     解决的冲突只是移进规约冲突和规约规约冲突 -SLR-

     AAAAAAAA

     共享知识 分享快乐

      3主要功能模块流程图3.1主函数功能流程图

     )

     初始化分析表及栈开始(WF

     输入分析串产生项目表 接受 出错

     产生First合集

     产生Follow合集

     构造LR(0)分析表

     退出程序,并告知用户分析结果

      程序主要流程3.1图

     AAAAAAAA

      分享快乐 共享知识4系统测试

     图4.1输入

     图4.2项目表

     AAAAAAAA

     共享知识 分享快乐

     图4.3FIRST集

      集4.4 FOLLOW图AAAAAAAA

     共享知识 分享快乐

      表4.5CLOSURE图AAAAAAAA

     共享知识 分享快乐

     图4.6 EDGE表

     图4.7 LR(0)表

     AAAAAAAA

     共享知识 分享快乐

     4.8文法分析步骤 图

     AAAAAAAA

     共享知识 分享快乐

      结论5LR分析法是一种自下而上进行规范归约的语法分析方法。

     这里L是指从左到右扫描输入符号串。R是指构造最右推倒的逆工程。

     这种分析法比递归下降分析法、预测分析法和算符优先分析法对文法的限制要少得多。

     AAAAAAAA

      分享快乐共享知识

      附录程序源码清单#include <iostream>

     #include <cstdio>

     #include <algorithm>

     #include <cstring>

     #include <cctype>

     #include <vector>

     #include <string>

     #include <queue>

     #include <map>

     #include <set>

     #include <sstream>

     #define MAX 507

     //#define DEBUG

     usingnamespacestd;

     #pragma warning(disable:4996)

     class WF

     {

     public:

     string left, right;

     int back;

     int id;

     WF(char s1[],char s2[],int x,int y)

     {

     left= s1;

     right= s2;

     back= x;

     id= y;

     }

     WF(const string& s1,const string& s2,int x,int y)

     AAAAAAAA

      分享快乐 共享知识 { ;left= s1 ;right= s2 ;back= x ;= yid } const a)operator<(const WF&bool { ).left(left ==aif right; right <a.return left; left <a.return } )const WF& abooloperator==(const { );a.righta.left)&&(right ==left return(== } ()void print { ());.c_str.c_str(),right,printf(╜?┾屳湜left } };

      Closure class { public: ;WF<> elementvector ) print(string strvoid { c_str());\,str.,printf(╜?猵屳湜 ++)();element.sizei<;=intfor(i0i printielement[].();AAAAAAAA

      分享快乐共享知识

      } const& a)operatorbool==(const Closure { ;size())returnfalseelement.size()!=element.if(a. ++)();ia.element.size;for(inti=0i< ;])continue.element[iiif(element[]==a ;elsereturnfalse ;returntrue } };

      Content struct { type;int num;int string out; 1;}(){ type =-Content ), aint bContent(int ){}num(b:type(a), };

      ;>wfvector<WF dic;>>, vector<intmap<string VN_set;<int>> vectormap<string, ;bool> vis<mapstring, ;=卜string start

      collection;>vector<Closure ; items<WF>vector ;='$' CH char ];MAX[][MAX goint MAX toint[];AAAAAAAA

      分享快乐 共享知识

      ;> Vvector<char ];[MAXbool used ];][MAXContent action[MAX ];][MAXintGoto[MAX first;<, setchar>>map<string follow; set<char>>map<string,

      make_item()void { 1));1,sizeof(-memset(to,- i++).size();i=0;i<wffor(int i);].push_back([wf[i].leftVN_set ++)size();i0;i<wf.for(inti= ++)length();j[i].right.for(int j =0; j <=wf { ;].rightstring temp =wf[i );, CH.begin()+ j.tempinsert(temp size());push_back(items.idic[wf[].left]. j)if( size();]=items.to[items.size()-1 ()));items.sizeleft, temp,i,(items.push_backWF(wf[i]. }#ifdef DEBUG

      );项目表尭 puts(------------------------- i++)items.size();=for(inti0;i< (),left.c_str items(╜?┾?慢正┺?摩┺層湜,[i].printf );i].id[].(),right.c_str items[iback, items].[itemsi ?尭();puts#endif

      } x string(voiddfsconst&)AAAAAAAA

      分享快乐共享知识

      { return;[x])if(vis 1;[x]=vis x];=VN_set[vector<int>& id

      ++)size();i0;i<id.for(inti= { ;i]].left=wf[id[string& left

      ;]].rightwf[id[istring& right = ++)();j<right.length j for(int=0; j

      j]))((isupperright[if { 1));substr(j,dfs(right. )];,(j1 temp = first[right.substrset<char>& ();temp.beginset<char>::iterator it = ;=true flag bool ++)(); it it !=temp.endfor(; { false;'~') flag =if(*it == );insert(*it].first[left } ;)breakif(flag } else { ]);right[j].first[leftinsert( break; } } } ()make_firstvoid {AAAAAAAA

      分享快乐共享知识

      clear();vis. begin();=dic. vector<string,<int>>::iterator it2 map it2++).end();for(; it2 !=dic continue;->first])if(vis[it2 );it2->firstelsedfs(#ifdef DEBUG

      );****************FIRST集?尪 puts( ();first.begin<char>>::iterator it =map<string, set ++)(); it it !=first.endfor(; { ());.c_str?剉呓┨?笽, it->firstprintf( second->;>& temp = itset<char begin();iterator it1 =temp.set<char>:: false;bool flag = it1++).end();for(; it1 !=temp { );printf(?if(flag) );╜屣,*it1printf( ;=trueflag } );(絜puts }#endif

      }

      str2)const string&&void append(const string str1, { ];[str1=set<char>& from follow str2]; to = follow[charset<>& begin();.>::set<chariterator it =from itendfrom it for(;!=.();++)AAAAAAAA

      分享快乐共享知识

      it);.insert(*to } string str) id,const _check(const vector<int>&bool { ++)size();i0;i<id.ifor(int= { ]; id[iint x = ;str)returntrue[x].right ==if(wf } ;returnfalse } ()voidmake_follow { )(truewhile { ;=falsebool goon

      begin();iterator it2 =VN_set.stringmap<, vector<int>>:: it2++).end();!=for(; it2 VN_set { ; it2=->secondvector<int>& id

      ++)();isize;i<id.ifor(int=0 { ;=truebool flag

      i]];wf[id[= WF&tt left;=tt.string& left

      ;tt.rightconst string& right = --)0>=; j1right(forint j =.length()-; j

      j]))(if(isupperright[ { )flagif( {AAAAAAAA

      分享快乐 共享知识

      ();)].sizesubstr(j,1inttx= follow[right. ));,1.substr(jappend(left,right ();)].size(j,1int tx1 = follow[right.substr true;tx) goon =tx1 if(> 繜))_check(id,if( false;flag= } k++).length();1= j +; k <rightfor(int k

      k]))(right[if(isupper { 1);(k,stringidd=right.substr ]; first[iddset<char>& from = )];j,1[right.substr( to set<char>&= follow ();.begin>::<chariterator it1 =fromset ();)].sizesubstr(j,1inttx= follow[right. it1();++)!=from.endfor(; it1

      '~')if(*it1 != it1);to.insert(* size();,1)]. follow[right.substr(jint tx1 = ; goon =trueif(tx1 >tx) )),繜idif(_check( ;break } else { size();j,1)].=inttx follow[right.substr( ]);[kinsert,1)].(rightjrightfollow[.substr( ();1)].sizejright tx1 int= follow[.substr(, ; goon =true)>(iftx1 tx ;break }AAAAAAAA

      分享快乐 共享知识 } ; flag =falseelse } } ;)breakif(!goon }#ifdef DEBUG

      );集尪 puts(***************FOLLOW begin();iterator it =follow.>>::map<string, set<char it++)follow.end();for(; it != { c_str());->first.printf(佌?猥?屻, it ; it->secondset<char>& temp = );insert('#'temp. ();.beginchar>::iterator it1 =tempset< false=;bool flag

      it1++)temp.end();for(; it1 != { );printf(?if(flag) );,*it1printf(╜屣 true;flag= } );(puts絜 }#endif

      }

      ()make_setvoid { MAX hasbool[];AAAAAAAA

      分享快乐 共享知识

      ++)();i<items.sizefor(inti=0;i CH)right[0]==]==[0'S'&& items[i].if(items[i].left { Closure temp; right; items[i].string&str= element;=temp.WFvector<>& element

      i]);(items[element.push_back 0;size_t x = ++)length(); xstr=0; x <.for(x

      )x]== CHif(str[ ;break ));sizeof(has(has,0,memset ;]=1ihas[ )()-1x !=str.lengthif( { ;> qqueue<string 1));x +1,(q.push(str.substr empty())while(!q. { front();=q.string u

      pop();q. ];dic[u>&vector<int id = ++)();j<; j id.sizefor(size_t j =0 { ];[jinttx= id CH)[0]==rightif(items[tx]. { ;tx])continueif(has[ ;]=1has[tx ]))right[1].(if(isupperitems[tx 11substrrighttxitemspushq.([]..(,));AAAAAAAA

      分享快乐 共享知识

      tx]);push_back(items[element. } } } } temp);collection.push_back( } i++).size();isize_t=0;i<collectionfor( { temp;, Closure>map<int ++)size();j collection[i].element.<for(size_t j =0; j

      { ;j].right[i].element[ collectionstringstr= ; x =0size_t ++)(); x x <str.lengthfor(; ;)breakstr[x]== CHif( )()-1==str.lengthif(x

      continue; 1];str[x +int y = ii;int x);.begin()+str.erase(str );1, CHstr.begin()+ x +insertstr.( );,-1,str,-1].(=WFcollection[i].element[jleft WF cmp k++).size();;(size_t k =0 k <itemsfor )k]==cmpif(items[ { ;= kii break; } ));(has,(memsethas,0sizeof elementy temp element WFvector<>&=[].;AAAAAAAA

      分享快乐共享知识

      ii]);push_back(items[element. 1;has[ii]= x++; 1).length()-if(x !=str { q;<string>queue ));,+11(str.substr(x q.push ())q.emptywhile(! { ();q.frontstring u = ();q.pop ];dic[u<int>& id =vector ++)();j j <id.sizefor(size_t j =0; { ];[jinttx= id CH)right[0]==itemsif([tx]. { continue;has[tx])if( 1;[tx]=has ]))right[1((isupperitems[tx].if ));,1right.substr(1txq.push(items[]. tx]);[.push_back(itemselement } } } } } ();temp.beginint<, Closure>::iterator it =map it++).!=tempend();(;for it

      );it->secondpush_backcollection.( isizecollectioni0i(forsize_t=;<.();++)AAAAAAAA

      分享快乐共享知识

      end());].element.element.begin(), collection[i].sort(collection[i i++).size();=0;i<collectionsize_tfor(i ++)size();j1; j <collection.size_tfor( j =i+ ]) collection[j(collection[i]==if );()+ j..erase(collectionbegincollection }#ifdef DEBUG

      );(协剕puts ;stringstream sin ++)();i<collection.sizefor(size_ti=0;i { clear();sin. string out; i;sin<<捜潬畳敲?<< out;sin>> out);].print(collection[i } );puts(\#endif

      }

      ()voidmake_V { ));(usedused,0,sizeofmemset( i++)wf.size();=for(size_ti0;i< { ;i].leftstrstring&=wf[ j++)str.length(); j j for(size_t=0;< { continue;[used[strj]])(if 1jstrused[[]]=;AAAAAAAA

      分享快乐 共享知识

      j]);push_back(str[V. } right;wf[i].string& str1 = j++).length();<size_t j =0; j str1for( { continue;[j]])if(used[str1 1;[j]]=used[str1 ]);str1[jpush_backV.( } } ());V.endsort(V.begin(), );push_back('#'V. }

      )charch cmp1,inti,voidmake_cmp(vector<WF>& { j++).].elementsize(); j =0; j < collection[ifor(size_t { right;element[j].stringstr= collection[i]. k;size_t ++)length(); k<=0; k str.for(k

      )k]== CHif(str[ ;break ch)k [+1]==str(k !=.length()-1&&strif { );()+.begin kstr.erase(str CH,);begin()+ k +1strstr.insert(.

      1,-));1strleftjelementicollectionWFpush_backcmp1.(([].[].,,- } }AAAAAAAA

      分享快乐共享知识

      end());begin(), cmp1.sort(cmp1. }

      make_go()void { go));,sizeof(1memset(go,- size();=collection.int m

      t++).size();=0; t <V(forsize_t t

      { ]; V[tcharch= ++) m;ii=0;i<for(int { ;WF> cmp1vector< );,chmake_cmp(cmp1,i#ifdef DEBUG

      ;()<<endlcout<< cmp1.size#endif

      ;)continue.size()==0if(cmp1 j++) j < m;(forint j =0; { cmp2;vector<WF> ++)size(); k[< collectionj].element.size_tfor( k =0; k

      { ;].rightj].element[k collectionstring&str=[ ;size_t x x++)str.length();(forx =0; x < )x]== CHstrif([ ;break ch)x [-1]==x if(&&str

      11strleftkelementjcollectionWFpush_backcmp2.(([].[].,,-,-));AAAAAAAA

      分享快乐 共享知识

      } ()); cmp2.endsort(cmp2.begin(),#ifdef DEBUG

      ;size()<<endlcout<< cmp2.#endif

      ; flag =truebool ;())continuesize()!= cmp1.sizeif(cmp2.#ifdef DEBUG

      ;()<<endl<< cmp1.sizecout#endif

      k++) cmp1.size();0for(size_t k =; k < continue;[k])]==if(cmp1[k cmp2 false;else flag =#ifdef DEBUG

      ;潜瑵尠<<endl<<cout#endif

      )if(flag ;]= jchgo[i][ } }

      }#ifdef DEBUG

      );(puts stringstream sin; string out; ++) m;i<(inti=0;ifor j++);0; j < mintfor( j = ++); k<=(int k 0; k MAXfor ) jkigoif([][]== {AAAAAAAA

      分享快乐共享知识

      clear();sin. j;k)<<<<?<<i<<?尭<<(char)(sin<< out;sin>> c_str());,out.printf(╜屳湜 }#endif

      }

      make_table()void { Goto));,sizeof(memset(Goto,-1 ++)size();i0;i<collection.for(size_ti= ++)size();j; j <V.for(size_t j =0 { ];[jcharch= V ];][ch x = go[iint ;)continue(x ==-1if ch))(!ifisupper( x); Content(0,action[i][ch]= else x;][ch]=Goto[i }//write r and acc to the table

      ++)size();i0;i<collection.for(inti= j++)size].element.(); j (int j =0;< collection[ifor { ];[].elementj& WFtt= collection[i CH)1.length()-]==rightrightif(tt.[tt. { )]=='S'[(iftt.left0 12 Content'#'iaction[][]=(,-);AAAAAAAA

      分享快乐共享知识

      else k++).size();Vint k =0; k <for( { k];= V[int y

      continue;[k])).left].count(Vif(!follow[tt );tt.backy]= Content(1,action[i][ } } }#ifdef DEBUG

     分析表------------------------------------------LR(0) puts( );? );],籜籜, V[0(printf╜?╳挵?屳, ++)();i<V.size=for(inti1;i 籜); V,[i],printf(╜挵?屳 \);puts( i++))*10;i<(V.size()+1=for(inti0; );printf(? );puts(\ ;stringstream sin ++)();ii<collection.sizeifor(int=0; { 籜);╜搵?屳,i,(printf ++)size();j< j =0; j V.for(int { ];[jcharch= V ch))if(isupper( { 1)][Goto[ich]==-(if );籜╜?屳printf(, elseAAAAAAAA

      分享快乐 共享知识 );ch],籜╜搵?屳,Goto[i][printf( } else { ();sin.clear )==-1i][ch].type (ifaction[ );,籜printf(╜?屳 else { ];][ch= action[i Content& temp

      0)temp.type==if( 卜;sin<< 1).type==if(temp 剜;sin<< )type==2tempif(. ;sin<<慜捣 )!=-1numif(temp. ;.numsin<<temp out.;sin>>temp 籜);.c_str(),.printf(╜猷?屳,tempout } } } );puts(\ } ++);i10sizei;<(V.()+1)*0i(forint= ?);printf( \();puts#endif

      }

     AAAAAAAA

      分享快乐 共享知识 string s5,string s4, string string s1, string s2, s3, string void print( ), string s7s6 { (),.c_str(╜?猵猵╳木猰猵╳?猵屜屮, s1printf c_str(),c_str(), s5.(),.c_str s3.c_str(), s4.s2 c_str());(), s7.c_str s6. }

      x)stringget_steps(int { ;stringstream sin ;sin<< x ;string ret ;sin>> ret ;return ret }

      >class Ttemplate< stk)vector<T>(stringget_stk { stringstream sin; ++)();isize0;i<stk.ifor(int= i];[sin<<stk string ret; ;>>sin ret ;return ret }

      )WF& temp(stringget_shift { stringstream sin;AAAAAAAA

      分享快乐共享知识

      ?;.right<<temp.left<<?尾<<temp sin <<牜摥捵?<< string out; out;sin>> ; outreturn }

      )analyse(string srcvoid {

     ,獜慴整猭慴正,?呃佉屎,楜灮瑵,潜数慲楴湯,(print獜整獰,潜?瑳捡屫 );佇佔 ;>op_stackvector<char ;>st_stackvector<int ;+=?src );('#'op_stack.push_back );(0st_stack.push_back 1;int steps = i++).length();<inti=0;isrcfor( { i];=src[char u

      ];size()-1 top =st_stack[st_stack.int ];][u act &=action[top Content )==0(act.typeif {get_,i),獜楨瑦substrget_stk(op_stack),src.(stepsprint(get_steps(++), );,\st_stack),act.out(stk u);op_stack.push_back( );.num(st_stack.push_backact } )1typeactelseif(.== {AAAAAAAA

      分享快乐共享知识

      num];[act.& WFtt=wf 1];.length()-st_stack.size()-tt.rightint y =st_stack[ ]];left[0[=Gotoy][tt.int x

     

     tt(i),get_shift),src.substr(++),print(get_steps(stepsget_stk(op_stack ));(xact.out,get_steps(),get_stkst_stack), ++)();j.right.length=for(int j 0; j <tt { pop_back();st_stack. pop_back();op_stack. } 0]);.left[ttop_stack.push_back( x);.push_back(st_stack i--; } )type==2elseif(act. {get,),?捣灥屴.substr(isrcget_stepsprint((steps++),get_stk(op_stack), \);act.out,_stk(st_stack), } elsecontinue; } }

      ()int main { ;int n MAX];char s[ ))╜層,&nscanfwhile(~( { i ni0i(forint=;<;++)AAAAAAAA

      共享知识分享快乐

     {

     scanf(╜屳, s);

     intlen=strlen(s), j;

     for(j =0; j <len;j++)

     if(s[j]=='-')break;

     s[j]=0;

     wf.push_back(WF(s, s + j +2,-1,-1));

     #ifdef DEBUG

     wf[wf.size()-1].print();

     #endif

     }

     make_item();

     make_first();

     make_follow();

     make_set();

     make_V();

     make_go();

     make_table();

     analyse(椫);

     }

      }盛年不重来,一日难再晨。及时宜自勉,岁月不待人。

     AAAAAAAA

    相关关键词: 陆生作:左手作文法——怎么用“地点”写景 特级教师:最简作文法之写景作文 思维导图作文法 培养最优作文法 文法
    相关热词搜索: 文法 实验 报告 分析 SLR1

    • 范文大全
    • 教案下载
    • 优秀作文
    • 励志
    • 课件
    • 散文
    • 名人名言