public List <Command> ParseCommands(List <string> lines, long base_line) { List <Command> commands = new List <Command>(), cur_group_cmds = ObjectPool <List <Command> > .Instance.GetObject(); GroupCommand current_group_command = null; foreach (var line in lines) { base_line++; var data_arr = line.Split(','); var is_sub_cmd = data_arr.First().StartsWith(" ") || data_arr.First().StartsWith("__"); foreach (var cmd in CommandParserIntance.Parse(data_arr)) { cmd.RelativeLine = base_line; if (is_sub_cmd) { //如果是子命令的话就要添加到当前Group if (current_group_command != null) { current_group_command.AddSubCommand(cmd); } } else { var prev_group = current_group_command; current_group_command = cmd as GroupCommand; if (current_group_command != prev_group) { prev_group?.UpdateSubCommand(); } commands.Add(cmd); } } } if (current_group_command is GroupCommand loop) { loop.UpdateSubCommand(); } ObjectPool <List <Command> > .Instance.PutObject(cur_group_cmds); return(commands); }