亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? createcode.h

?? 一個(gè)Pascal子集語(yǔ)言的編譯器
?? H
字號(hào):
//CreateCode.h

//inputfile:  words.txt
//outputfile: TempCode.txt

#ifndef CREATECODE_H_
#define CREATECODE_H_

#include <stdio.h>
#include <iostream>
#include <stdlib.h>
#include "RunTime.h"
using namespace std;

/*****************************************************************************************
    生成中間代碼 
     
    
    
******************************************************************************************/




void runTime::CreatCode(char* filename)
{
    ofstream fout1("TempCode.txt");
    
    
    for(int i=0;i<=SegmentCount;i++)
    {
        
        //對(duì)模塊編號(hào)做一個(gè)預(yù)處理,將Segment進(jìn)行反查
        for(int j=1;j<=VariantCount;j++)
            if(Segment[j]==i)
                Segment2[i]=j;
            
                                                //還需要將得到的代碼過一遍,除掉冗余的信息 
        while(strcmp(Word[i][0],"var")==0)
        {
            int j=1;
            while(strcmp(Word[i][j],";")!=0) j++;   //將頭部的定義變量信息去掉 
                                                //將后面所有詞向前移動(dòng)j+1個(gè)位置    
            for(int k=j+1;k<=WordCount[i];k++)
            {
                strcpy(Word[i][k-j-1],Word[i][k]);
                Value[i][k-j-1]=Value[i][k];
            }
            WordCount[i]-=j+1;
        }
        
        fout1<<"Segment "<<i<<" :"<<endl;
    
        for(int j=0;j<=WordCount[i];j++)
        {
            ChangeWords(i,j);
            fout1<<Word[i][j]<<" ";
            if(
            (strcmp(Word[i][j],"then")==0)
            ||
            (strcmp(Word[i][j],"else")==0)
            ||
            (strcmp(Word[i][j],";")==0)
            )
            fout1<<endl;
        
        }
        fout1<<endl;
        fout1<<endl;
    }
    
    cout<<"temp-code born successful."<<endl;
    
    //此時(shí)調(diào)用函數(shù)信息及函數(shù)參數(shù)信息已經(jīng)全部被記錄  
    //下面就利用這些中間代碼寫出最后的生成代碼
    
    fout.open("Code.cpp");
    
    fout<<"#include <stdlib.h>"<<endl;
    fout<<"#include <iostream>"<<endl;
    fout<<"using namespace std;"<<endl<<endl;
    
    //在主函數(shù)之前,將所有函數(shù)先寫入文件
    for(int i=1;i<=SegmentCount;i++)
    {
                                                          //寫入函數(shù)類型
        if(VariantKind[Segment2[i]]/100==8)              
            fout<<"void ";
        else
        {
            switch(VariantType[Segment2[1]]%100)
            {
            case 1:fout<<"int ";break;
            case 2:fout<<"real ";break;
            case 3:fout<<"bool ";break;
            default:break;
            }
        }                                             
        fout<<VariantName[Segment2[i]];                   //寫入函數(shù)名稱 
        fout<<"(";                                        //寫入?yún)?shù)信息  
        for(int j=1;j<=VariantHave[Segment2[i]];j++)
        {
            fout<<"int ";
            fout<<VariantName[Segment2[i]+j];             //寫入?yún)?shù)名稱  
            if(j<VariantHave[Segment2[i]])   
                fout<<" ,";
        }
        fout<<" )"<<endl;
        fout<<"{"<<endl;
        
        Write(i);
        
        fout<<"}"<<endl;
        fout<<"}"<<endl;
        
    }
    
    
    fout<<"int main(int argc,char** argv[])"<<endl;
    fout<<"{"<<endl;
                                                          //首先把所有變量聲明信息寫進(jìn)去 
    
    for(int i=1;i<=VariantCount;i++)
            if(VariantKind[i]/100==9)                     //首先要判斷是否為程序頭信息
            {                                           
                 fout<<"char* "<<VariantName[i]<<" ;"<<endl;  
                                                          //如果是,則將其定義為char* 類型      
            }
            else if((VariantBelong[i]/100==0)&&(VariantKind[i]/100==1)) 
                                                          //是全局變量
            {
                switch(VariantType[i]%100)
                {
                    case 0:fout<<"void "; break;
                    case 1:fout<<"int ";  break;
                    case 2:fout<<"real ";  break;
                    case 3:fout<<"bool ";  break;
                    default:break;
                }
                fout<<VariantName[i]<<" ;"<<endl;   
                
                
            }
      
     Write(0); 
     
     fout<<"system(\"PAUSE\");"<<endl<<"return 0; "<<endl<<"} "<<endl; //文件的尾部
     
     cout<<"total code born successful."<<endl;             //結(jié)束此過程,寫入文件完畢 
     
      
        
}

