Пример #1
0
        public void TestSetup()
        {
            busOperator         = new BOperator();
            operator_testObject = new Operator();

            #region Operator
            operatorTA.Insert(ADOPerson1.ID, true, ADOFlow1.ID, "");
            operatorTA.Insert(ADOPerson3.ID, true, ADOFlow2.ID, "");

            DatasetGatewayWorkFlow.TA_OperatorDataTable opTable = operatorTA.GetByPesonId(ADOPerson1.ID);
            ADOOperator1.ID = (opTable.Rows[0] as DatasetGatewayWorkFlow.TA_OperatorRow).opr_ID;

            opTable         = operatorTA.GetByPesonId(ADOPerson3.ID);
            ADOOperator2.ID = (opTable.Rows[0] as DatasetGatewayWorkFlow.TA_OperatorRow).opr_ID;


            #endregion
        }
Пример #2
0
 public static void F_Parser(ref WordType[] tt, ref int tt_i, ref MyArray[] a, ref int a_i, ref string parseresult, ref Dictionary <string, int> varmap, ref Dictionary <string, string> varmap2, ref Dictionary <string, MyArray> varmap3, int start_num, int end_num)
 {
     for (tt_i = start_num; tt_i < end_num && tt[tt_i] != null;)
     {
         if (tt[tt_i].Type.Equals("auto"))
         {
             try
             {
                 Auto.M_Auto(ref tt, ref tt_i, ref a, ref a_i, ref parseresult, ref varmap, ref varmap2, ref varmap3);
             }
             catch (WrongGrammarException e)
             {
                 Console.WriteLine(e.ToString());
                 Console.Write(e.StackTrace);
             }
             catch (NotAVarException e)
             {
                 Console.WriteLine(e.ToString());
                 Console.Write(e.StackTrace);
             }
         }
         else if (tt[tt_i].Type.Equals("putnumb"))
         {
             try
             {
                 Putnumb.Put_numb(ref tt, ref tt_i, ref a, ref a_i, ref parseresult, ref varmap, ref varmap2, ref varmap3);
             }
             catch (NotDefineVarException e)
             {
                 Console.WriteLine(e.ToString());
                 Console.Write(e.StackTrace);
             }
             catch (WrongGrammarException e)
             {
                 Console.WriteLine(e.ToString());
                 Console.Write(e.StackTrace);
             }
             catch (NotAVarException e)
             {
                 Console.WriteLine(e.ToString());
                 Console.Write(e.StackTrace);
             }
         }
         else if (tt[tt_i].Type.Equals("putchar"))
         {
             try
             {
                 Putchar.Put_char(ref tt, ref tt_i, ref a, ref a_i, ref parseresult, ref varmap, ref varmap2, ref varmap3);
             }
             catch (NotDefineVarException e)
             {
                 Console.WriteLine(e.ToString());
                 Console.Write(e.StackTrace);
             }
             catch (WrongGrammarException e)
             {
                 Console.WriteLine(e.ToString());
                 Console.Write(e.StackTrace);
             }
         }
         else if (tt[tt_i].Code.Equals("++") || tt[tt_i].Code.Equals("--"))
         {
             try
             {
                 UnaryOperation.Unary_Operation(ref tt, ref tt_i, ref a, ref a_i, ref parseresult, ref varmap, ref varmap2, ref varmap3);
             }
             catch (NotDefineVarException e)
             {
                 Console.WriteLine(e.ToString());
                 Console.Write(e.StackTrace);
             }
             catch (WrongGrammarException e)
             {
                 Console.WriteLine(e.ToString());
                 Console.Write(e.StackTrace);
             }
         }
         else if (tt[tt_i].Type.Equals("operator"))
         {
             try
             {
                 BOperator.Operator(ref tt, ref tt_i, ref a, ref a_i, ref parseresult, ref varmap, ref varmap2, ref varmap3);
             }
             catch (NotAVarException e)
             {
                 Console.WriteLine(e.ToString());
                 Console.Write(e.StackTrace);
             }
             catch (NotDefineVarException e)
             {
                 Console.WriteLine(e.ToString());
                 Console.Write(e.StackTrace);
             }
         }
         else if (tt[tt_i].Type.Equals("getchar"))
         {
             try
             {
                 Getchar.Get_char(ref tt, ref tt_i, ref a, ref a_i, ref parseresult, ref varmap, ref varmap2, ref varmap3);
             }
             catch (NotDefineVarException e)
             {
                 Console.WriteLine(e.ToString());
                 Console.Write(e.StackTrace);
             }
             catch (WrongGrammarException e)
             {
                 Console.WriteLine(e.ToString());
                 Console.Write(e.StackTrace);
             }
         }
         else
         {
             tt_i++;
         }
     }
     return;
 }
