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

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

?? plxcompile.cs

?? 編譯器
?? CS
?? 第 1 頁 / 共 3 頁
字號:
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;

namespace PlxCompiler
{

    class PlxCompile
    {
        //一些數組的上界
        const int MAX_LINECHAR = 1024;
        const int MAX_NUMBERSIZE = 14;
        const int MAX_ANSICNUMBER = 128;
        const int MAX_INDENTFIERLEN = 36;
        const int MAX_INDENTNUMBER = 1024;
        const int MAX_CODENUMBER = 2048;
        const int MAX_STACKLIMIT = 2048;
        const int MAX_KEYWORD = 32;
        const int MAX_ERROR = 100;

        //
        const int plus = 0;                 //    +     
        const int minus = 1;                //    -     
        const int times = 2;                //    *    
        const int slash = 3;                //    /     
        const int remainder = 42;           //    %
        const int cifang = 43;                 //    x^y  ^
        const int lparen = 4;               //    (     
        const int rparen = 5;               //    )     
        const int eql = 6;                  //    =     
        const int comma = 7;                //    ,     
        const int semicolon = 8;            //    ;     
        const int period = 9;               //    .     
        const int lss = 10;                 //    <    
        const int gtr = 11;                 //    >    
        const int ident = 12;               //         
        const int number = 14;              //         
        const int becomes = 15;             //    :=    
        const int geq = 16;                 //    >=   
        const int leq = 17;                 //    <=   
        const int neql = 18;                //    /=   
        const int nul = 19;                 //         

        const int progsym = 20;
        const int intesym = 21;
        const int logisym = 22;
        const int constsym = 23;
        const int ifsym = 24;
        const int thensym = 25;
        const int elsesym = 26;
        const int whilesym = 27;
        const int repeasym = 28;
        const int beginsym = 29;
        const int endsym = 30;
        const int orsym = 31;
        const int andsym = 32;
        const int xorsym = 42;
        const int notsym = 33;
        const int truesym = 34;
        const int falsesym = 35;
        const int dosym = 36;
        const int untilsym = 37;
        const int writesym = 38;
        const int procsym = 39;
        const int callsym = 40;
        const int term = 41;            /*  結束    */
        const int commentsym = 100;

        public Form1 form1;
        //構造函數
        public PlxCompile(Form1 parent)
        {
            cc = ll = 0;
            tx = 0;                   /* 用0專門來做查詢 */
            cx = 0;
            dx = 0;
            lev = 0;

            errornum = 0;

            lineIndex = 1;
            //各種數組的實例化
            id = "";
            word = new string[MAX_KEYWORD];
            line = "";          //當前行字符  
            wsym = new int[MAX_KEYWORD];            //關鍵字索引  
            a = "";        //標識符緩存  
            ssym = new int[MAX_ANSICNUMBER];        //運算符索引  
            s = new int[MAX_STACKLIMIT];            //運行棧      
            code = new CODE[MAX_CODENUMBER];        //存儲代碼的數組
            table = new TABLE[MAX_INDENTNUMBER];
            errorMax = MAX_ERROR;
            form1 = parent;


            word[0] = "program";
            word[1] = "integer";
            word[2] = "logical";
            word[3] = "const";
            word[4] = "if";
            word[5] = "then";
            word[6] = "else";
            word[7] = "while";
            word[8] = "repeat";
            word[9] = "begin";
            word[10] = "end";
            word[11] = "or";
            word[12] = "and";
            word[13] = "not";
            word[14] = "true";
            word[15] = "false";
            word[16] = "do";
            word[17] = "until";
            word[18] = "write";
            word[19] = "procedure";
            word[20] = "call";
            word[21] = "xor";

            wsym[0] = progsym;
            wsym[1] = intesym;
            wsym[2] = logisym;
            wsym[3] = constsym;
            wsym[4] = ifsym;
            wsym[5] = thensym;
            wsym[6] = elsesym;
            wsym[7] = whilesym;
            wsym[8] = repeasym;
            wsym[9] = beginsym;
            wsym[10] = endsym;
            wsym[11] = orsym;
            wsym[12] = andsym;
            wsym[13] = notsym;
            wsym[14] = truesym;
            wsym[15] = falsesym;
            wsym[16] = dosym;
            wsym[17] = untilsym;
            wsym[18] = writesym;
            wsym[19] = procsym;
            wsym[20] = callsym;
            wsym[21] = xorsym;

            for (int i = 0; i < 128; i++)
                ssym[i] = -1;

            ssym['+'] = plus;
            ssym['-'] = minus;
            ssym['*'] = times;
            ssym['/'] = slash;
            ssym['%'] = remainder;
            ssym['^'] = cifang;
            ssym['('] = lparen;
            ssym[')'] = rparen;
            ssym['='] = eql;
            ssym[','] = comma;
            ssym[';'] = semicolon;
            ssym['.'] = period;
            ssym['<'] = lss;
            ssym['>'] = gtr;
            ssym['$'] = term;

        }

