public UserDefinedRefMethod GetRefMethod(string codeStr) { if (Config.ICFunction) { codeStr = codeStr.ToUpper(); } UserDefinedRefMethod ref_method = null; if (refmethodDic.TryGetValue(codeStr, out ref_method)) { return(ref_method); } return(null); }
internal void AddRefMethod(UserDefinedRefMethod refm) { refmethodDic.Add(refm.Name, refm); nameDic.Add(refm.Name, DefinedNameType.UserRefMethod); }
public IOperandTerm GetFunctionMethod(LabelDictionary labelDic, string codeStr, IOperandTerm[] arguments, bool userDefinedOnly) { if (Config.ICFunction) { codeStr = codeStr.ToUpper(); } if (arguments == null) //引数なし、名前のみの探索 { UserDefinedRefMethod ref_method = null; if (refmethodDic.TryGetValue(codeStr, out ref_method)) { return(new UserDefinedRefMethodNoArgTerm(ref_method)); } return(null); } if ((labelDic != null) && (labelDic.Initialized)) { UserDefinedRefMethod ref_method = null; if (refmethodDic.TryGetValue(codeStr, out ref_method)) { return(new UserDefinedRefMethodTerm(ref_method, arguments)); } FunctionLabelLine func = labelDic.GetNonEventLabel(codeStr); if (func != null) { if (userDefinedOnly && !func.IsMethod) { throw new CodeEE("#FUNCTIONが指定されていない関数\"@" + func.LabelName + "\"をCALLF系命令で呼び出そうとしました"); } if (func.IsMethod) { string errMes; IOperandTerm ret = UserDefinedMethodTerm.Create(func, arguments, out errMes); if (ret == null) { throw new CodeEE(errMes); } return(ret); } //1.721 #FUNCTIONが定義されていない関数は組み込み関数を上書きしない方向に。 PANCTION.ERBのRANDとか。 if (!methodDic.ContainsKey(codeStr)) { throw new CodeEE("#FUNCTIONが定義されていない関数(" + func.Position.Filename + ":" + func.Position.LineNo + "行目)を式中で呼び出そうとしました"); } } } if (userDefinedOnly) { return(null); } FunctionMethod method = null; if (!methodDic.TryGetValue(codeStr, out method)) { return(null); } string errmes = method.CheckArgumentType(codeStr, arguments); if (errmes != null) { throw new CodeEE(errmes); } return(new FunctionMethodTerm(method, arguments)); }
public RefArgument(UserDefinedRefMethod udrm, IOperandTerm src) { RefMethodToken = udrm; SrcTerm = src; }
public RefArgument(UserDefinedRefMethod udrm, CalledFunction src) { RefMethodToken = udrm; SrcCalledFunction = src; }
public RefArgument(UserDefinedRefMethod udrm, UserDefinedRefMethod src) { RefMethodToken = udrm; SrcRefMethodToken = src; }