Пример #3
0
 public static void Parser_ReNamed2(ref WordType[] tt, ref int tt_i, ref MyArray[] a, ref int a_i, ref string parseresult, ref Dictionary<string, int> varmap, ref Dictionary<string, string> varmap2, ref Dictionary<string, MyArray> varmap3, int start_num, int end_num, int eend_num)
 {
     try
     {
         for (tt_i = start_num; tt_i < end_num && tt[tt_i] != null; )
         {
             // 读取到auto关键字,跳转到auto函数处理
             if (tt[tt_i].Type.Equals("auto"))
             {
                 Auto.M_Auto(ref tt, ref tt_i, ref a, ref a_i, ref parseresult, ref varmap, ref varmap2, ref varmap3);
             }
             // 读取到putnumb关键字,跳转到putnumb函数,输出数值型变量值
             else if (tt[tt_i].Type.Equals("putnumb"))
             {
                 Putnumb.Put_numb(ref tt, ref tt_i, ref a, ref a_i, ref parseresult, ref varmap, ref varmap2, ref varmap3);
             }
             // 读取到putchar关键字,跳转到putchar函数,输出字符型型变量值
             else if (tt[tt_i].Type.Equals("putchar"))
             {
                 Putchar.Put_char(ref tt, ref tt_i, ref a, ref a_i, ref parseresult, ref varmap, ref varmap2, ref varmap3);
             }
             // 单目运算,自增自减
             else if (tt[tt_i].Code.Equals("++") || tt[tt_i].Code.Equals("--"))
             {
                 UnaryOperation.Unary_Operation(ref tt, ref tt_i, ref a, ref a_i, ref parseresult, ref varmap, ref varmap2, ref varmap3);
             }
             // 读取到类型为operator,即操作符类型,跳转到operator函数
             else if (tt[tt_i].Type.Equals("operator"))
             {
                 BOperator.Operator(ref tt, ref tt_i, ref a, ref a_i, ref parseresult, ref varmap, ref varmap2, ref varmap3);
             }
             // 读取到关键字getchar,跳转到getchar函数进行获取字符串输入操作
             else if (tt[tt_i].Type.Equals("getchar"))
             {
                 Getchar.Get_char(ref tt, ref tt_i, ref a, ref a_i, ref parseresult, ref varmap, ref varmap2, ref varmap3);
             }
             // 读取到关键字getnumb,跳转到getnumb函数进行获取数值输入操作
             else if (tt[tt_i].Type.Equals("getnumb"))
             {
                 Getnumb.Get_numb(ref tt, ref tt_i, ref a, ref a_i, ref parseresult, ref varmap, ref varmap2, ref varmap3);
             }
             // 读取到note关键字, 跳转到Note函数处理注释
             else if (tt[tt_i].Type.Equals("note"))
             {
                 Note.M_Note(ref tt, ref tt_i, ref a, ref a_i, ref parseresult, ref varmap, ref varmap2, ref varmap3);
             }
             // 读取到putstr函数,输出数组
             else if (tt[tt_i].Type.Equals("putstr"))
             {
                 Putstr.Put_str(ref tt, ref tt_i, ref a, ref a_i, ref parseresult, ref varmap, ref varmap2, ref varmap3);
             }
             // 都不满足就将tt_i下标加1,不作处理
             else
             {
                 tt_i++;
             }
         }
     }
     catch (NotDefineVarException e)
     {
         Console.WriteLine(e.ToString());
         Console.Write(e.StackTrace);
     }
     catch (NotAVarException e)
     {
         Console.WriteLine(e.ToString());
         Console.Write(e.StackTrace);
     }
     catch (WrongGrammarException e)
     {
         Console.WriteLine(e.ToString());
         Console.Write(e.StackTrace);
     }
     tt_i = eend_num;
     return;
 }