        // 文件操作
        public void FileOpen(string filename)
        {
            try
            {
                FileIn = File.OpenText(filename);
            }
            catch (Exception e)
            {
                error(0);
            }
        }
        public void FileOpen()
        {
            try
            {
                FileIn = File.OpenText(FilePath);
            }
            catch (IOException e)
            {
                error(0);
            }
        }
        public bool FileClose()
        {
            try
            {
                FileIn.Close();
                return true;
            }
            catch (IOException e)
            {
                error(-1);
                return false;
            }
        }
        private string FilePath;
        private StreamReader FileIn;

        private void error(string a)
        {
            errornum++;
            if (errornum > errorMax) return;
            form1.outerror("ERROR"+errornum+" 行號: "+(lineIndex-1)+":列號: "+ll+" "+line+ch+ " "+  a+"\r\n");
            
        }
        private void error(string a, int b)
        {
            errornum++;
            if (errornum > errorMax) return;
            form1.outerror("ERROR" + errornum + " 行號-" + (lineIndex - 1) + ":列號-" + ll + " " + line + a + "\r\n");
        }
        private void error(int errorNo)
        {
            errornum++;
            if (errornum > errorMax) return;

        }

        // 詞法分析  
        int cc;                         //當前字符號  
        int ll;                         //當前行數目  
        string line;                    //當前行字符  
        char ch;                        //當前讀取字符
        int lineIndex;                  //當前行號    

        string[] word;                  //關鍵字串   
        int[] wsym;                     //關鍵字索引 
        string a;                       //標識符緩存  
        int[] ssym;                     //運算符索引  

        string id;                      //三種變量緩存
        int sym;
        int num;

