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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? runtime.h

?? 一個Pascal子集語言的編譯器
?? H
?? 第 1 頁 / 共 2 頁
字號:
//RunTime.h


//inputfile:  words.txt, sentence.txt, wordtable2.txt
//outputfile: runtime.txt

#ifndef RUNTIME_H_
#define RUNTIME_H_

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

/*****************************************************************************************
    運行時刻環境 
     
    功能要求:
     
      1。首先讀取sentence.txt文件,判斷各個變量是否在其作用域內出現。 
      2。從words.txt文件中將各個模塊分別讀取出,并分別保存在各組變量里。 
      3。從程序的入口點進入程序,按順序輸出到目標文件,并在函數調用時判斷此段函數代碼是否
         寫過,如果沒寫過則將其寫到當前位置,如果寫過則轉移到以前寫過的位置。 
    
    
    步驟:
        
      1。首先判斷各個變量是否出現在其作用域內,并返回正確或錯誤信息
      2。分析words.txt文件,并將其分段落存入字符串組中去
      
        比如下面一段代碼:
        
        program example(input,output);
        var x,y:integer;

        procedure gcd(m,n:integer);
        var n:integer;
        begin
              n:=m ;
        end;
        
        begin
          read(x,y);
          write(gcd(x))
        end.
        
        將其存到數組中: 
        
        Word[0][0]="var" Word[0][1]="id" Word[0][2]="," Word[0][3]="id" Word[0][4]=":" 
        ...
        ..
        
        Word[1][0]="var" Word[1][1]="id" Word[1][2]=":" Word[1][3]="def" Word[1][4]=";" 
        Word[1][5]="begin" Word[1][6]="ids" Word[1][7]=":" Word[1][8]="ids" Word[1][9]=";" 
        Word[1][10]="end" Word[1][11]=";"
        
        并記錄信息:
        
        Segment[1]=0;   //記錄此變量的段落編號 
                        //以及各個參數信息 
        ParamentCount[0]=2  Parament[0][1]="input" Parament[0][2]="output"
        
        Segment[6]=1;
        
        ParamentCount[1]=2  Parament[1][1]="m" Parament[1][2]="n"
        
     3。將分析好的代碼按照執行時的順序寫到文件中去,如果遇到函數調用,則在其所在語句前加一
        個變量,使變量的值為此函數。 
        
        例如下面這段代碼:
        
        program example(input,output);
        var x,y:integer;

        procedure gcd(m,n:integer);
        var n:integer;
        begin
              n:=m ;
        end;
        
        begin
          read(x,y);
          write(gcd(x))
        end.
        
        將被轉換為:
          
        var x,y:integer;
        read(x,y);
        gcd:
        write(gcd(x))
        
        
******************************************************************************************/
class runTime
{
    private:
    
        ifstream fin1;                //定義文件讀取指針 
        ifstream fin2;                //定義文件讀取指針 
        ifstream fintable;            //讀取變量表的指針
        ofstream fout;                //將各個模塊按照執行順序寫入到目標文件中去 
        
         
        int CurrentLine;
        int Paraments; 
        int VariantIndex;
        int VariantCount;
        int VariantKind[100];
        int VariantType[100];
        int VariantHave[100];
        int VariantBelong[100];
        char VariantName[100][256];   //定義變量信息 
    
        char Temp[256];
    
    
        char Errors[20][256];         //保存了各種錯誤代碼信息 
        int Error_Count;              //記錄錯誤個數   
        char ErrorWord[256];          //記錄錯誤信息  
    
        char Word[10][100][256];      //記錄下每個模塊中每個詞的信息 
        int WordCount[10];            //記錄每個模塊里的單詞個數  
        double Value[10][100];        //記錄下每個詞的變量屬性 
        int Segment[100];             //返回每個模塊的編號值 
        int Segment2[100];            //設置一個模塊編號值的反查函數 
        int SegmentIndex;               
        int SegmentCount;
        
        int ParamentCount[100];       //記錄參數個數
        char Parament[100][10][256];  //記錄每個參數的名稱 
        
        int RunLayer;
        int RunCount;                 //記錄運行時刻調用函數的位置
                                      //包括層號和索引號  
        
        int Used[10];                 //在進行寫操作時判斷此模塊是否被寫過 
        int Begin;                    //每寫一段的開始位置 
        int Index[10];                //記錄每個段所寫到的位置 
        
        int Layer;                    //段落層信息,遇到begin進棧,遇到end出棧 
        
        
    protected:
    
        void Initialize();            //初始化各個參數和變量 
        int CheckWords();             //第一步:檢查所有的詞是否在自己的作用域內出現  
       