Пример #4
0
    public static void M_Auto(ref WordType[] tt, ref int tt_i, ref MyArray[] a, ref int a_i, ref string parseresult, ref Dictionary <string, int> varmap, ref Dictionary <string, string> varmap2, ref Dictionary <string, MyArray> varmap3)
    {
        // 如果是要定义数组,判断是否为变量[数值]结构
        if (tt[tt_i + 1].Type.Equals("var") && tt[tt_i + 2].Code.Equals("[") && tt[tt_i + 3].Type.Equals("number") && tt[tt_i + 4].Code.Equals("]"))
        {
            // 将B语言规定的数组长度保存为临时变量temp中
            int temp = int.Parse(tt[tt_i + 3].Code);

            // 创建一个MyArray类保存该数组
            a[a_i++] = new MyArray(tt[tt_i + 1].Code, temp);

            // 有以下标,至逗号或分号处
            tt_i += 4;

            // 如果下一位是分号则返回出去
            if (tt[tt_i + 1].Code.Equals(";"))
            {
                tt_i++;
                return;
                // 如果下一位是逗号,则递归
            }
            else if (tt[tt_i + 1].Code.Equals(","))
            {
                tt_i++;
                M_Auto(ref tt, ref tt_i, ref a, ref a_i, ref parseresult, ref varmap, ref varmap2, ref varmap3);
                // 若在他们之后不是逗号和分号,则报出语法错误并终止程序
            }
            else
            {
                parseresult += "定义变量语句出错\r\n";
                throw new WrongGrammarException("定义变量语句出错");
            }
            // 如果下一位是变量,则放入变量栈中
        }
        else if (tt[tt_i + 1].Type.Equals("var"))
        {
            // 同时放入数值型和字符串型变量map中
            varmap[tt[tt_i + 1].Code]  = 0;
            varmap2[tt[tt_i + 1].Code] = null;

            // 将下标右移至变量处
            tt_i++;

            // 如果下下一位是分号,则下标加一并返回去
            if ((tt[tt_i + 1].Code.Equals(";")))
            {
                tt_i++;
                return;
                // 如果下一位是等号,则进行赋值处理后返回主函数
            }
            else if ((tt[tt_i + 1].Code.Equals("=")))
            {
                tt_i++;
                try
                {
                    BOperator.Operator(ref tt, ref tt_i, ref a, ref a_i, ref parseresult, ref varmap, ref varmap2, ref varmap3);
                }
                catch (NotDefineVarException e)
                {
                    Console.WriteLine(e.ToString());
                    Console.Write(e.StackTrace);
                }
                return;
                // 如果下一位是逗号,则递归
            }
            else if (tt[tt_i + 1].Code.Equals(","))
            {
                tt_i++;
                M_Auto(ref tt, ref tt_i, ref a, ref a_i, ref parseresult, ref varmap, ref varmap2, ref varmap3);
                // 如果不是上述情况,则出现语法错误,报错并终止程序
            }
            else
            {
                parseresult += "定义变量语句出错\r\n";
                throw new WrongGrammarException("定义变量语句出错");
            }
            // 如果不是上述情况,则出现语法错误,报错并终止程序
        }
        else
        {
            parseresult += "定义变量语句出错\r\n";
            throw new WrongGrammarException("定义变量语句出错");
        }
    }
