www.pudn.com > LL(1)while.rar > LL(1).cpp


 
/* 
 * 文件名称: 语法分析.h 
 * 摘    要: 对任意输入LL(1)文法的分析表及字符串,本程序能自动判断所给字符串是 
 *           否为该文法的句子,并能给出分析过程。 
  
*/ 
 
#include 
#include 
#include  
#include  
 
using namespace std; 
 
void showstack(stack< char > st) 
{ 
 int i,j; 
 char ch[100]; 
 j=st.size(); 
 for(i=0;i=0;i--) 
 { 
  cout<>str; 
   for(i=0;i st; 
   st.push('#');                                   
   st.push(Vn[0]);                  //#与识别符号入栈 
   j=0; 
   h=1; 
   w=str[0]; 
   cout<<"步骤            "<<"分析栈                "<<"剩余输入串           "<<" 所用产生式"<"<=0;m--) 
      { 
           st.push(str0[m]); 
      } 
           goto opt1; 
    } 
    } 
    } 
   } 
} 
main() 
{    
 int i,k,n,r; 
    char Vn[100],Vt[100],select; 
    string M[100][100]; 
    cout<<"* 文件名称: 语法分析"<>n; 
 cout<<"请输入各终结符(#号表示结束)Vt[i]:"; 
 for(i=0;i<100;i++) 
 { 
  cin>>Vt[i]; 
  if(Vt[i]=='#') 
  { 
   r=i; 
   break; 
  } 
 } 
    for (i=0;i>Vn[i]; 
        cout<<"请输入此非终结符对应各终结符的产生式右部(null或NULL表示出错;$表示空串):";  
  for(k=0;k<=r;k++) 
  { 
   cin>>M[i][k]; 
  } 
 } 
opt3: 
    cout<<"请输入要分析的字符串,且以#结束:"; 
    analyse(Vn, Vt, M); 
    cout<<"             ************************请选择***********************"<>select; 
    switch(select) 
 { 
        case '1': {goto opt3;break;} 
        case '2': {goto opt2;} 
        case '0': {break;} 
        default:  {cout<<"输入错误!请重新选择:"<