        void DefineError();
        void CatchError(int num);     //對錯誤的處理  
        
        void GetWords();              //從文件中讀取單詞 
        
    public:
    
        int Compile();
        void InitialWrite();                    //初始化 
        void CreatCode(char* filename);         //將代碼寫入文件 
        void ChangeWords(int num,int i);        //將單詞進行回寫 
        void Write(int num);                    //將每個模塊的代碼寫入文件
};

void runTime::DefineError()               //定義錯誤類型 
{
    strcpy(Errors[0]," not in it's active field ");
    
}

void runTime::InitialWrite()              //對寫文件進行初始化,此段代碼在CreateCode部分 
{
    RunLayer=0;
    RunCount=0;
    for(int i=0;i<10;i++)   Used[i]=0;

};


void runTime::CatchError(int num)         //將錯誤信息直接輸出 
{
    Error_Count++;
    cout<<"Error ("<<Error_Count<<"): \""<<ErrorWord<<"\" "<<Errors[num]<<" at line: "<<CurrentLine<<endl;
    
        
                
}

void runTime::Initialize()
{
    
    fintable.open("wordtable2.txt");        //打開單詞表文件 
    Error_Count=0;                          //將各個變量進行初始化 
    DefineError();
    
    while(fintable>>VariantIndex)
          fintable>>VariantKind[VariantIndex]
                  >>VariantType[VariantIndex]
                  >>VariantName[VariantIndex]
                  >>VariantHave[VariantIndex]
                  >>VariantBelong[VariantIndex];
                                            //將變量信息從單詞表中讀取出 
    

}

