private void TranscriptSentence(StringWriter writer, 手順定義 methodInfo, IPrototypeExpression expr) { string code = ""; if (methodInfo is 外部手順定義) { var attrs = (methodInfo as 外部手順定義).MethodInfo.GetCustomAttributes(typeof(翻訳Attribute), false); if (attrs.Length > 0) { code = (attrs[0] as 翻訳Attribute).Code; } } else if (methodInfo is Procedure) { var procedure = methodInfo as Procedure; code = procedure.GetAnnotationParam("翻訳"); string funcName; if (code == null && funcNameList.TryGetValue(procedure, out funcName)) { code = funcName + "()"; } } foreach (var item in methodInfo.Complements) { var pc = item as 実補語定義; if (pc != null) { IPhrase phrase; expr.TryGetPhrase(pc.Particle, out phrase); code = code.Replace("【" + pc.ParameterName + "】", GenerateString(phrase)); } } writer.Write(code); }
private void GSDynamicCall(IStatement statement, StringWriter writer) { var st = statement as DynamicCallExpression; 手順定義 methodInfo = st.Overloads[0]; foreach (var method in st.Overloads) { if (method is Procedure) { methodInfo = method; break; } } TranscriptSentence(writer, methodInfo, st.Expression); }