Ejemplo n.º 1
0
        private static 作用域 Parse_形参列表(char[] chars, int 左小括号位置, int 右小括号位置)
        {
            作用域 形参列表 = new 作用域();

            StrSpan span = StrUtil.Trim(chars, 左小括号位置 + 1, 右小括号位置 - 1, Parser._whiteSpaces);

            if (span.isEmpty)
            {
                return(形参列表);
            }

            List <StrSpan> list = Parser.在_单引号双引号_以外_Split(chars, span.iLeft, span.iRight, ',');

            StrSpan span形参;

            for (int i = 0; i < list.Count; i++)
            {
                span形参 = list[i];

                形参 形参 = Parse_形参(chars, span形参);

                形参列表.Add_变量定义(形参, chars);
                //if (形参列表.dic变量声明.ContainsKey(形参.name))
                //    throw new 语法错误_Exception("参数名 \"" + 形参.name + "\" 重复 。", chars, 形参.变量名位置);

                //形参列表.dic变量声明.Add(形参.name, 形参);
            }

            return(形参列表);
        }
Ejemplo n.º 2
0
        public override void Set_作用域(作用域 作用域)
        {
            base.Set_作用域(作用域);

            作用域 小括号作用域 = new 作用域();

            for (int i = 0; i < this.小括号表达式s.Length; i++)
            {
                表达式 express = this.小括号表达式s[i];

                if (express == null)
                {
                    continue;
                }

                变量声明和初始化 变量声明 = express as 变量声明和初始化;

                if (变量声明 != null)
                {
                    小括号作用域.Add_变量定义(变量声明, 变量声明.chars);
                }

                express.Set_作用域(小括号作用域);
            }

            小括号作用域.Set_作用域(作用域);
            this.子句.Set_作用域(小括号作用域);
        }