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

📄 main.cs

📁 C语言来构造编译器的,十分详细的源代码
💻 CS
📖 第 1 页 / 共 5 页
字号:
            else if (huancun == 18) { huancun++; return "t18"; }
            else if (huancun == 19) { huancun++; return "t19"; }
            else if (huancun == 20) { huancun++; return "t20"; }
            else if (huancun == 21) { huancun++; return "t21"; }
            else if (huancun == 22) { huancun++; return "t22"; }
            else if (huancun == 23) { huancun++; return "t23"; }
            else if (huancun == 24) { huancun++; return "t24"; }
            else if (huancun == 25) { huancun++; return "t25"; }
            else if (huancun == 26) { huancun++; return "t26"; }
            else if (huancun == 27) { huancun++; return "t27"; }
            else if (huancun == 28) { huancun++; return "t28"; }
            else if (huancun == 29) { huancun++; return "t29"; }
            else if (huancun == 30) { huancun++; return "t30"; }
            else if (huancun == 31) { huancun++; return "t31"; }
            else if (huancun == 32) { huancun++; return "t32"; }
            else if (huancun == 33) { huancun++; return "t33"; }
            else if (huancun == 34) { huancun++; return "t34"; }
            else if (huancun == 35) { huancun++; return "t35"; }
            else if (huancun == 36) { huancun++; return "t36"; }
            else if (huancun == 37) { huancun++; return "t37"; }
            else if (huancun == 38) { huancun++; return "t38"; }
            else if (huancun == 39) { huancun++; return "t39"; }
            else if (huancun == 40) { huancun++; return "t40"; }
            else if (huancun == 41) { huancun++; return "t41"; }
            else if (huancun == 42) { huancun++; return "t42"; }
            else if (huancun == 43) { huancun++; return "t43"; }
            else if (huancun == 44) { huancun++; return "t44"; }
            else if (huancun == 45) { huancun++; return "t45"; }
            else if (huancun == 46) { huancun++; return "t46"; }
            else if (huancun == 47) { huancun++; return "t47"; }
            else if (huancun == 48) { huancun++; return "t48"; }
            else if (huancun == 49) { huancun++; return "t49"; }
            else if (huancun == 50) { huancun++; return "t50"; }

            else { huancun++; return "Error"; }

            
            
        }
        public string huacunpdcuan()//缓存判断(返回)【完成】
        {
            if (huancun == 1) { return "t0"; }//返回检测前面产生的t的值,因为产生t后huancun会++,所以就需要将t向下减一
            else if (huancun == 2) { return "t1"; }
            else if (huancun == 3) { return "t2"; }
            else if (huancun == 4) { return "t3"; }
            else if (huancun == 5) { return "t4"; }
            else if (huancun == 6) { return "t5"; }
            else if (huancun == 7) { return "t6"; }
            else if (huancun == 8) { return "t7"; }
            else if (huancun == 9) { return "t8"; }
            else if (huancun == 10) { return "t9"; }
            else if (huancun == 11) { return "t10"; }
            else if (huancun == 12) { return "t11"; }
            else if (huancun == 13) { return "t12"; }
            else if (huancun == 14) { return "t13"; }
            else if (huancun == 15) { return "t14"; }
            else if (huancun == 16) { return "t15"; }
            else if (huancun == 17) { return "t16"; }
            else if (huancun == 18) { return "t17"; }
            else if (huancun == 19) { return "t18"; }
            else if (huancun == 20) { return "t19"; }
            else if (huancun == 21) { return "t20"; }
            else if (huancun == 22) { return "t21"; }
            else if (huancun == 23) { return "t22"; }
            else if (huancun == 24) { return "t23"; }
            else if (huancun == 25) { return "t24"; }
            else if (huancun == 26) { return "t25"; }
            else if (huancun == 27) { return "t26"; }
            else if (huancun == 28) { return "t27"; }
            else if (huancun == 29) { return "t28"; }
            else if (huancun == 30) { return "t29"; }
            else if (huancun == 31) { return "t30"; }
            else if (huancun == 32) { return "t31"; }
            else if (huancun == 33) { return "t32"; }
            else if (huancun == 34) { return "t33"; }
            else if (huancun == 35) { return "t34"; }
            else if (huancun == 36) { return "t35"; }
            else if (huancun == 37) { return "t36"; }
            else if (huancun == 38) { return "t37"; }
            else if (huancun == 39) { return "t38"; }
            else if (huancun == 40) { return "t39"; }
            else if (huancun == 41) { return "t40"; }
            else if (huancun == 42) { return "t41"; }
            else if (huancun == 43) { return "t42"; }
            else if (huancun == 44) { return "t43"; }
            else if (huancun == 45) { return "t44"; }
            else if (huancun == 46) { return "t45"; }
            else if (huancun == 47) { return "t46"; }
            else if (huancun == 48) { return "t47"; }
            else if (huancun == 49) { return "t48"; }
            else if (huancun == 50) { return "t49"; }
            else { return "Error"; }



        }
        //以下的部分为输出
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        public void printf(string a, string b, string c, string d)//对内容像输出框进行输出【完成】
        {
            {
                richTextBox3.AppendText("L");//输出L
                richTextBox3.AppendText(hangshu.ToString());//输出行数
                hangshu++;//行数加一
            }
            richTextBox3.AppendText("  ");
            richTextBox3.AppendText("( ");//产生一个(
            richTextBox3.AppendText(a);//输出op
            int_out_pd(a);//输出
            shuchus(a);//输出
            richTextBox3.AppendText(" , ");//输出,
            richTextBox3.AppendText(b);//输出第一个id
            int_out_pd(b);//输出
            shuchus(b);//输出
            richTextBox3.AppendText(" , ");//输出,
            richTextBox3.AppendText(c);//输出第二个id
            int_out_pd(c);//输出
            shuchus(c);//输出
            richTextBox3.AppendText(" , ");//输出,
            richTextBox3.AppendText(d);//输出出口
            int_out_pd(d);//输出
            shuchus(d);//输出
            richTextBox3.AppendText(" )");//输出)
            richTextBox3.AppendText("\n\n");//换行
            //shuchus(" ");//输出空格//测试用
        }
        //以下是输出接口部分
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        public void shuchus(string r)//输出到优化部分的函数(string)【完成】
        {
            shuchu_s[shuchu_yuansu] = r;//将当前的值放入数组
            shuchu_yuansu++;//下一个值
        
        }
        public void shuchui(int r)//输出到优化部分的函数(int)【完成】
        {
            shuchu_i[shuchu_yuansu1] = r;//将当前的值放入数组
            shuchu_yuansu1++;//下一个值

        }
        //以下是行数产生 无条件跳转四元式产生 以及预判出口的函数
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        public string shuchu_hangshu(int b)//为跳转做准备输出行数【完成】
        {
            string a;//临时变量
            a = "L" + b.ToString();//产生行数
            return a;//返回行数
        
        }
        public void tiaozhuans(int b)//进行跳转的四元式的输出【完成】
        {
            shuchui(36);
            siyuanshi[0] = "j";//必为j
            shuchui(34);
            siyuanshi[1] = "_";//不存在
            shuchui(34);
            siyuanshi[2] = "_";//不存在
            shuchui(35);
            siyuanshi[3] = "L" + b;//跳转的行数
            printf(siyuanshi[0], siyuanshi[1], siyuanshi[2], siyuanshi[3]);//进行具体的输出

        
        }
        //以下为while的跳转判断
        /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        public int research()//检测跳转的行数【完成】
        {
            int j = 0, k = 0;//设临时变量
            while (now != 8)// endwhile 由于产生的四元式的数目等于其中加减乘除以及等号的数目,所以只判断其中符号的数目
            {
                xiayige(); j++;//向下进行,并且记录向下的数目,待会儿要返回来的
                if (now == 13 || now == 14 || now == 15 || now == 16 || now == 17)//当加减乘除以及等于是执行
                { k++; }//记录加减乘除以及等号的数目
            }
            while (j != 0)//返回来
            {
                shangyige();//上一个
                j--;//计数减一
            }
            //textBox1.Text = now.ToString();//测试用
            return k;//返回需要跳转的行数
        
        }
        public string int_out_pd(string t)//数据发送的int部分的编排【完成】
        {
            if (t == "t0" || t == "t1" || t == "t2" || t == "t3" || t == "t4" || t == "t5" || t == "t6" || t == "t7" || t == "t8" || t == "t9" || t == "t10" || t == "t11" || t == "t12" || t == "t13" || t == "t14" || t == "t15" || t == "t16" || t == "t17" || t == "t18" || t == "t19" || t == "t20" || t == "t21" || t == "t22" || t == "t23" || t == "t24" || t == "t25" || t == "t26" || t == "t27" || t == "t28" || t == "t29" || t == "t30" || t == "t31" || t == "t32" || t == "t33" || t == "t34" || t == "t35" || t == "t36" || t == "t37" || t == "t38" || t == "t39" || t == "t40" || t == "t41" || t == "t42" || t == "t43" || t == "t44" || t == "t45" || t == "t46" || t == "t47" || t == "t48" || t == "t49") { shuchui(33); return "succeed"; }//t
            else if (t == "L0" || t == "L1" || t == "L2" || t == "L3" || t == "L4" || t == "L5" || t == "L6" || t == "L7" || t == "L8" || t == "L9" || t == "L10" || t == "L11" || t == "L12" || t == "L13" || t == "L14" || t == "L15" || t == "L16" || t == "L17" || t == "L18" || t == "L19" || t == "L20" || t == "L21" || t == "L22" || t == "L23" || t == "L24" || t == "L25" || t == "L26" || t == "L27" || t == "L28" || t == "L29" || t == "L30" || t == "L31" || t == "L32" || t == "L33" || t == "L34" || t == "L35" || t == "L36" || t == "L37" || t == "L38" || t == "L39" || t == "L40" || t == "L41" || t == "L42" || t == "L43" || t == "L44" || t == "L45" || t == "L46" || t == "L47" || t == "L48" || t == "L49") { shuchui(35); return "succeed"; }//L
            else if (t == "+") { shuchui(13); return "succeed"; }//加
            else if (t == "-") { shuchui(14); return "succeed"; }//减
            else if (t == "*") { shuchui(15); return "succeed"; }//乘
            else if (t == "/") { shuchui(16); return "succeed"; }//除
            else if (t == "=") { shuchui(17); return "succeed"; }//赋值
            else if (t == ">=") { shuchui(18); return "succeed"; }//大于等于
            else if (t == "<=") { shuchui(19); return "succeed"; }//小于等于
            else if (t == ">") { shuchui(20); return "succeed"; }//大于
            else if (t == "<") { shuchui(21); return "succeed"; }//小于
            else if (t == "==") { shuchui(22); return "succeed"; }//等于
            else if (t == "!=") { shuchui(23); return "succeed"; }//不等于
            else if (t == "_") { shuchui(34); return "succeed"; }//_ 跳转中的空
            else { shuchui(69); return "succeed"; }//数字字符常量

⌨️ 快捷键说明

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