void runTime::Write(int num)
{
    
int state=0;

int i=-1;

    while(i<WordCount[num])
    {
        if(state==0) state=1;
        i++;
        if(strcmp(Word[num][i],"begin")==0)         //程序塊的頭
        {
              fout<<"{"<<endl;
              state+=50;
        }
        else if(strcmp(Word[num][i],"end")==0)      //程序塊的尾
        {
             if(state==10) fout<<"; }"<<endl;
             state-=50;
        }    
        else if(strcmp(Word[num][i],"while")==0)    //while
        {
             fout<<"while("<<endl;   
        }
        else if(strcmp(Word[num][i],"do")==0)       //do
        {
             fout<<") {"<<endl; 
        }
        else if(strcmp(Word[num][i],".")==0)        //程序結(jié)束 
        {
        
            fout<<" "<<endl;
        }
        else if(strcmp(Word[num][i],";")==0)        //遇到分號(hào),按照狀態(tài)處理 
        {
             if(state==10) fout<<"; }"<<endl;
             else fout<<";"<<endl;
             state=0;
        }
        else if(strcmp(Word[num][i],"read")==0)     //"讀"命令 
        {
            fout<<"cin>>";
            state=11;                                //將狀態(tài)該為讀狀態(tài)    
            i++;                                    //跳過后面的括號(hào) 
        }
        else if(strcmp(Word[num][i],"write")==0)    //"寫"命令 
        {
            fout<<"cout<<";
            state=12;                                //將狀態(tài)該為寫狀態(tài) 
            i++;   
        }
        else if(strcmp(Word[num][i],")")==0)        //只可能是"讀"或"寫"命令的 
        {
            state=1;
            fout<<";"<<endl;
            i++;
        }
        else if(strcmp(Word[num][i],",")==0)
        {
            if(state==11)
                fout<<">>";
            else if(state==12)
                fout<<"<<";
        }
        else if(strcmp(Word[num][i],"if")==0)
        {
            fout<<"if ( ";
        }
        else if(strcmp(Word[num][i],"then")==0)
        {
            fout<<" ){"<<endl;
        }
        else if(strcmp(Word[num][i],"else")==0)
        {
            fout<<"; }"<<endl<<"else{"<<endl;
            state=10;
        }
        else if(strcmp(Word[num][i],"while")==0)
        {
            fout<<Word[num][i];
        }
        else if((Word[num][i][0]>96)&&(Word[num][i][0]<124))
        {
            //遇到變量時(shí),需要判斷此是否為函數(shù)調(diào)用,如果是, 則將其后的括號(hào)中的內(nèi)容全部寫入 
            if(Word[num][i+1][0]=='(')
            {
                while(strcmp(Word[num][i+1],")")!=0)
                {
                    fout<<Word[num][i];
                    i++;
                }
                fout<<Word[num][i];
                fout<<")";
                i+=2;
            }
            else if(strcmp(Word[num][i],VariantName[Segment2[num]])==0)         
                                                    //如果是變量的返回值,則需要將其寫成return形式
            {
                fout<<" return ";
                i++; 
            } 
            else                                    //如果是一般變量則直接輸出 
            {
                fout<<Word[num][i];
            }
        }
        else                                        //遇到其他的字符,則直接將其輸出 
        {
            fout<<Word[num][i];
        }
    }
    if(state!=0) fout<<";"<<endl;
}



