示例#1
0
        private Command ParseToCommand(string line, out CommandError error)
        {
            if (line == "" || line.StartsWith("//"))
            {
                error = null;
                return(null);
            }

            string commandID;
            string commandParam;

            StringDefine.SplitFirstWord(line, out commandID, out commandParam);

            Command command = CreateCommandFromID(commandID);

            if (command == null)
            {
                error = new CommandInvalidIDError(commandID);
                return(null);
            }

            CommandError parseError = null;

            command.Parse(commandParam, out parseError);
            if (parseError != null)
            {
                error = parseError;
                return(null);
            }

            CommandError onParsedError = null;

            command.OnParsed(out onParsedError);
            if (onParsedError != null)
            {
                error = parseError;
                return(null);
            }

            error = null;
            return(command);
        }