int runTime::CheckWords()
{
    int Value;
    //int state=0;
    fin1.open("sentence.txt");
    
    while(fin1>>CurrentLine>>Paraments)
    {
        while(fin1>>Temp)
        {
            if(strcmp(Temp,";")==0) break;
            
            if(strcmp(Temp,"ids")==0)
            {
                fin1>>Value;
                
                if((VariantBelong[Value]!=0)&&(VariantBelong[Value]/100!=0)&&(VariantBelong[Value]/100!=Paraments))
                                            //它的聲明既不在主程序中也不在此模塊內,說明調用錯誤 
                {
                    /*
                        輸出錯誤信息 
                    */
                    strcpy(ErrorWord,VariantName[Value]);
                    CatchError(0);
                    
                }
            }
        }
    }
    if(Error_Count==0)    

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩欧美在线综合网| 九九视频精品免费| 国产精品自在在线| 精品精品欲导航| 久久国产精品第一页| 91精品国产色综合久久| 日韩av中文字幕一区二区| 制服视频三区第一页精品| 视频一区欧美精品| 日韩亚洲欧美中文三级| 麻豆精品在线视频| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 欧美一区二区黄色| 人人狠狠综合久久亚洲| 日韩欧美资源站| 国产一区二区三区四| 欧美国产欧美综合| 96av麻豆蜜桃一区二区| 亚洲一区中文日韩| 欧美一区二区久久| 国产精品资源站在线| 一区精品在线播放| 欧美日韩精品系列| 激情欧美一区二区| 国产精品久久久久影院老司 | 亚洲线精品一区二区三区| 欧美日韩的一区二区| 奇米色一区二区| 久久久精品免费网站| 成人av在线电影| 亚洲福利国产精品| 日韩精品一区二区三区四区| 国产99久久久精品| 亚洲成人av资源| 2024国产精品| 欧美最猛黑人xxxxx猛交| 日本欧美一区二区在线观看| 国产日韩欧美高清| 欧美色偷偷大香| 国产麻豆视频一区二区| 一区二区三区影院| 精品日韩一区二区三区 | 精品制服美女丁香| 国产精品国产三级国产aⅴ中文 | 91国偷自产一区二区开放时间| 亚洲成人福利片| 中文字幕+乱码+中文字幕一区| 欧美性猛交xxxx乱大交退制版 | 日本亚洲最大的色成网站www| 久久精品视频在线看| 欧洲一区在线电影| 国产一区二区伦理| 亚洲成人av电影在线| 国产日产欧美一区二区视频| 欧美日韩国产色站一区二区三区| 国产在线视视频有精品| 亚洲综合久久久久| 欧美国产综合色视频| 91精品一区二区三区久久久久久 | 国产91露脸合集magnet| 爽好多水快深点欧美视频| 国产精品乱码一区二三区小蝌蚪| 91麻豆精品91久久久久久清纯| 成人av网站在线| 国内一区二区在线| 日韩中文字幕av电影| 亚洲男人的天堂在线aⅴ视频| 久久嫩草精品久久久精品| 欧美精品第1页| 色综合天天综合网天天狠天天| 国产乱一区二区| 青椒成人免费视频| 亚洲成人动漫在线免费观看| 最新国产精品久久精品| 国产欧美一区二区在线观看| 日韩欧美亚洲国产另类| 8x8x8国产精品| 欧美手机在线视频| 色狠狠一区二区三区香蕉| 国产黄色精品视频| 国产一区二区三区蝌蚪| 美国精品在线观看| 天堂一区二区在线| 香蕉久久夜色精品国产使用方法| 亚洲精品久久嫩草网站秘色| 国产精品久久久久影院| 久久精品日产第一区二区三区高清版 | 国产一区二区按摩在线观看| 男人的天堂亚洲一区| 爽好久久久欧美精品| 香蕉成人啪国产精品视频综合网| 亚洲一区免费在线观看| 一区二区三区加勒比av| 亚洲欧洲制服丝袜| 亚洲激情图片一区| 一区二区日韩电影| 亚洲第一电影网| 亚洲bt欧美bt精品777| 亚洲bt欧美bt精品777| 午夜精品一区二区三区电影天堂| 亚洲高清视频中文字幕| 偷拍一区二区三区| 欧美96一区二区免费视频| 蜜桃av一区二区在线观看| 蜜臀av一区二区在线观看| 美日韩一区二区| 国精产品一区一区三区mba视频| 精品亚洲国产成人av制服丝袜 | 欧美96一区二区免费视频| 久久成人久久鬼色| 国产精品77777竹菊影视小说| 懂色av一区二区三区免费观看| jlzzjlzz欧美大全| 欧美性生交片4| 欧美一级二级三级乱码| 久久奇米777| 综合av第一页| 天天综合天天综合色| 激情综合色播激情啊| 成人国产免费视频| 欧美视频一区二区三区| 日韩欧美一区中文| 中文字幕精品一区| 亚洲一区在线观看视频| 美女脱光内衣内裤视频久久网站| 国产乱对白刺激视频不卡| 91浏览器在线视频| 日韩女优av电影| 中文字幕不卡的av| 亚洲va中文字幕| 国产成人h网站| 欧美麻豆精品久久久久久| 久久久电影一区二区三区| 亚洲精品国产精华液| 日本欧美在线观看| 91在线视频18| 精品精品欲导航| 亚洲主播在线观看| 国产xxx精品视频大全| 欧美视频在线一区二区三区| 久久久久久久电影| 亚州成人在线电影| 91在线无精精品入口| 精品乱码亚洲一区二区不卡| 日本成人中文字幕在线视频| 国产99精品视频| 555夜色666亚洲国产免| 中文字幕一区二区三| 久久精品免费观看| 欧洲一区在线电影| 国产精品午夜久久| 激情综合网最新| 欧美男男青年gay1069videost| 国产精品久久久久久久裸模| 久久成人麻豆午夜电影| 欧美日韩卡一卡二| 亚洲欧洲99久久| 国产传媒一区在线| 日韩一区二区三区电影在线观看| 亚洲乱码国产乱码精品精的特点| 国产原创一区二区| 91精选在线观看| 亚洲电影一级黄| 欧美亚洲日本国产| 亚洲欧洲日韩综合一区二区| 国产一区二区三区久久久 | 欧美系列亚洲系列| 亚洲欧洲综合另类| 99久久er热在这里只有精品15| 久久久久成人黄色影片| 久久国产精品一区二区| 欧美精品久久一区二区三区| 亚洲第四色夜色| 欧美视频三区在线播放| 亚洲制服丝袜一区| 在线亚洲精品福利网址导航| 最新国产精品久久精品| 99精品久久99久久久久| 国产精品理伦片| 成人黄色免费短视频| 国产午夜亚洲精品午夜鲁丝片| 韩国v欧美v日本v亚洲v| 久久午夜羞羞影院免费观看| 精品亚洲国内自在自线福利| 日韩欧美国产不卡| 久久国产尿小便嘘嘘| 日韩欧美一级在线播放| 久久精品国产精品亚洲精品| 日韩精品影音先锋| 国产在线播精品第三| 久久久国产精品麻豆| 懂色av噜噜一区二区三区av| 国产精品久久久久久妇女6080 | 亚洲 欧美综合在线网络| 欧美日韩国产美| 蜜桃av一区二区| 久久人人爽爽爽人久久久| 国产乱码精品一区二区三区忘忧草| 国产片一区二区三区| 色综合久久88色综合天天免费|