void runTime::ChangeWords(int num,int i)
{
    
        if(strcmp(Word[num][i],"number")==0)              //將除了變量以外的所有信息轉(zhuǎn)回原形 
            {
            _itoa(int(Value[num][i]),Word[num][i],10);
            }
        else if(strcmp(Word[num][i],"ids")==0)
            {
             strcpy(Word[num][i],VariantName[int(Value[num][i])]);
            }
        else if(strcmp(Word[num][i],"op")==0)
            {
            switch(int(Value[num][i]))
                {   
                case 1:strcpy(Word[num][i],"+");break;
                case 2:strcpy(Word[num][i],"-");break;
                case 3:strcpy(Word[num][i],"*");break;
                case 4:strcpy(Word[num][i],"/");break;
                case 5:strcpy(Word[num][i],"/");break;
                case 6:strcpy(Word[num][i],"%");break;
                default:break;
                }
            }
        else if(strcmp(Word[num][i],"def")==0)
            {
                switch(int(Value[num][i]))
                {
                    case 1:strcpy(Word[num][i],"int");break;
                    case 2:strcpy(Word[num][i],"double");break;
                    case 3:strcpy(Word[num][i],"bool");break;
                    default:break;
                }   
                    
            }
        else if(strcmp(Word[num][i],"relop")==0)
            {
                switch(int(Value[num][i]))
                {
                    case 0:strcpy(Word[num][i],"==");break;
                    case 1:strcpy(Word[num][i],">");break;
                    case 2:strcpy(Word[num][i],"<");break;
                    case 3:strcpy(Word[num][i],"<=");break;
                    case 4:strcpy(Word[num][i],">=");break;
                    case 5:strcpy(Word[num][i],"<>");break;
                    default:break;
                }  
            }
        else if(strcmp(Word[num][i],"assignop")==0)
        {
            strcpy(Word[num][i],"=");
        }
        else if((VariantKind[int(Value[num][i])]==800)||(VariantKind[int(Value[num][i])]==700))
            {
                if(strcmp(Word[num][i+1],"(")==0)             //如果它的下個(gè)字符是"("則作為函數(shù)
                      {
                      }
                else
                      { 
                                                              //就把它當(dāng)作一個(gè)返回值  
                      strcpy(Word[num][i],VariantName[int(Value[num][i])]);
                      strcat(Word[num][i],"[RunLayer]");  
                      }
            }
        
    

    
}





