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(形参列表); }
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_作用域(小括号作用域); }