Пример #5
0
        private IList <RoleCustomCodeType> GetCurrentUserBusinessRole()
        {
            try
            {
                IList <RoleCustomCodeType> roles = new List <RoleCustomCodeType>();

                if (!SessionHelper.HasSessionValue(SessionHelper.GTSCurrentUserManagmentState))
                {
                    bool isManager = new BManager().GetManager(personId).ID > 0 ? true : false;

                    bool isSubstitute = new BSubstitute().GetSubstituteManager(personId) > 0 ? true : false;

                    bool isOperator = new BOperator().IsOperator();

                    Dictionary <string, object> ManagementState = new Dictionary <string, object>();


                    if (isManager)
                    {
                        Role role = new BRole().GetRoleByCode(RoleCustomCodeType.Manager);
                        if (role != null)
                        {
                            ManagementState.Add("ManagerRoleId", role.ID);
                        }
                    }
                    if (isOperator)
                    {
                        Role role = new BRole().GetRoleByCode(RoleCustomCodeType.Operator);
                        if (role != null)
                        {
                            ManagementState.Add("OperatorRoleId", role.ID);
                        }
                    }
                    if (isSubstitute)
                    {
                        Role role = new BRole().GetRoleByCode(RoleCustomCodeType.Substitute);
                        if (role != null)
                        {
                            ManagementState.Add("SubstituteRoleId", role.ID);
                        }
                    }

                    ManagementState.Add("IsManager", isManager);
                    ManagementState.Add("IsOperator", isOperator);
                    ManagementState.Add("IsSubstitute", isSubstitute);

                    SessionHelper.SaveSessionValue(SessionHelper.GTSCurrentUserManagmentState, ManagementState);
                }

                Dictionary <string, object> managementState = (Dictionary <string, object>)SessionHelper.GetSessionValue(SessionHelper.GTSCurrentUserManagmentState);

                if (Utility.ToBoolean(managementState["IsManager"]))
                {
                    roles.Add(RoleCustomCodeType.Manager);
                }

                if (Utility.ToBoolean(managementState["IsOperator"]))
                {
                    roles.Add(RoleCustomCodeType.Operator);
                }

                if (Utility.ToBoolean(managementState["IsSubstitute"]))
                {
                    roles.Add(RoleCustomCodeType.Substitute);
                }

                return(roles);
            }
            catch (Exception ex)
            {
                BaseBusiness <GTS.Clock.Model.Entity> .LogException(ex);

                throw ex;
            }
        }
Пример #6
0
        /// <summary>
        /// بررسی و مقداردهی اپراتور از روی شناسه کاربری
        /// </summary>
        /// <returns></returns>
        private bool InitOperator()
        {
            BOperator businessOperator = new BOperator();

            return(businessOperator.IsOperator());
        }