#endif

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩高清一级片| 中文字幕欧美一区| 风流少妇一区二区| 亚洲一区二区三区四区中文字幕| 日韩精品一区二区在线| av成人老司机| 紧缚捆绑精品一区二区| 亚洲综合图片区| 一区二区三区日韩欧美| 国产午夜亚洲精品不卡| 欧美精品xxxxbbbb| 91色porny在线视频| 九九久久精品视频| 美美哒免费高清在线观看视频一区二区| 欧美国产精品久久| 精品久久久久久久久久久院品网 | 亚洲人妖av一区二区| 欧美三级电影在线观看| 成人免费毛片片v| 国产在线乱码一区二区三区| 婷婷丁香久久五月婷婷| 玉米视频成人免费看| 国产精品二区一区二区aⅴ污介绍| 欧美一级欧美三级在线观看| 欧美亚洲日本一区| 91丨porny丨国产| 欧美午夜一区二区三区免费大片| 欧美喷潮久久久xxxxx| 欧美色综合影院| 日韩欧美的一区二区| 欧美激情一区二区在线| 一区二区成人在线| 免费视频最近日韩| 日韩激情视频网站| 丝袜美腿成人在线| 国产在线精品不卡| 国产在线一区二区| 97精品电影院| 日本高清不卡一区| 在线看日韩精品电影| 日本乱码高清不卡字幕| 日韩色在线观看| 久久综合狠狠综合| 国产亚洲一区二区三区| 亚洲毛片av在线| 久久国产免费看| 国模一区二区三区白浆| 色综合天天综合在线视频| 一本大道久久a久久精二百| 色婷婷综合视频在线观看| 91精品福利在线一区二区三区 | 国产精品国产自产拍高清av| 亚洲午夜一二三区视频| 一区二区三区高清| 国内精品伊人久久久久av影院| 972aa.com艺术欧美| 日韩天堂在线观看| 亚洲人成在线播放网站岛国| 久久精品理论片| 一本一道波多野结衣一区二区| 日韩一区二区在线观看视频 | 日韩av一区二区三区四区| 懂色av一区二区三区免费观看| 精品1区2区3区| 国产精品久久久久一区| 久久国内精品自在自线400部| 91极品视觉盛宴| 日本一区二区久久| 久久电影国产免费久久电影 | 国产亚洲精久久久久久| 亚洲成人高清在线| 另类小说综合欧美亚洲| 日本高清免费不卡视频| 国产精品污www在线观看| 国产精品综合二区| 色综合网站在线| 久久久www免费人成精品| 亚洲欧洲综合另类| 粉嫩av一区二区三区| 日韩三级视频在线看| 亚洲一区在线看| 91浏览器打开| 中文字幕日韩一区| 国产精品一区二区男女羞羞无遮挡 | 色婷婷久久一区二区三区麻豆| 久久久91精品国产一区二区精品 | 韩国精品在线观看| 欧美精品自拍偷拍动漫精品| 一区二区三区中文字幕电影| av动漫一区二区| 亚洲国产高清aⅴ视频| 国产一区不卡精品| 欧美精品一区视频| 一区二区三区.www| 91影视在线播放| 国产精品福利一区| www.欧美精品一二区| 中国av一区二区三区| 国产成人免费视频网站| 91麻豆精品国产91久久久久久久久| 日本一区二区在线不卡| 午夜精品福利一区二区蜜股av| 在线免费观看不卡av| 一区二区三区av电影 | 伊人一区二区三区| 97精品国产露脸对白| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 一区二区三区不卡视频 | 中文字幕一区二区三区蜜月| 国产**成人网毛片九色 | 精品综合久久久久久8888| 日韩欧美国产一区二区三区| 麻豆成人av在线| 久久久91精品国产一区二区精品 | 欧美成人精品1314www| 麻豆久久一区二区| 26uuu色噜噜精品一区二区| 国产一区二区三区香蕉| 欧美激情一区三区| 99视频精品免费视频| 一区二区三区.www| 3d成人h动漫网站入口| 精品在线亚洲视频| 欧美激情一区二区三区| 色婷婷av久久久久久久| 午夜婷婷国产麻豆精品| 欧美mv和日韩mv的网站| 国产成人综合自拍| 亚洲日本在线视频观看| 欧美日韩一级片网站| 美腿丝袜在线亚洲一区| 国产偷国产偷亚洲高清人白洁| 成人黄色在线视频| 国产日韩欧美不卡在线| 91免费视频观看| 丝袜亚洲另类欧美综合| 久久久电影一区二区三区| 91亚洲国产成人精品一区二三 | 精品视频在线免费观看| 六月丁香婷婷色狠狠久久| 国产精品无圣光一区二区| 欧美系列日韩一区| 精品一区二区日韩| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 在线观看免费一区| 久久国产成人午夜av影院| 国产精品久久久久精k8| 欧美电影在线免费观看| 国产福利精品导航| 亚洲一区在线视频| 亚洲精品在线观看网站| 日本精品裸体写真集在线观看| 日本网站在线观看一区二区三区 | 成人一级片网址| 亚洲宅男天堂在线观看无病毒 | 久久精品免费观看| 亚洲日本va午夜在线电影| 欧美成人官网二区| 一本大道久久a久久精品综合| 精一区二区三区| 亚洲高清久久久| 欧美激情一区二区三区蜜桃视频 | 亚洲综合视频网| 精品国产91九色蝌蚪| 在线观看一区二区精品视频| 国产尤物一区二区在线| 午夜精品免费在线| 国产精品电影一区二区| 欧美va亚洲va| 欧美精三区欧美精三区| 91在线一区二区三区| 国产另类ts人妖一区二区| 天天av天天翘天天综合网| 国产精品国产三级国产普通话99 | 精品精品欲导航| 欧美日韩国产高清一区| eeuss鲁片一区二区三区在线看| 美国毛片一区二区三区| 亚洲高清视频中文字幕| 亚洲嫩草精品久久| 久久久亚洲综合| 日韩欧美一区二区不卡| 欧美精选午夜久久久乱码6080| 91网址在线看| 成人免费电影视频| 国产制服丝袜一区| 久久国产婷婷国产香蕉| 天天操天天干天天综合网| 亚洲影院久久精品| 日韩理论片中文av| 国产精品久久免费看| 久久久久亚洲蜜桃| 精品久久久久99| 日韩精品一区二区在线观看| 欧美一级专区免费大片| 欧美日本一道本在线视频| 欧美色精品在线视频| 91久久人澡人人添人人爽欧美 | 亚洲色图清纯唯美| 国产精品三级视频|