        void getch()
        {
            if (cc != ll)
            {
                ch = line[cc++];
                return;

            }
            else
            {
                if (FileIn.EndOfStream)
                {
                    ch = '$';
                    return;
                }
            }

            cc = ll = 0;

            lineIndex++;
            //char[] temp = (FileIn.ReadLine()).ToCharArray();
            line = FileIn.ReadLine() + " "; //temp;
            ll = line.Length;
            //line[ll++] = ' ';

            ch = line[cc++];
        }
        void getsym()
        {
            while (ch == ' ' || ch == 9) getch();

            /* 字符串識別 */
            if (ch <= 'z' && ch >= 'a')
            {
                int i = 0;
                a = "";

                do
                {
                    if (i < MAX_INDENTFIERLEN - 1)
                    {
                        //a.Insert(i++,ch+"");
                        a = a + ch;
                        i++;

                    }
                    else
                    {
                        break;
                    }
                    getch();
                }
                while ((ch <= 'z' && ch >= 'a') || (ch <= '9' && ch >= '0'));
                id = String.Copy(a);
                sym = ident;

                for (i = 0; i < MAX_KEYWORD; i++)
                {

                    if (id.Equals(word[i]))
                    {
                        sym = wsym[i]; break;
                    }
                }
            }
            else
            {
                /* 數字識別 */
                if (ch <= '9' && ch >= '0')
                {
                    int i = 0;
                    num = 0;

                    do
                    {
                        i++;
                        num = 10 * num + ((int)ch - '0');
                        getch();
                    }
                    while (ch <= '9' && ch >= '0');

                    if (i > MAX_NUMBERSIZE)
                    {
                        error("數字的位數超出范圍!");
                    }

                    sym = number;

                }
                else
                {
                    /* 賦值號識別 */
                    if (ch == ':')
                    {
                        getch();

                        if (ch == '=')
                        {
                            getch();

                            sym = becomes;
                        }
                        else
                        {
                            error("賦值符號缺少 '=' 符號!");
                        }
                    }
                    else
                    {
                        /* 小于號識別 */
                        if (ch == '<')
                        {
                            getch();

                            if (ch == '=')
                            {
                                sym = leq;
                                getch();
                            }
                            else
                            {
                                sym = lss;
                            }
                        }
                        else
                        {
                            /* 大于號識別 */
                            if (ch == '>')
                            {
                                getch();

                                if (ch == '=')
                                {
                                    getch();
                                    sym = geq;
                                }
                                else
                                {
                                    sym = gtr;
                                }
                            }
                            else
                            {
                                if (ch == '/')
                                {
                                    getch();

                                    /*注釋處理 */
                                    if (ch == '/')
                                    {
                                        getch();

                                        cc = ll;
                                        sym = commentsym;

                                        getch();

                                        getsym();

                                        return;
                                    }
                                    else
                                    {
                                        /* C注釋處理 */
                                        if (ch == '*')
                                        {
                                            getch();

                                            while (true)
                                            {
                                                while (ch != '*')
                                                {
                                                    getch();

                                                    if (ch == '$')
                                                    {
                                                        sym = term;
                                                        error("缺少注釋邊界!");

                                                        return;
                                                    }
                                                }

                                                getch();

                                                if (ch == '/')
                                                {
                                                    getch();
                                                    sym = commentsym;

                                                    getsym();

                                                    break;
                                                }
                                            }
                                        }
                                        /* 不等于處理 */
                                        else
                                        {
                                            if (ch == '=')
                                            {
                                                getch();
                                                sym = neql;

                                            }
                                            else
                                            {
                                                sym = slash;
                                            }
                                        }
                                    }
                                }
                                else
                                {
                                    if (ch > 0 && ch < 129)
                                    {
                                        sym = ssym[ch];

                                        if (sym == -1)
                                        {
                                            error("使用不合法標識符!");
                                        }

                                        getch();
                                    }
                                    else
                                    {
                                        error("未知名的字符! ");
                                        getch();
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        //public static void Main()
        //{
        //    PlxCompile plx = new PlxCompile();
        //    plx.FileOpen("D:\\C#\\procedure.plx");
        //    plx.Compiler();
        //    plx.showCode();
        //    plx.interpret();
        //    Console.WriteLine(plx.lineIndex);
        //}


        /*  語法分析  */
        public enum vartype : int { varConst, varInteger, varLogical, varProc };
        //typedef enum _kind  _kind;

        /* 變量,過程存儲數據結構 */
        public struct TABLE
        {
            public string name;
            public vartype kind;
            public int adr;
            public int level;
            public int size;
            public int val;
        };
        TABLE[] table;                          //  存儲區       
        int tx;                                 //  table表指針 

        int lev;                                //  靜態層次計數 
        int dx;                                 //  局部變量指針 
        public int errornum;                    //  語法錯誤數目 
        public int errorMax;

        //enter
        void enter(vartype indent) /*  變量入表函數 */
        {
            if (position(id) != 0)
            {
                error("重復定義!");

            }
            else
            {
                tx++;

                table[tx].name = String.Copy(id);
                table[tx].kind = indent;

                switch (indent)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
韩国av一区二区| 91官网在线观看| 国产麻豆视频一区二区| 一本色道久久综合亚洲aⅴ蜜桃| 欧美午夜电影网| 国产亚洲一区字幕| 男女男精品视频网| 日本韩国欧美在线| 国产精品视频免费看| 日韩av在线播放中文字幕| 91片在线免费观看| 久久五月婷婷丁香社区| 日本网站在线观看一区二区三区 | 精品国产伦一区二区三区观看体验| 亚洲欧美色图小说| 成人性生交大片免费看中文网站| 制服丝袜日韩国产| 亚洲一区在线播放| 91视视频在线观看入口直接观看www | 欧美精品一级二级| 一区二区视频在线看| av在线不卡观看免费观看| 2024国产精品| 精品亚洲欧美一区| 精品久久久久久亚洲综合网 | 欧美精品亚洲二区| 亚洲国产视频网站| 欧美日韩精品欧美日韩精品| 亚洲精品国产一区二区精华液 | 亚洲综合一区在线| 日本黄色一区二区| 亚洲大尺度视频在线观看| 在线精品视频免费观看| 亚洲九九爱视频| 在线观看av一区| 午夜国产不卡在线观看视频| 欧美男人的天堂一二区| 奇米亚洲午夜久久精品| 日韩精品中文字幕一区二区三区| 卡一卡二国产精品| 精品国产乱码久久久久久免费| 久久99国产精品久久| 久久久久久久久久久99999| 丁香六月综合激情| 亚洲欧美二区三区| 91麻豆精品国产91久久久| 老汉av免费一区二区三区| 久久色.com| www.综合网.com| 一区二区三区高清| 91精品国产手机| 国产二区国产一区在线观看| 国产精品嫩草影院av蜜臀| 91丝袜国产在线播放| 性久久久久久久久久久久| 欧美成人精精品一区二区频| 成人午夜免费电影| 亚洲综合色噜噜狠狠| 日韩精品专区在线| 不卡一区二区三区四区| 夜夜嗨av一区二区三区中文字幕| 欧美精品第1页| 国产成人精品网址| 亚洲国产欧美日韩另类综合| 精品久久人人做人人爽| 色综合久久六月婷婷中文字幕| 亚洲国产综合色| 久久久久久久久99精品| 在线免费观看成人短视频| 久色婷婷小香蕉久久| 亚洲日本乱码在线观看| 日韩一区国产二区欧美三区| 粉嫩嫩av羞羞动漫久久久| 亚洲超碰精品一区二区| 日本一区二区不卡视频| 欧美一区二区高清| av电影天堂一区二区在线观看| 五月天视频一区| 国产精品伦一区| 欧美sm美女调教| 欧美三级韩国三级日本一级| 国产福利一区二区三区在线视频| 亚洲电影在线免费观看| 国产精品丝袜黑色高跟| 日韩女优电影在线观看| 日本乱人伦aⅴ精品| 国产精品综合视频| 日本亚洲天堂网| 亚洲精品视频在线看| 国产亚洲成aⅴ人片在线观看| 7777女厕盗摄久久久| 色婷婷综合久久| 99视频在线观看一区三区| 黑人巨大精品欧美一区| 五月激情六月综合| 亚洲综合视频在线观看| 亚洲手机成人高清视频| 国产欧美视频在线观看| 欧美一区二区精品久久911| 91精品国产综合久久久久久| 色婷婷激情综合| 色香色香欲天天天影视综合网| 国产激情视频一区二区三区欧美 | 一区二区日韩电影| 国产精品久久夜| 欧美激情在线一区二区三区| 日韩欧美高清dvd碟片| 91精品国产美女浴室洗澡无遮挡| 欧美天天综合网| 欧美性大战xxxxx久久久| 欧美午夜精品电影| 欧美色欧美亚洲另类二区| 色婷婷av久久久久久久| 91在线免费视频观看| 99视频精品在线| 91首页免费视频| 欧美在线你懂得| 欧美系列一区二区| 在线电影国产精品| 日韩一区二区三免费高清| 91精品免费在线| 日韩欧美色综合| 久久久亚洲欧洲日产国码αv| 欧美精品一区二区三区高清aⅴ | 国产精品18久久久久久vr| 狠狠色综合日日| 国产成人a级片| 99国产欧美另类久久久精品 | 成人毛片老司机大片| 92国产精品观看| 欧美色图天堂网| 日韩一区二区三区在线| 久久久.com| 亚洲日本在线视频观看| 日韩福利电影在线观看| 久久精品国内一区二区三区| 国产成人自拍高清视频在线免费播放| 国产成人精品1024| 欧美艳星brazzers| 久久综合久久综合亚洲| 中文字幕乱码日本亚洲一区二区| 一区二区在线看| 日本不卡的三区四区五区| 国产一区91精品张津瑜| 色哟哟一区二区三区| 欧美一二三区精品| 国产精品国产三级国产a| 亚洲成人一区二区在线观看| 精品一区二区综合| 99久久伊人久久99| 欧美一区二区三区视频在线| 欧美韩国日本综合| 婷婷成人综合网| 岛国av在线一区| 欧美日韩高清不卡| 欧美国产一区在线| 日韩av二区在线播放| 播五月开心婷婷综合| 日本一区二区三区免费乱视频| 有坂深雪av一区二区精品| 久色婷婷小香蕉久久| 91久久国产综合久久| 久久蜜臀精品av| 偷拍一区二区三区四区| 大桥未久av一区二区三区中文| 制服丝袜激情欧洲亚洲| 亚洲欧美乱综合| 国产福利一区二区| 日韩欧美综合在线| 一区二区三区在线影院| 国内精品自线一区二区三区视频| 91麻豆成人久久精品二区三区| 亚洲精品一区在线观看| 亚洲国产精品久久人人爱| 成人妖精视频yjsp地址| 日韩欧美在线影院| 亚洲一区二区三区四区五区中文| 国产mv日韩mv欧美| 精品欧美乱码久久久久久1区2区| 亚洲尤物在线视频观看| 91丝袜美女网| 日韩码欧中文字| 不卡的av在线| 欧美韩国日本不卡| 国产精品一色哟哟哟| 日韩精品一区二区三区视频| 午夜国产精品一区| 欧美日韩国产另类一区| 亚洲欧美日韩国产中文在线| www.日韩大片| 国产精品嫩草影院av蜜臀| 成人在线视频一区| 久久精品欧美日韩| 粉嫩aⅴ一区二区三区四区 | 玉米视频成人免费看| 99精品1区2区| 亚洲蜜臀av乱码久久精品蜜桃| av资源网一区| 日韩伦理免费电影| 色婷婷av一区二区三区大白胸|