Пример #7
0
 public static bool W_Check(ref WordType[] tt, ref int tt_i, ref MyArray[] a, ref int a_i, ref string parseresult, ref Dictionary <string, int> varmap, ref Dictionary <string, string> varmap2, ref Dictionary <string, MyArray> varmap3, ref int start, ref int end, ref int end_num)
 {
     // 将初始下标指向传过来的while语句判断条件开始的地方
     tt_i = start;
     // 遍历 直到下标tt_i指向传过来的 while语句判断语句结尾标志 end
     for (; tt_i < end; tt_i++)
     {
         // 当读取到操作符时 跳转执行 operator函数
         if (tt[tt_i].Type.Equals("operator"))
         {
             // 定义一个变量来存储返回类型
             int temp = BOperator.Operator(ref tt, ref tt_i, ref a, ref a_i, ref parseresult, ref varmap, ref varmap2, ref varmap3);
             // 如果变量temp是0 返回false 同时让下标tt_i指向while语句的结尾
             // 如果变量temp是非0 返回 true
             if (temp == 0)
             {
                 tt_i = end_num;
                 return(false);
             }
             else
             {
                 return(true);
             }
             // 当读取到类型是数字 并且下一位是右括号时
         }
         else if (tt[tt_i].Type.Equals("number") && tt[tt_i + 1].Code.Equals(")"))
         {
             // 将对应的Code转换为int型赋值给temp
             int temp = int.Parse(tt[tt_i].Code);
             // 如果变量temp是0 返回false 同时让下标tt_i指向while语句的结尾
             // 如果变量temp是非0 返回 true
             if (temp == 0)
             {
                 tt_i = end_num;
                 return(false);
             }
             else
             {
                 return(true);
             }
             // 当读取到类型是变量 并且下一位是右括号时
         }
         else if (tt[tt_i].Type.Equals("var") && tt[tt_i + 1].Code.Equals(")"))
         {
             // 如果变量map里存在该变量 进行下一步判断
             if (varmap.ContainsKey(tt[tt_i].Code))
             {
                 // 将map里变量对应的值赋值给临时变量temp
                 int temp;
                 varmap.TryGetValue(tt[tt_i].Code, out temp);
                 // 如果变量temp是0 返回false 同时让下标tt_i指向while语句的结尾
                 // 如果变量temp是非0 返回 true
                 if (temp == 0)
                 {
                     tt_i = end_num;
                     return(false);
                 }
                 else
                 {
                     return(true);
                 }
                 // 如果变量map里不存在该变量 抛出异常
             }
             else
             {
                 parseresult += "变量" + tt[tt_i].Code + "未定义\r\n";
                 throw new NotDefineVarException("变量未定义");
             }
         }
     }
     return(true);
 }
Пример #8
0
 // 遍历词法分析器序列,对于不同类型的关键字,跳转到特殊函数执行
 public void BParser()
 {
     try
     {
         // 当词法分析器序列tt没有读尽,就继续处理
         while (tt[tt_i] != null)
         {
             // 读取到auto关键字,跳转到auto函数处理
             if (tt[tt_i].Type.Equals("auto"))
             {
                 Auto.M_Auto(ref tt, ref tt_i, ref a, ref a_i, ref parseresult, ref varmap, ref varmap2, ref varmap3);
             }   // 读取到putnumb关键字,跳转到putnumb函数,输出数值型变量值
             else if (tt[tt_i].Type.Equals("putnumb"))
             {
                 Putnumb.Put_numb(ref tt, ref tt_i, ref a, ref a_i, ref parseresult, ref varmap, ref varmap2, ref varmap3);
             }   // 读取到putchar关键字,跳转到putchar函数,输出字符型型变量值
             else if (tt[tt_i].Type.Equals("putchar"))
             {
                 Putchar.Put_char(ref tt, ref tt_i, ref a, ref a_i, ref parseresult, ref varmap, ref varmap2, ref varmap3);
             }   // 单目运算,自增自减
             else if (tt[tt_i].Code.Equals("++") || tt[tt_i].Code.Equals("--"))
             {
                 UnaryOperation.Unary_Operation(ref tt, ref tt_i, ref a, ref a_i, ref parseresult, ref varmap, ref varmap2, ref varmap3);
             }   // 读取到类型为operator,即操作符类型,跳转到operator函数
             else if (tt[tt_i].Type.Equals("operator"))
             {
                 BOperator.Operator(ref tt, ref tt_i, ref a, ref a_i, ref parseresult, ref varmap, ref varmap2, ref varmap3);
             }   // 读取到关键字getchar,跳转到getchar函数进行读入字符串操作
             else if (tt[tt_i].Type.Equals("getchar"))
             {
                 Getchar.Get_char(ref tt, ref tt_i, ref a, ref a_i, ref parseresult, ref varmap, ref varmap2, ref varmap3);
             }   // 读取到关键字getnumb,跳转到getnumb函数执行读入数值操作
             else if (tt[tt_i].Type.Equals("getnumb"))
             {
                 Getnumb.Get_numb(ref tt, ref tt_i, ref a, ref a_i, ref parseresult, ref varmap, ref varmap2, ref varmap3);
             }   // 读取到关键字goto,跳转到Bgoto函数处理goto语句
             else if (tt[tt_i].Type.Equals("goto"))
             {
                 Bgoto.B_goto(ref tt, ref tt_i, ref a, ref a_i, ref parseresult, ref varmap, ref varmap2, ref varmap3, ref markmap);
             }   // 读取到if关键字,跳转到Bif函数处理if语句
             else if (tt[tt_i].Type.Equals("if"))
             {
                 Bif.B_if(ref tt, ref tt_i, ref a, ref a_i, ref parseresult, ref varmap, ref varmap2, ref varmap3, ref markmap, ref while_or);
             }   // 读取到while关键字, 跳转到BWhile函数处理while循环语句
             else if (tt[tt_i].Type.Equals("while"))
             {
                 BWhile.B_While(ref tt, ref tt_i, ref a, ref a_i, ref parseresult, ref varmap, ref varmap2, ref varmap3, ref markmap, ref while_or);
             }   // 读取到do关键字,跳转到BDo_while函数执行do while函数执行
             else if (tt[tt_i].Type.Equals("do"))
             {
                 BDoWhile.B_Dowhile(ref tt, ref tt_i, ref a, ref a_i, ref parseresult, ref varmap, ref varmap2, ref varmap3, ref markmap, ref while_or);
             }   // 读取到for关键字,执行for循环
             else if (tt[tt_i].Type.Equals("for"))
             {
                 Bfor.B_for(ref tt, ref tt_i, ref a, ref a_i, ref parseresult, ref varmap, ref varmap2, ref varmap3);
             }   // 读取到note关键字, 跳转到Note函数处理注释
             else if (tt[tt_i].Type.Equals("note"))
             {
                 Note.M_Note(ref tt, ref tt_i, ref a, ref a_i, ref parseresult, ref varmap, ref varmap2, ref varmap3);
             }   // 读取到putstr函数,输出数组
             else if (tt[tt_i].Type.Equals("putstr"))
             {
                 Putstr.Put_str(ref tt, ref tt_i, ref a, ref a_i, ref parseresult, ref varmap, ref varmap2, ref varmap3);
             }   // 读取到switch
             else if (tt[tt_i].Type.Equals("switch"))
             {
                 Bswitch.B_switch(ref tt, ref tt_i, ref a, ref a_i, ref parseresult, ref varmap, ref varmap2, ref varmap3, ref markmap, ref while_or);
             }   // 都不满足就将tt_i下标加1,不作处理
             else
             {
                 tt_i++;
             }
         }
     }
     catch (NotDefineVarException e)
     {
         Console.WriteLine(e.ToString());
         Console.Write(e.StackTrace);
     }
     catch (NotAVarException e)
     {
         Console.WriteLine(e.ToString());
         Console.Write(e.StackTrace);
     }
     catch (WrongGrammarException e)
     {
         Console.WriteLine(e.ToString());
         Console.Write(e.StackTrace);
     }
     catch (NotFoundMarkException e)
     {
         Console.WriteLine(e.ToString());
         Console.Write(e.StackTrace);
     }
 }
 public static void Parser_ReNamed1(ref WordType[] tt, ref int tt_i, ref MyArray[] a, ref int a_i, ref string parseresult, ref Dictionary <string, int> varmap, ref Dictionary <string, string> varmap2, ref Dictionary <string, MyArray> varmap3, ref Dictionary <string, int> markmap, int start_num, int end_num, ref bool while_or)
 {
     try
     {
         for (tt_i = start_num; tt_i < end_num && tt[tt_i] != null;)
         {
             // 遇到break,跳出本次parser执行
             if (while_or == false)
             {
                 return;
             }
             // 读取到auto关键字,跳转到auto函数处理
             if (tt[tt_i].Type.Equals("auto"))
             {
                 Auto.M_Auto(ref tt, ref tt_i, ref a, ref a_i, ref parseresult, ref varmap, ref varmap2, ref varmap3);
             }
             // 读取到putnumb关键字,跳转到putnumb函数,输出数值型变量值
             else if (tt[tt_i].Type.Equals("putnumb"))
             {
                 Putnumb.Put_numb(ref tt, ref tt_i, ref a, ref a_i, ref parseresult, ref varmap, ref varmap2, ref varmap3);
             }
             // 读取到putchar关键字,跳转到putchar函数,输出字符型型变量值
             else if (tt[tt_i].Type.Equals("putchar"))
             {
                 Putchar.Put_char(ref tt, ref tt_i, ref a, ref a_i, ref parseresult, ref varmap, ref varmap2, ref varmap3);
             }
             // 读取到类型为++ --,即自增自减,跳转到unaryOperation函数
             else if (tt[tt_i].Code.Equals("++") || tt[tt_i].Code.Equals("--"))
             {
                 UnaryOperation.Unary_Operation(ref tt, ref tt_i, ref a, ref a_i, ref parseresult, ref varmap, ref varmap2, ref varmap3);
             }
             // 读取到类型为operator,即操作符类型,跳转到operator函数
             else if (tt[tt_i].Type.Equals("operator"))
             {
                 BOperator.Operator(ref tt, ref tt_i, ref a, ref a_i, ref parseresult, ref varmap, ref varmap2, ref varmap3);
             }
             // 读取到关键字getchar,跳转到getchar函数进行获取字符串输入操作
             else if (tt[tt_i].Type.Equals("getchar"))
             {
                 Getchar.Get_char(ref tt, ref tt_i, ref a, ref a_i, ref parseresult, ref varmap, ref varmap2, ref varmap3);
             }
             // 读取到关键字getnumb,跳转到getnumb函数进行获取数值输入操作
             else if (tt[tt_i].Type.Equals("getnumb"))
             {
                 Getnumb.Get_numb(ref tt, ref tt_i, ref a, ref a_i, ref parseresult, ref varmap, ref varmap2, ref varmap3);
             }
             // 读取到if关键字,跳转到if函数,执行if语句
             else if (tt[tt_i].Type.Equals("if"))
             {
                 Bif.B_if(ref tt, ref tt_i, ref a, ref a_i, ref parseresult, ref varmap, ref varmap2, ref varmap3, ref markmap, ref while_or);
             }
             // 读取到if关键字,跳转到if函数,执行if语句
             else if (tt[tt_i].Type.Equals("goto"))
             {
                 Bgoto.B_goto(ref tt, ref tt_i, ref a, ref a_i, ref parseresult, ref varmap, ref varmap2, ref varmap3, ref markmap);
             }
             // 读取到note关键字, 跳转到Note函数处理注释
             else if (tt[tt_i].Type.Equals("note"))
             {
                 Note.M_Note(ref tt, ref tt_i, ref a, ref a_i, ref parseresult, ref varmap, ref varmap2, ref varmap3);
             }
             // 读取到putstr函数,输出数组
             else if (tt[tt_i].Type.Equals("putstr"))
             {
                 Putstr.Put_str(ref tt, ref tt_i, ref a, ref a_i, ref parseresult, ref varmap, ref varmap2, ref varmap3);
             }
             // 读取到break关键字
             else if (tt[tt_i].Type.Equals("break"))
             {
                 Console.WriteLine("break开始运行");
                 Break.MBreak(ref while_or, ref tt_i);
             }
             // 读取到continue
             else if (tt[tt_i].Type.Equals("continue"))
             {
                 return;
             }
             // 都不满足就将tt_i下标加1,不作处理
             else
             {
                 tt_i++;
             }
         }
     }
     catch (NotDefineVarException e)
     {
         Console.WriteLine(e.ToString());
         Console.Write(e.StackTrace);
     }
     catch (NotAVarException e)
     {
         Console.WriteLine(e.ToString());
         Console.Write(e.StackTrace);
     }
     catch (WrongGrammarException e)
     {
         Console.WriteLine(e.ToString());
         Console.Write(e.StackTrace);
     }
     catch (NotFoundMarkException e)
     {
         Console.WriteLine(e.ToString());
         Console.Write(e.StackTrace);
     }
     tt_i = end_num + 2;
     return;
 }