⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sentencecompile.h

📁 一个Pascal子集语言的编译器
💻 H
📖 第 1 页 / 共 4 页
字号:
                  if(next==103)  {State[StateIndex]=6004; break;}
                  strcpy(ExpectedWord,"statement ");CatchErrors(1);break;
                  
        case 6002:if(next==128)  {State[StateIndex]=6001; break;}
                  if(next==103)  {State[StateIndex]=6004; break;}
                  strcpy(ExpectedWord,"';' ");CatchErrors(1);break;
                  
        case 6004:StateIndex--; Check(6);Check(next);break;
        case 6005:StateIndex--; Check(6);Check(next);break;
        
        //statement
        case 7000:if(next==124) {State[StateIndex]=7001; Copying=true;fout<<CurrentLine<<" "<<Parament; break;}
                  if(next==110) {State[StateIndex]=7007; break;}
                  if(next==107) {State[StateIndex]=7011; break;}
                  if(next==112) {State[StateIndex]=7017; Copying=true;fout<<CurrentLine<<" "<<Parament;break;}
                  if(next==113) {State[StateIndex]=7021; Copying=true;fout<<CurrentLine<<" "<<Parament;break;}
                  
        case 7001:if(next==129) {State[StateIndex]=7002; break;}
                  if(next==136) {State[StateIndex]=7005; break;}
                  Copying=false;fout<<" ;"<<endl;
                  StateIndex--; Check(7);Check(next);break;
                  
        case 7002:if(next==129)  {State[++StateIndex]= 11000;Check(next); break;}
                  if(next==124)  {State[++StateIndex]= 11000;Check(next); break;}
                  if(next==122)  {State[++StateIndex]= 11000;Check(next); break;}
                  if(next==119)  {State[++StateIndex]= 11000;Check(next); break;}
                  if(next==120)  {State[++StateIndex]= 11000;Check(next); break;}
                  if(next==121)  {State[++StateIndex]= 11000;Check(next); break;}
                  if(next==11)   {State[StateIndex]=7003; break;}
                  strcpy(ExpectedWord,"parament ");CatchErrors(1);break;
                  
        case 7003:if(next==130) {State[StateIndex]=7004; break;}
                  strcpy(ExpectedWord,"')' ");CatchErrors(1);break;
                    
        case 7004:Copying=false;fout<<" ;"<<endl;
                  StateIndex--; Check(7);Check(next);break;
        
        case 7005:if(next==129)  {State[++StateIndex]= 12000;Check(next); break;}
                  if(next==124)  {State[++StateIndex]= 12000;Check(next); break;}
                  if(next==122)  {State[++StateIndex]= 12000;Check(next); break;}
                  if(next==119)  {State[++StateIndex]= 12000;Check(next); break;}
                  if(next==120)  {State[++StateIndex]= 12000;Check(next); break;}
                  if(next==121)  {State[++StateIndex]= 12000;Check(next); break;}
                  if(next==12) {State[StateIndex]=7006; break;}
                  strcpy(ExpectedWord,"parament ");CatchErrors(1);break;
                  
        case 7006:Copying=false;fout<<" ;"<<endl;
                  StateIndex--; Check(7);Check(next);break;
        
        case 7007:if(next==129)  {State[++StateIndex]= 10000;Check(next); break;}
                  if(next==124)  {State[++StateIndex]= 10000;Check(next); break;}
                  if(next==122)  {State[++StateIndex]= 10000;Check(next); break;}
                  if(next==119)  {State[++StateIndex]= 10000;Check(next); break;}
                  if(next==120)  {State[++StateIndex]= 10000;Check(next); break;}
                  if(next==121)  {State[++StateIndex]= 10000;Check(next); break;}
                  if(next==10)  {State[StateIndex]=7008; break;}
                  strcpy(ExpectedWord,"expression ");CatchErrors(1);break;
                    
        case 7008:if(next==111) {State[StateIndex]=7009; break;}
                  strcpy(ExpectedWord,"'do' ");CatchErrors(1);break;
                    
        case 7009:if(next==102) {State[++StateIndex]= 6000;Check(next); break;}
                  if(next==107) {State[++StateIndex]= 6000;Check(next); break;}
                  if(next==124) {State[++StateIndex]= 6000;Check(next); break;}
                  if(next==110) {State[++StateIndex]= 6000;Check(next); break;}
                  if(next==112) {State[++StateIndex]= 6000;Check(next); break;}
                  if(next==113) {State[++StateIndex]= 6000;Check(next); break;}
                  if(next==6) {State[StateIndex]=7010; break;}
                  strcpy(ExpectedWord,"statement ");CatchErrors(1);break;
                    
        case 7010:StateIndex--; Check(7);Check(next);break;
        
        case 7011:if(next==129)  {State[++StateIndex]= 10000;Check(next); break;}
                  if(next==124)  {State[++StateIndex]= 10000;Check(next); break;}
                  if(next==122)  {State[++StateIndex]= 10000;Check(next); break;}
                  if(next==119)  {State[++StateIndex]= 10000;Check(next); break;}
                  if(next==120)  {State[++StateIndex]= 10000;Check(next); break;}
                  if(next==121)  {State[++StateIndex]= 10000;Check(next); break;}
                  if(next==10)   {State[StateIndex]=7012; break;}
                  strcpy(ExpectedWord,"expression ");CatchErrors(1);break;
                  
        case 7012:if(next==108) {State[StateIndex]=7013; break;}
                  State[StateIndex]=7013;
                  strcpy(ExpectedWord,"'then' ");CatchErrors(1);break;
                    
        case 7013:if(next==102) {State[++StateIndex]= 6000;Check(next); break;}
                  if(next==107) {State[++StateIndex]= 6000;Check(next); break;}
                  if(next==124) {State[++StateIndex]= 6000;Check(next); break;}
                  if(next==110) {State[++StateIndex]= 6000;Check(next); break;}
                  if(next==112) {State[++StateIndex]= 6000;Check(next); break;}
                  if(next==113) {State[++StateIndex]= 6000;Check(next); break;}
                  if(next==6)   {State[StateIndex]=7014; break;}
                  strcpy(ExpectedWord,"statement ");CatchErrors(1);break;
                    
        case 7014:if(next==109) {State[StateIndex]=7015; break;}
                  strcpy(ExpectedWord,"'else' ");CatchErrors(1);break;
                  
        case 7015:if(next==107) {State[++StateIndex]= 6000;Check(next); break;}
                  if(next==124) {State[++StateIndex]= 6000;Check(next); break;}
                  if(next==110) {State[++StateIndex]= 6000;Check(next); break;}
                  if(next==112) {State[++StateIndex]= 6000;Check(next); break;}
                  if(next==113) {State[++StateIndex]= 6000;Check(next); break;}
                  if(next==102) {State[++StateIndex]= 6000;Check(next); break;}
                  if(next==6)   {State[StateIndex]=7016; break;}
                  strcpy(ExpectedWord,"statement ");CatchErrors(1);break;
                    
        case 7016:StateIndex--; Check(7);Check(next);break;
        
        case 7017:if(next==129) {State[StateIndex]=7018; break;}
                  strcpy(ExpectedWord,"'(' ");CatchErrors(1);break;
                    
        case 7018:if(next==124) {State[++StateIndex]= 9000;
                                Check(next); break;}
                  if(next==9)   {State[StateIndex]=7019; break;}
                  strcpy(ExpectedWord,"identifier ");CatchErrors(1);break;
                    
        case 7019:if(next==130) 
                    {State[StateIndex]=7020;
                    break;}
                  strcpy(ExpectedWord,"')' ");CatchErrors(1);break;
                    
        case 7020:Copying=false;fout<<" ;"<<endl;
                  StateIndex--; Check(7);Check(next);break;
        
        case 7021:if(next==129) {State[StateIndex]=7022; break;}
                  strcpy(ExpectedWord,"'(' ");CatchErrors(1);break;
                    
        case 7022:if(next==129)  {State[++StateIndex]= 11000;Check(next); break;}
                  if(next==124)  {State[++StateIndex]= 11000;Check(next); break;}
                  if(next==122)  {State[++StateIndex]= 11000;Check(next); break;}
                  if(next==119)  {State[++StateIndex]= 11000;Check(next); break;}
                  if(next==120)  {State[++StateIndex]= 11000;Check(next); break;}
                  if(next==121)  {State[++StateIndex]= 11000;Check(next); break;}
                  if(next==11)   {State[StateIndex]=7023; break;}
                  strcpy(ExpectedWord,"identifier ");CatchErrors(1);break;
                  
        case 7023:if(next==130) {State[StateIndex]=7024; break;}
                  strcpy(ExpectedWord,"')' ");CatchErrors(1);break;
                  
        case 7024:Copying=false;fout<<" ;"<<endl;
                  StateIndex--; Check(7);Check(next);break;
        
        
        //id_list
        case 8000:if(next==123)
                    {State[StateIndex]=8001;
                    
                    HaveCount++;
                    VariantIndex++;
                    VariantType[VariantIndex]=100;//等待回填类型信息              
                    VariantBelong[VariantIndex]=Parament*100+HaveCount;
                                                //  parament与SubCount的区别是前者会回到0 
                    
                    break;}
                    
        case 8001:if(next==134) {State[StateIndex]=8002; break;}
                  StateIndex--; Check(8);Check(next);break;
                  
        case 8002:if(next==123)  {State[++StateIndex]= 8000;Check(next); break;}
                  if(next==8)    {State[StateIndex]=8003; break;}
                  strcpy(ExpectedWord,"identifier ");CatchErrors(1);break;
                  
        case 8003:StateIndex--; Check(8);Check(next);break;
        
        
        //ids_list
        case 9000:if(next==124) 
                    {State[StateIndex]=9001; 
                                            //将此变量及当前所处状态写入目标文件
                    break;}
                    
        case 9001:if(next==134) {State[StateIndex]=9002; break;}
                  StateIndex--; Check(9);Check(next);break;
                  
        case 9002:if(next==124)  {State[++StateIndex]= 9000;Check(next); break;}
                  if(next==9)    {State[StateIndex]=9003; break;}
                  strcpy(ExpectedWord,"identifier ");CatchErrors(1);break;
                  
        case 9003:StateIndex--; Check(9);Check(next);break;
        
        //expression
        case 10000:if(next==129)  {State[++StateIndex]= 12000;Copying=true;fout<<CurrentLine<<" "<<Parament<<" simple ";Check(next); break;}
                   if(next==124)  {State[++StateIndex]= 12000;Copying=true;fout<<CurrentLine<<" "<<Parament<<" simple ";Check(next); break;}
                   if(next==122)  {State[++StateIndex]= 12000;Copying=true;fout<<CurrentLine<<" "<<Parament<<" simple ";Check(next); break;}
                   if(next==119)  {State[++StateIndex]= 12000;Copying=true;fout<<CurrentLine<<" "<<Parament<<" simple ";Check(next); break;}
                   if(next==120)  {State[++StateIndex]= 12000;Copying=true;fout<<CurrentLine<<" "<<Parament<<" simple ";Check(next); break;}
                   if(next==121)  {State[++StateIndex]= 12000;Copying=true;fout<<CurrentLine<<" "<<Parament<<" simple ";Check(next); break;}
                   if(next==12)   {State[StateIndex]=10001; break;}
                   strcpy(ExpectedWord,"identifier ");CatchErrors(1);break;
                  
        case 10001:if(next==126)  {State[StateIndex]=10002; break;}
                   strcpy(ExpectedWord,"identifier ");CatchErrors(1);break;
                   
        case 10002:if(next==129)  {State[++StateIndex]= 12000;fout<<" simple ";Check(next); break;}
                   if(next==124)  {State[++StateIndex]= 12000;fout<<" simple ";Check(next); break;}
                   if(next==122)  {State[++StateIndex]= 12000;fout<<" simple ";Check(next); break;}
                   if(next==119)  {State[++StateIndex]= 12000;fout<<" simple ";Check(next); break;}
                   if(next==120)  {State[++StateIndex]= 12000;fout<<" simple ";Check(next); break;}
                   if(next==121)  {State[++StateIndex]= 12000;fout<<" simple ";Check(next); break;}
                   if(next==12)   {State[StateIndex]=10003; break;}
                   strcpy(ExpectedWord,"identifier ");CatchErrors(1);break;
                  
        case 10003:Copying=false;fout<<" ;"<<endl; 
                   StateIndex--; Check(10);Check(next);break;
        
        //simple_list
        case 11000:if(next==129)  {State[++StateIndex]= 12000;Check(next); break;}
                   if(next==124)  {State[++StateIndex]= 12000;Check(next); break;}
                   if(next==122)  {State[++StateIndex]= 12000;Check(next); break;}
                   if(next==119)  {State[++StateIndex]= 12000;Check(next); break;}
                   if(next==120)  {State[++StateIndex]= 12000;Check(next); break;}
                   if(next==121)  {State[++StateIndex]= 12000;Check(next); break;}
                   if(next==12)   {State[StateIndex]=11001; break;}
                   
        case 11001:if(next==134)  {State[StateIndex]=11002; break;}
                   StateIndex--; Check(11);Check(next);break;
                   
        case 11002:if(next==129)  {State[++StateIndex]= 11000;Check(next); break;}
                   if(next==124)  {State[++StateIndex]= 11000;Check(next); break;}
                   if(next==122)  {State[++StateIndex]= 11000;Check(next); break;}
                   if(next==119)  {State[++StateIndex]= 11000;Check(next); break;}
                   if(next==120)  {State[++StateIndex]= 11000;Check(next); break;}
                   if(next==121)  {State[++StateIndex]= 11000;Check(next); break;}
                   if(next==11)   {State[StateIndex]=11003; break;}
                   strcpy(ExpectedWord,"expression ");CatchErrors(1);break;
                  
        case 11003:StateIndex--; Check(11);Check(next);break;
        
        //simple
        case 12000:if(next==124)  {State[++StateIndex]= 13000;Check(next); break;}
                   if(next==122)  {State[++StateIndex]= 13000;Check(next); break;}
                   if(next==119)  {State[++StateIndex]= 13000;Check(next); break;}
                   if(next==120)  {State[++StateIndex]= 13000;Check(next); break;}
                   if(next==121)  {State[++StateIndex]= 13000;Check(next); break;}
                   if(next==129)  {State[++StateIndex]= 13000;Check(next); break;}
                   if(next==13)   {State[StateIndex]=12001; break;}
                   
        case 12001:if(next==125)  {State[StateIndex]=12002; break;}
                   StateIndex--; Check(12);Check(next);break;
                   
        case 12002:if(next==129)  {State[++StateIndex]= 12000;Check(next); break;}
                   if(next==124)  {State[++StateIndex]= 12000;Check(next); break;}
                   if(next==122)  {State[++StateIndex]= 12000;Check(next); break;}
                   if(next==119)  {State[++StateIndex]= 12000;Check(next); break;}
                   if(next==120)  {State[++StateIndex]= 12000;Check(next); break;}
                   if(next==121)  {State[++StateIndex]= 12000;Check(next); break;}
                   if(next==12)   {State[StateIndex]=12003; break;}
                   strcpy(ExpectedWord,"expression ");CatchErrors(1);break;
                   
        case 12003:StateIndex--; Check(12);Check(next);break;
        
        //factor
        case 13000:if(next==124) {State[StateIndex]=13001;/* fout<<Parament<<" "<<NextWord<<" "<<Value<<endl;*/ break;}
                   if(next==122) {State[StateIndex]=13005; break;}
                   if(next==119) {State[StateIndex]=13006; break;}
                   if(next==120) {State[StateIndex]=13008; break;}
                   if(next==121) {State[StateIndex]=13009; break;}
                   if(next==129) {State[StateIndex]=13010; break;}
                   
        case 13001:if(next==129) {State[StateIndex]=13002; break;}
                   StateIndex--; Check(13);Check(next);break;
        case 13002:if(next==129)  {State[++StateIndex]= 11000;Check(next); break;}
                   if(next==124)  {State[++StateIndex]= 11000;Check(next); break;}
                   if(next==122)  {State[++StateIndex]= 11000;Check(next); break;}
                   if(next==119)  {State[++StateIndex]= 11000;Check(next); break;}
                   if(next==120)  {State[++StateIndex]= 11000;Check(next); break;}
                   if(next==121)  {State[++StateIndex]= 11000;Check(next); break;}
                   if(next==11)  {State[StateIndex]=13003; break;}
                   strcpy(ExpectedWord,"expression ");CatchErrors(1);break;
                   
        case 13003:if(next==130) {State[StateIndex]=13004; break;}
                   strcpy(ExpectedWord,"')' ");CatchErrors(1);break;
                    
        case 13004:StateIndex--; Check(13);Check(next);break;
        
        case 13005:StateIndex--; Check(13);Check(next);break;
        
        case 13006:if(next==124)  {State[++StateIndex]= 13000;Check(next); break;}
                   if(next==122)  {State[++StateIndex]= 13000;Check(next); break;}
                   if(next==119)  {State[++StateIndex]= 13000;Check(next); break;}
                   if(next==120)  {State[++StateIndex]= 13000;Check(next); break;}
                   if(next==121)  {State[++StateIndex]= 13000;Check(next); break;}
                   if(next==13)   {State[StateIndex]=13007; break;}
                   strcpy(ExpectedWord,"factor ");CatchErrors(1);break;
                   
        case 13007:StateIndex--; Check(13);Check(next);break;
        
        case 13008:StateIndex--; Check(13);Check(next);break;
        
        case 13009:StateIndex--; Check(13);Check(next);break;
        case 13010:if(next==129)  {State[++StateIndex]= 12000;Check(next); break;}
                   if(next==124)  {State[++StateIndex]= 12000;Check(next); break;}
                   if(next==122)  {State[++StateIndex]= 12000;Check(next); break;}
                   if(next==119)  {State[++StateIndex]= 12000;Check(next); break;}
                   if(next==120)  {State[++StateIndex]= 12000;Check(next); break;}
                   if(next==121)  {State[++StateIndex]= 12000;Check(next); break;}
                   if(next==12)   {State[StateIndex]=13011; break;}
                   strcpy(ExpectedWord,"expression ");CatchErrors(1);break;
                   
        case 13011:if(next==130)  {State[StateIndex]=13012; break;}
                   strcpy(ExpectedWord,"')' ");CatchErrors(1);break;
                    
        case 13012:StateIndex--; Check(13);Check(next);break;
        
        default:break;
    }
    return 0;
}

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -