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);
        }