Exemple #1
0
        /// <summary>
        /// 调度命令,必须是完整命令,不能多,也不能少
        /// </summary>
        /// <param name="raw">原始字符串</param>
        /// <param name="env">环境</param>
        /// <param name="result">结果,可能是编译成功的指令或错误信息</param>
        /// <returns>是否调度成功</returns>
        public bool Dispatch(string raw, TEnv env, out ICmdResult result)
        {
            raw = raw.TrimStart();
            StringReader reader = new StringReader(raw);

            if (!Dispatch(reader, env, out result))
            {
                return(false);
            }
            else if (reader.SkipWhiteSpace())
            {
                result = new ErrorResult(
                    result.MatchedLength,
                    0,
                    "未能识别的部分:" +
                    reader.ReadToEndOrMaxOrEmpty(Config.MaxCut, Config.EmptyStrTip));
                return(false);
            }
            return(true);
        }
 public ErrorResult(int matchedLength, int argLength, string error, ErrorResult subError) : this(matchedLength, argLength, error)
 {
     SubError = subError;
 }