//──────────────────────────────────────── public override void Translate( Configurationtree_Node cur_Cf, Expression_Node_String parent_Ec, MemoryApplication memoryApplication, Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog, Log_Reports log_Reports ) { // throw new Exception(Info_SToE.LibraryName + ":" + this.GetType().Name + "#SToE: このメソッドは廃止方針です。"); Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_ConfigurationtreeToExpression.Name_Library, this, "SToE", log_Reports); if (log_Method.CanDebug(1)) { pg_ParsingLog.Increment("(18)" + cur_Cf.Name); } // // // // // // // // 自 // // // Expression_Node_String ec_Value; { ec_Value = new Expression_Node_StringImpl(parent_Ec, cur_Cf); ec_Value.AppendTextNode( cur_Cf.Name, cur_Cf, log_Reports ); } // // // // 自 // // // Expression_Node_StringImpl ec_Ap1p = new Expression_Node_StringImpl(parent_Ec, cur_Cf); ec_Ap1p.SetAttribute( PmNames.S_NAME.Name_Pm, ec_Value, log_Reports ); StringBuilder sb = new StringBuilder(); sb.Append("p"); sb.Append(this.NP1p); sb.Append("p"); // // // // 属性 // // // parent_Ec.SetAttribute( sb.ToString(), ((Expression_Node_String)ec_Ap1p), log_Reports ); // // 子要素 // this.ParseChild_InConfigurationtreeToExpression( cur_Cf, ec_Ap1p, memoryApplication, pg_ParsingLog, log_Reports ); goto gt_EndMethod; // // // // gt_EndMethod: if (Log_ReportsImpl.BDebugmode_Static) { pg_ParsingLog.Decrement(cur_Cf.Name); } log_Method.EndMethod(log_Reports); }
//──────────────────────────────────────── public override void Translate( Configurationtree_Node cur_Cf, //<lookup-id> Expression_Node_String parent_Ec, //< Sf:text-template;> MemoryApplication memoryApplication, Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog, Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_ConfigurationtreeToExpression.Name_Library, this, "SToE", log_Reports); if (log_Method.CanDebug(1)) { pg_ParsingLog.Increment("(9)" + cur_Cf.Name); } // // // // // // 自 // // // Expression_Node_String cur_Ec = new Expression_Node_StringImpl(parent_Ec, cur_Cf); // // // // 親へ連結 (value属性) // // // { // // 自要素の value="" 属性を、親へ連結 // PmName pmName = PmNames.S_VALUE; string sValue; bool bHit = cur_Cf.Dictionary_Attribute.TryGetValue(pmName, out sValue, false, log_Reports); if (bHit) { cur_Ec.AppendTextNode( sValue, cur_Cf, log_Reports ); // // // // 子 // // // this.ParseChild_InConfigurationtreeToExpression( cur_Cf, cur_Ec,//自 memoryApplication, pg_ParsingLog, log_Reports ); // // // // 親へ連結 ※属性連結 // // // parent_Ec.SetAttribute(PmNames.S_LOOKUP_ID.Name_Pm, cur_Ec, log_Reports); goto gt_EndMethod; } else { } } // // // // 子 // // // { //<a-default>の子要素を確認し、親<f-switch>のdefault属性に追加します。 this.ParseChild_InConfigurationtreeToExpression( cur_Cf, cur_Ec, memoryApplication, pg_ParsingLog, log_Reports ); } // // // // 親へ連結 // // // parent_Ec.SetAttribute(PmNames.S_LOOKUP_ID.Name_Pm, cur_Ec, log_Reports); // // // // 親へ連結 debug // // // if (log_Method.CanDebug(1)) { string parent_SName_Fnc; parent_Ec.TrySelectAttribute(out parent_SName_Fnc, PmNames.S_NAME.Name_Pm, EnumHitcount.One_Or_Zero, log_Reports); log_Method.WriteDebug_ToConsole(" ☆☆☆☆☆☆☆☆ 親<[" + parent_Ec.Cur_Configuration.Name + "] name=”[" + parent_SName_Fnc + "]” >"); string sName_MyFnc; cur_Ec.TrySelectAttribute(out sName_MyFnc, PmNames.S_NAME.Name_Pm, EnumHitcount.One_Or_Zero, log_Reports); log_Method.WriteDebug_ToConsole(" ☆☆☆☆☆☆☆☆ 自<[" + cur_Ec.Cur_Configuration.Name + "] name=”[" + sName_MyFnc + "]” >"); } goto gt_EndMethod; // // gt_EndMethod: if (Log_ReportsImpl.BDebugmode_Static) { pg_ParsingLog.Decrement(cur_Cf.Name); } log_Method.EndMethod(log_Reports); }
//──────────────────────────────────────── public override void Translate( Configurationtree_Node cur_Cf,//<lookup-id> Expression_Node_String parent_Ec,//< Sf:text-template;> MemoryApplication memoryApplication, Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog, Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_ConfigurationtreeToExpression.Name_Library, this, "SToE",log_Reports); if (log_Method.CanDebug(1)) { pg_ParsingLog.Increment("(9)" + cur_Cf.Name); } // // // // // // 自 // // // Expression_Node_String cur_Ec = new Expression_Node_StringImpl(parent_Ec, cur_Cf); // // // // 親へ連結 (value属性) // // // { // // 自要素の value="" 属性を、親へ連結 // PmName pmName = PmNames.S_VALUE; string sValue; bool bHit = cur_Cf.Dictionary_Attribute.TryGetValue(pmName, out sValue, false, log_Reports); if (bHit) { cur_Ec.AppendTextNode( sValue, cur_Cf, log_Reports ); // // // // 子 // // // this.ParseChild_InConfigurationtreeToExpression( cur_Cf, cur_Ec,//自 memoryApplication, pg_ParsingLog, log_Reports ); // // // // 親へ連結 ※属性連結 // // // parent_Ec.SetAttribute(PmNames.S_LOOKUP_ID.Name_Pm, cur_Ec, log_Reports); goto gt_EndMethod; } else { } } // // // // 子 // // // { //<a-default>の子要素を確認し、親<f-switch>のdefault属性に追加します。 this.ParseChild_InConfigurationtreeToExpression( cur_Cf, cur_Ec, memoryApplication, pg_ParsingLog, log_Reports ); } // // // // 親へ連結 // // // parent_Ec.SetAttribute(PmNames.S_LOOKUP_ID.Name_Pm, cur_Ec, log_Reports); // // // // 親へ連結 debug // // // if (log_Method.CanDebug(1)) { string parent_SName_Fnc; parent_Ec.TrySelectAttribute(out parent_SName_Fnc, PmNames.S_NAME.Name_Pm, EnumHitcount.One_Or_Zero, log_Reports); log_Method.WriteDebug_ToConsole(" ☆☆☆☆☆☆☆☆ 親<[" + parent_Ec.Cur_Configuration.Name + "] name=”[" + parent_SName_Fnc + "]” >"); string sName_MyFnc; cur_Ec.TrySelectAttribute(out sName_MyFnc, PmNames.S_NAME.Name_Pm, EnumHitcount.One_Or_Zero, log_Reports); log_Method.WriteDebug_ToConsole(" ☆☆☆☆☆☆☆☆ 自<[" + cur_Ec.Cur_Configuration.Name + "] name=”[" + sName_MyFnc + "]” >"); } goto gt_EndMethod; // // gt_EndMethod: if (Log_ReportsImpl.BDebugmode_Static) { pg_ParsingLog.Decrement(cur_Cf.Name); } log_Method.EndMethod(log_Reports); }
//──────────────────────────────────────── /// <summary> /// <arg1> /// </summary> /// <param name="oFStrNode"></param> /// <param name="nFAelem"></param> /// <param name="moOpyopyo"></param> /// <param name="log_Reports"></param> public override void Translate( Configurationtree_Node cur_Cf, //「S■arg1」 Expression_Node_String parent_Ec, //親「E■fnc」 MemoryApplication memoryApplication, Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog, Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_ConfigurationtreeToExpression.Name_Library, this, "SToE", log_Reports); // // デバッグオープンの前に。 // // 「S■arg1 name=”★”」属性 // string sName_MyFnc; cur_Cf.Dictionary_Attribute.TryGetValue(PmNames.S_NAME, out sName_MyFnc, false, log_Reports); if (log_Method.CanDebug(1)) { Dictionary <string, string> s_Dic = new Dictionary <string, string>(); s_Dic.Add(PmNames.S_NAME.Name_Pm, sName_MyFnc); pg_ParsingLog.Increment("(6.arg1・3要素)" + cur_Cf.Name, s_Dic); } // // if (log_Method.CanDebug(2)) { log_Method.WriteDebug_ToConsole("「S■arg1・3」要素 解析開始┌────────────────┐ 自arg1・3は、e_Parent=[" + parent_Ec.Cur_Configuration.Name + "]の”" + sName_MyFnc + "”属性になる。"); } string parent_SName_Fnc; { // ヒット必須にするとエラーになる? parent_Ec.TrySelectAttribute(out parent_SName_Fnc, PmNames.S_NAME.Name_Pm, EnumHitcount.One_Or_Zero, log_Reports); if (!log_Reports.Successful) { goto gt_EndMethod; } //if (0 < d_InMethod.NDebugLevel) //{ // if (NamesNode.S_FNC != e_Parent.Cur_Configurationtree.Name) // { // d_InMethod.WriteDebug_ToConsole(1, "fnc以外の親要素「E■[" + e_Parent.Cur_Configurationtree.Name + "]」"); // } //} } // // // // 自 // // // Expression_Node_String cur_Ec = new Expression_Node_StringImpl(parent_Ec, cur_Cf); // // // // 属性 // // // if (log_Reports.Successful) { // 元からあった。 this.ParseAttr_InConfigurationtreeToExpression( cur_Cf, cur_Ec, true, //name属性は必須。 true, //value属性は、子<f-str>にする。 log_Reports ); } // // // // 子 // // // if (log_Reports.Successful) { this.ParseChild_InConfigurationtreeToExpression( cur_Cf, cur_Ec, memoryApplication, pg_ParsingLog, log_Reports ); } // // // // 親へ連結 ※属性連結。 // // // if (log_Reports.Successful) { parent_Ec.SetAttribute(sName_MyFnc, cur_Ec, log_Reports); } goto gt_EndMethod; // // gt_EndMethod: if (Log_ReportsImpl.BDebugmode_Static) { pg_ParsingLog.Decrement(cur_Cf.Name); } if (log_Method.CanDebug(2)) { log_Method.WriteDebug_ToConsole("「S■arg1・3」要素 解析終了└────────────────┘"); } log_Method.EndMethod(log_Reports); }
//──────────────────────────────────────── public void Translate( Configurationtree_Node cur_Conf, Expression_Node_String parent_Expr, MemoryApplication memoryApplication, Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog, Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_ConfigurationtreeToExpression.Name_Library, this, "SToE",log_Reports); if (log_Method.CanDebug(1)) { pg_ParsingLog.Increment("(40)" + cur_Conf.Name); } // // // // // // // // 自 // // // Expression_Node_String ec_Value = new Expression_Node_StringImpl(parent_Expr, cur_Conf); ec_Value.AppendTextNode( cur_Conf.Name, cur_Conf, log_Reports ); // // // // 自 // // // Expression_Node_StringImpl cur_Expr = new Expression_Node_StringImpl(parent_Expr, cur_Conf); // // // // 属性 // // // { cur_Expr.SetAttribute( PmNames.S_NAME.Name_Pm, ec_Value, log_Reports ); parent_Expr.SetAttribute( NamesNode.S_RECORD_SET_LOAD_FROM, ((Expression_Node_String)cur_Expr), log_Reports ); } // // // // 子要素 // // // { this.ParseChild_InConfigurationtreeToExpression( cur_Conf, cur_Expr, memoryApplication, pg_ParsingLog, log_Reports ); } // // // // if (Log_ReportsImpl.BDebugmode_Static) { pg_ParsingLog.Decrement(cur_Conf.Name); } log_Method.EndMethod(log_Reports); }
//──────────────────────────────────────── public override void Translate( Configurationtree_Node cur_Cf, Expression_Node_String parent_Ec, MemoryApplication memoryApplication, Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog, Log_Reports log_Reports ) { // throw new Exception(Info_SToE.LibraryName + ":" + this.GetType().Name + "#SToE: このメソッドは廃止方針です。"); Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_ConfigurationtreeToExpression.Name_Library, this, "SToE",log_Reports); if (log_Method.CanDebug(1)) { pg_ParsingLog.Increment("(18)" + cur_Cf.Name); } // // // // // // // // 自 // // // Expression_Node_String ec_Value; { ec_Value = new Expression_Node_StringImpl(parent_Ec, cur_Cf); ec_Value.AppendTextNode( cur_Cf.Name, cur_Cf, log_Reports ); } // // // // 自 // // // Expression_Node_StringImpl ec_Ap1p = new Expression_Node_StringImpl(parent_Ec, cur_Cf); ec_Ap1p.SetAttribute( PmNames.S_NAME.Name_Pm, ec_Value, log_Reports ); StringBuilder sb = new StringBuilder(); sb.Append("p"); sb.Append(this.NP1p); sb.Append("p"); // // // // 属性 // // // parent_Ec.SetAttribute( sb.ToString(), ((Expression_Node_String)ec_Ap1p), log_Reports ); // // 子要素 // this.ParseChild_InConfigurationtreeToExpression( cur_Cf, ec_Ap1p, memoryApplication, pg_ParsingLog, log_Reports ); goto gt_EndMethod; // // // // gt_EndMethod: if (Log_ReportsImpl.BDebugmode_Static) { pg_ParsingLog.Decrement(cur_Cf.Name); } log_Method.EndMethod(log_Reports); }
//──────────────────────────────────────── public void Translate( Configurationtree_Node cur_Conf, Expression_Node_String parent_Expr, MemoryApplication memoryApplication, Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog, Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_ConfigurationtreeToExpression.Name_Library, this, "SToE", log_Reports); if (log_Method.CanDebug(1)) { pg_ParsingLog.Increment("(40)" + cur_Conf.Name); } // // // // // // // // 自 // // // Expression_Node_String ec_Value = new Expression_Node_StringImpl(parent_Expr, cur_Conf); ec_Value.AppendTextNode( cur_Conf.Name, cur_Conf, log_Reports ); // // // // 自 // // // Expression_Node_StringImpl cur_Expr = new Expression_Node_StringImpl(parent_Expr, cur_Conf); // // // // 属性 // // // { cur_Expr.SetAttribute( PmNames.S_NAME.Name_Pm, ec_Value, log_Reports ); parent_Expr.SetAttribute( NamesNode.S_RECORD_SET_LOAD_FROM, ((Expression_Node_String)cur_Expr), log_Reports ); } // // // // 子要素 // // // { this.ParseChild_InConfigurationtreeToExpression( cur_Conf, cur_Expr, memoryApplication, pg_ParsingLog, log_Reports ); } // // // // if (Log_ReportsImpl.BDebugmode_Static) { pg_ParsingLog.Decrement(cur_Conf.Name); } log_Method.EndMethod(log_Reports); }
//──────────────────────────────────────── /// <summary> /// <arg1> /// </summary> /// <param name="oFStrNode"></param> /// <param name="nFAelem"></param> /// <param name="moOpyopyo"></param> /// <param name="log_Reports"></param> public override void Translate( Configurationtree_Node cur_Cf,//「S■arg1」 Expression_Node_String parent_Ec,//親「E■fnc」 MemoryApplication memoryApplication, Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog, Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_ConfigurationtreeToExpression.Name_Library, this, "SToE",log_Reports); // // デバッグオープンの前に。 // // 「S■arg1 name=”★”」属性 // string sName_MyFnc; cur_Cf.Dictionary_Attribute.TryGetValue(PmNames.S_NAME, out sName_MyFnc, false, log_Reports); if (log_Method.CanDebug(1)) { Dictionary<string, string> s_Dic = new Dictionary<string, string>(); s_Dic.Add(PmNames.S_NAME.Name_Pm, sName_MyFnc); pg_ParsingLog.Increment("(6.arg1・3要素)" + cur_Cf.Name, s_Dic); } // // if (log_Method.CanDebug(2)) { log_Method.WriteDebug_ToConsole("「S■arg1・3」要素 解析開始┌────────────────┐ 自arg1・3は、e_Parent=[" + parent_Ec.Cur_Configuration.Name + "]の”" + sName_MyFnc + "”属性になる。"); } string parent_SName_Fnc; { // ヒット必須にするとエラーになる? parent_Ec.TrySelectAttribute(out parent_SName_Fnc, PmNames.S_NAME.Name_Pm, EnumHitcount.One_Or_Zero, log_Reports); if (!log_Reports.Successful) { goto gt_EndMethod; } //if (0 < d_InMethod.NDebugLevel) //{ // if (NamesNode.S_FNC != e_Parent.Cur_Configurationtree.Name) // { // d_InMethod.WriteDebug_ToConsole(1, "fnc以外の親要素「E■[" + e_Parent.Cur_Configurationtree.Name + "]」"); // } //} } // // // // 自 // // // Expression_Node_String cur_Ec = new Expression_Node_StringImpl(parent_Ec, cur_Cf); // // // // 属性 // // // if (log_Reports.Successful) { // 元からあった。 this.ParseAttr_InConfigurationtreeToExpression( cur_Cf, cur_Ec, true,//name属性は必須。 true,//value属性は、子<f-str>にする。 log_Reports ); } // // // // 子 // // // if (log_Reports.Successful) { this.ParseChild_InConfigurationtreeToExpression( cur_Cf, cur_Ec, memoryApplication, pg_ParsingLog, log_Reports ); } // // // // 親へ連結 ※属性連結。 // // // if (log_Reports.Successful) { parent_Ec.SetAttribute(sName_MyFnc, cur_Ec, log_Reports); } goto gt_EndMethod; // // gt_EndMethod: if (Log_ReportsImpl.BDebugmode_Static) { pg_ParsingLog.Decrement(cur_Cf.Name); } if (log_Method.CanDebug(2)) { log_Method.WriteDebug_ToConsole( "「S■arg1・3」要素 解析終了└────────────────┘"); } log_Method.EndMethod(log_Reports); }
public void ParseAttr_InConfigurationtreeToExpression( Configurationtree_Node cur_Cf, Expression_Node_String cur_Ec, bool bRequired_NameAttr,//name属性が必須な場合、真。 bool bRequired_ValueAttrIsChild,//value属性を、子<f-str>にする場合、真。 Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_ConfigurationtreeToExpression.Name_Library, this, "ParseAttr",log_Reports); // // if (log_Reports.Successful) { // // s属性 はなんでも受け入れるとする。 // cur_Cf.Dictionary_Attribute.ForEach(delegate(string sPmName, string sAttrValue, ref bool bBreak) { Expression_Node_String ec_AttrValue; if (log_Reports.Successful) { ec_AttrValue = new Expression_Node_StringImpl(cur_Ec, cur_Cf); ec_AttrValue.AppendTextNode(sAttrValue, cur_Cf, log_Reports);//ここでエラー? } else { bBreak = true; goto gt_EndMethod1; } if (log_Reports.Successful) { if (bRequired_ValueAttrIsChild && PmNames.S_VALUE.Name_Pm == sPmName) { // value属性は、子<f-str>にする。 //d_InMethod.WriteDebug_ToConsole(2," ["+sAttrName+"]属性を子要素として追加。"); cur_Ec.List_Expression_Child.Add(ec_AttrValue, log_Reports); } else { // 属性にする。 cur_Ec.SetAttribute(sPmName, ec_AttrValue, log_Reports); } } else { bBreak = true; goto gt_EndMethod1; } if (log_Method.CanDebug(1)) { log_Method.WriteDebug_ToConsole( " ├属性[" + sPmName + "]=”[" + sAttrValue + "]”"); } // 追加したe_Attr=[" + e_AttrValue.Execute4_OnExpressionString(EnumHitcount.Unconstraint, log_Reports) + "] e属性数=[" + e_Cur.Dictionary_Expression_Attribute.Count + "] 子要素数=[" + e_Cur.List_Child.Count + "] goto gt_EndMethod1; // // // // gt_EndMethod1: ; }); // // 【開発中 2012-06-04】 // S_Elmの、S_AttrDic は廃止したい。 // if (bRequired_NameAttr) { // // name属性は必須。 // string sFncName2; log_Reports.Log_Callstack.Push(log_Method, "①name必須指定"); cur_Ec.TrySelectAttribute(out sFncName2, PmNames.S_NAME.Name_Pm, EnumHitcount.One, log_Reports); log_Reports.Log_Callstack.Pop(log_Method, "①name必須指定"); if (log_Method.CanDebug(1)) { log_Method.WriteDebug_ToConsole( "sFncName2=[" + sFncName2 + "]"); } //bool bHit = s_Cur.Dictionary_Attribute.TryGetValue(PmNames.NAME.SAttrName, out sFncName2, true, log_Reports); if (!log_Reports.Successful) { goto gt_EndMethod; } } } else { goto gt_EndMethod; } goto gt_EndMethod; // // gt_EndMethod: log_Method.EndMethod(log_Reports); }
public void ParseAttr_InConfigurationtreeToExpression( Configurationtree_Node cur_Cf, Expression_Node_String cur_Ec, bool bRequired_NameAttr, //name属性が必須な場合、真。 bool bRequired_ValueAttrIsChild, //value属性を、子<f-str>にする場合、真。 Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_ConfigurationtreeToExpression.Name_Library, this, "ParseAttr", log_Reports); // // if (log_Reports.Successful) { // // s属性 はなんでも受け入れるとする。 // cur_Cf.Dictionary_Attribute.ForEach(delegate(string sPmName, string sAttrValue, ref bool bBreak) { Expression_Node_String ec_AttrValue; if (log_Reports.Successful) { ec_AttrValue = new Expression_Node_StringImpl(cur_Ec, cur_Cf); ec_AttrValue.AppendTextNode(sAttrValue, cur_Cf, log_Reports);//ここでエラー? } else { bBreak = true; goto gt_EndMethod1; } if (log_Reports.Successful) { if (bRequired_ValueAttrIsChild && PmNames.S_VALUE.Name_Pm == sPmName) { // value属性は、子<f-str>にする。 //d_InMethod.WriteDebug_ToConsole(2," ["+sAttrName+"]属性を子要素として追加。"); cur_Ec.List_Expression_Child.Add(ec_AttrValue, log_Reports); } else { // 属性にする。 cur_Ec.SetAttribute(sPmName, ec_AttrValue, log_Reports); } } else { bBreak = true; goto gt_EndMethod1; } if (log_Method.CanDebug(1)) { log_Method.WriteDebug_ToConsole(" ├属性[" + sPmName + "]=”[" + sAttrValue + "]”"); } // 追加したe_Attr=[" + e_AttrValue.Execute4_OnExpressionString(EnumHitcount.Unconstraint, log_Reports) + "] e属性数=[" + e_Cur.Dictionary_Expression_Attribute.Count + "] 子要素数=[" + e_Cur.List_Child.Count + "] goto gt_EndMethod1; // // // // gt_EndMethod1: ; }); // // 【開発中 2012-06-04】 // S_Elmの、S_AttrDic は廃止したい。 // if (bRequired_NameAttr) { // // name属性は必須。 // string sFncName2; log_Reports.Log_Callstack.Push(log_Method, "①name必須指定"); cur_Ec.TrySelectAttribute(out sFncName2, PmNames.S_NAME.Name_Pm, EnumHitcount.One, log_Reports); log_Reports.Log_Callstack.Pop(log_Method, "①name必須指定"); if (log_Method.CanDebug(1)) { log_Method.WriteDebug_ToConsole("sFncName2=[" + sFncName2 + "]"); } //bool bHit = s_Cur.Dictionary_Attribute.TryGetValue(PmNames.NAME.SAttrName, out sFncName2, true, log_Reports); if (!log_Reports.Successful) { goto gt_EndMethod; } } } else { goto gt_EndMethod; } goto gt_EndMethod; // // gt_EndMethod: log_Method.EndMethod(log_Reports); }
private void ParseChild_SpecialFnc_( Configurationtree_Node cur_Cf, Expression_Node_String cur_Ec,//「S■fnc」、や「S■event」か? MemoryApplication memoryApplication, Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog, Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_ConfigurationtreeToExpression.Name_Library, this, "ParseChild_Special_",log_Reports); // // if (!log_Reports.Successful) { goto gt_EndMethod; } // // // // 子 // // // cur_Cf.List_Child.ForEach(delegate(Configurationtree_Node s_Child, ref bool bBreak) { if (log_Reports.Successful) { if (NamesNode.S_ARG == s_Child.Name) { //━━━━━ // arg //━━━━━ string sName_MyFnc; cur_Cf.Dictionary_Attribute.TryGetValue(PmNames.S_NAME, out sName_MyFnc, false, log_Reports); string sName_ChildFnc; s_Child.Dictionary_Attribute.TryGetValue(PmNames.S_NAME, out sName_ChildFnc, false, log_Reports); // bool bNormalize = false; if( // 親が「E■fnc」 NamesNode.S_FNC == cur_Ec.Cur_Configuration.Name && NamesFnc.S_CELL == sName_MyFnc ) { if ( // 子が「name=”select”」 PmNames.S_SELECT.Name_Pm == sName_ChildFnc ) { bNormalize = true; } } if (bNormalize) { ConfigurationtreeToExpression_F14n16 to = new ConfigurationtreeToExpression_F14_FArgImpl(); to.Translate( s_Child, cur_Ec,//「E■fnc」とか memoryApplication, pg_ParsingLog, log_Reports ); } else { string sValue = ""; // // value=”” 属性が指定されていれば、その値をそのまま取得。 // s_Child.Dictionary_Attribute.ForEach(delegate(string sPmName2, string sAttrValue2, ref bool bBreak2) { if (PmNames.S_VALUE.Name_Pm == sPmName2) { // value属性が指定されていた場合。 s_Child.Dictionary_Attribute.TryGetValue(PmNames.S_VALUE, out sValue, true, log_Reports); // 「E■arg1」は作らずに、親要素の属性として追加。 Expression_Node_String e_Value = new Expression_Leaf_StringImpl(sValue, cur_Ec, cur_Ec.Cur_Configuration); cur_Ec.SetAttribute(sName_ChildFnc, e_Value, log_Reports); } }); // // 子要素の有無。 // if (0 < s_Child.List_Child.Count) { // 子要素が指定されている場合。 if ("" != sValue) { // value属性が指定されているのに、子要素も指定されているのは、エラーです。 if (log_Method.CanError()) { log_Method.WriteError_ToConsole( " value属性が指定されているのに、子要素も指定されているのは、エラーです。"); } } else { Expression_Node_StringImpl ec_Value = new Expression_Node_StringImpl(cur_Ec, s_Child); ConfigurationtreeToExpression_F14_FncImpl_ to2 = new ConfigurationtreeToExpression_F14_FncImpl_(); to2.ParseChild_SpecialFnc_( s_Child, ec_Value, memoryApplication, pg_ParsingLog, log_Reports ); // // 「E■arg1」は作らずに、親要素の属性として追加。 // cur_Ec.SetAttribute(sName_ChildFnc, ec_Value, log_Reports); } } else { if ("" == sValue) { // todo: throw new Exception(Info_ConfigurationtreeToExpression.Name_Library + ":" + this.GetType().Name + "#ParseChild:(3) 「S■[" + cur_Cf.Name + "]」の子要素「S■[" + s_Child.Name + "]」に、value属性がありませんでした。子要素もありませんでした。"); } } } } else if (NamesNode.S_F_VAR == s_Child.Name) { //━━━━━ // f-var //━━━━━ //throw new Exception(Info_SToE.LibraryName + ":" + this.GetType().Name + "#ParseChild:(b)f-var 使っていなければ廃止したい。"); // 親要素「S■fnc」の子要素として追加します。 ConfigurationtreeToExpression_F14_FvariableImpl_ to = new ConfigurationtreeToExpression_F14_FvariableImpl_(); to.Translate( s_Child, cur_Ec,//「E■fnc」とか memoryApplication, pg_ParsingLog, log_Reports ); } else if (NamesNode.S_F_STR == s_Child.Name) { //━━━━━ // f-str //━━━━━ //throw new Exception(Info_SToE.LibraryName + ":" + this.GetType().Name + "#ParseChild:(c)f-str 使っていなければ廃止したい。"); // 親要素「S■fnc」の子要素として追加します。 ConfigurationtreeToExpression_F14_FstrImpl_ to = new ConfigurationtreeToExpression_F14_FstrImpl_(); to.Translate( s_Child, cur_Ec,//「E■fnc」とか memoryApplication, pg_ParsingLog, log_Reports ); } else if (NamesNode.S_FNC == s_Child.Name) { //━━━━━ // fnc //━━━━━ //throw new Exception(Info_SToE.LibraryName + ":" + this.GetType().Name + "#ParseChild:(e)fnc 使っていなければ廃止したい。"); // // S_FVarImpl (「S■f-var」)など。 // 【追加 2012-05-31】 // // 親要素「S■fnc」の子要素として追加します。 pg_ParsingLog.Increment("(SToE_F_4FFncImpl②)"); ConfigurationtreeToExpression_F14n16 to = new ConfigurationtreeToExpression_F14_FncImpl_(); to.Translate( s_Child,// s_Fnc,//※s_Node(「S■f-var」とか)を入れるのではなく、その親を入れます。 cur_Ec,//「E■fnc」とかか? memoryApplication, pg_ParsingLog, log_Reports ); pg_ParsingLog.Decrement(); } else if (NamesNode.S_F_PARAM == s_Child.Name) { //━━━━━ // f-param //━━━━━ //throw new Exception(Info_SToE.LibraryName + ":" + this.GetType().Name + "#ParseChild:(f)f-param 使っていなければ廃止したい。"); // 【追加 2012-06-05】 ConfigurationtreeToExpression_F14_FparamImpl_ to4 = new ConfigurationtreeToExpression_F14_FparamImpl_(); to4.Translate( s_Child, cur_Ec, memoryApplication, pg_ParsingLog, log_Reports ); } else { // todo:2 goto gt_Error_UndefinedChlid; throw new Exception(Info_ConfigurationtreeToExpression.Name_Library + ":" + this.GetType().Name + "#ParseChild:(16) 「S■[" + cur_Cf.Name + "]」に、未定義の子要素「S■[" + s_Child.Name + "]」がありました。"); } } goto gt_EndMethod2; // gt_Error_UndefinedChlid: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, cur_Cf.Name, log_Reports);//設定ノード名 tmpl.SetParameter(2, s_Child.Name, log_Reports);//子要素名 tmpl.SetParameter(3, cur_Cf.Dictionary_Attribute.Count.ToString(), log_Reports);//string属性の数 //string属性のリスト StringBuilder s1 = new StringBuilder(); cur_Cf.Dictionary_Attribute.ForEach(delegate(string sKey2, string sValue2, ref bool bBreak2) { s1.Append("s属 [" + sKey2 + "]=[" + sValue2 + "]\n"); }); tmpl.SetParameter(4, s1.ToString(), log_Reports); tmpl.SetParameter(5, cur_Cf.List_Child.Count.ToString(), log_Reports);//子要素の数 //子要素のリスト StringBuilder s2 = new StringBuilder(); cur_Cf.List_Child.ForEach( delegate(Configurationtree_Node cf_Child2, ref bool bBreak5) { s2.Append("子「S■" + cf_Child2.Name + "」\n"); }); tmpl.SetParameter(6, s2.ToString(), log_Reports); tmpl.SetParameter(7, Log_RecordReportsImpl.ToText_Configuration(cur_Cf), log_Reports);//設定位置パンくずリスト memoryApplication.CreateErrorReport("Er:7005;", tmpl, log_Reports); } goto gt_EndMethod2; gt_EndMethod2: ; }); goto gt_EndMethod; // // gt_EndMethod: log_Method.EndMethod(log_Reports); }
private void ParseChild_SpecialTextTemplate_( Configurationtree_Node cur_Cf, Expression_Node_String owner_Ec, MemoryApplication memoryApplication, Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog, Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_ConfigurationtreeToExpression.Name_Library, this, "ParseChild_Special_",log_Reports); // // // // // // データ_ソース、データ_ターゲット、<fnc >の子要素。 string sName_OwnerNode = owner_Ec.Cur_Configuration.Name; string sName_OwnerFnc = ""; { EnumHitcount enumHitcount; if (NamesNode.S_FNC == sName_OwnerNode //|| //NamesNode.S_F_TEXT_TEMPLATE2 == sOwnerNodeName ) { enumHitcount = EnumHitcount.One; } else { enumHitcount = EnumHitcount.One_Or_Zero; } bool bHit = owner_Ec.TrySelectAttribute(out sName_OwnerFnc, PmNames.S_NAME.Name_Pm, enumHitcount, log_Reports); } // // // // 子 // // // string err_SAtFncName; Configurationtree_Node err_Cf_AtElm; Exception err_E; cur_Cf.List_Child.ForEach(delegate(Configurationtree_Node cf_Child, ref bool bBreak) { if (log_Reports.Successful) { if (null == cf_Child) { bBreak = true; goto gt_errorNullValue; } else { string sName_AtNode = cf_Child.Name; string sName_AtFnc = ""; { bool bRequired; if ( NamesNode.S_FNC == sName_AtNode || NamesNode.S_ARG == sName_AtNode ) { // 「S■fnc」 // 「S■arg」 bRequired = true; } else { bRequired = false; } cf_Child.Dictionary_Attribute.TryGetValue(PmNames.S_NAME, out sName_AtFnc, bRequired, log_Reports); } if (NamesNode.S_ARG == sName_AtNode) { // 「S■arg」 int nP1p; bool bP1pNameSuccessful = Utility_TexttemplateP1p.TryParseName(sName_AtFnc, out nP1p); if (bP1pNameSuccessful) { // // 例: <attribute name=”p1p”> ConfigurationtreeToExpression_F16_P1pImpl_ to = new ConfigurationtreeToExpression_F16_P1pImpl_(); // Sf:case;文はここには来ない。 to.NP1p = nP1p; to.Translate( cf_Child, owner_Ec, memoryApplication, pg_ParsingLog, log_Reports ); } else if ( NamesFnc.S_TEXT_TEMPLATE == sName_OwnerFnc && //NamesNode.S_F_TEXT_TEMPLATE2 == sOwnerNodeName && PmNames.S_TABLE.Name_Pm == sName_AtFnc ) { // 【追加 2012-06-05】 // <fnc name=”Sf:text-template;”> // <arg name=”table” value=”~”> // 旧仕様? // 「S■f-text-template name=””」 // 「S■table name=””」 if (log_Method.CanDebug(2)) { log_Method.WriteDebug_ToConsole("テキストテンプレートのテーブル属性。親要素「S■[" + sName_OwnerNode + "] name=”[" + sName_OwnerFnc + "]”」 自要素「[" + sName_AtNode + "] name=”[" + sName_AtFnc + "]”」 子要素数=[" + cf_Child.List_Child.Count + "] string属性数=[" + cf_Child.Dictionary_Attribute.Count + "] S_Elm属性数=[" + cf_Child.Dictionary_Attribute.Count + "]"); } // // // 自 // // string sValue; cf_Child.Dictionary_Attribute.TryGetValue(PmNames.S_VALUE, out sValue, true, log_Reports); Expression_Node_String ec_Tbl = new Expression_Node_StringImpl(owner_Ec, cf_Child); ec_Tbl.AppendTextNode( sValue, cf_Child, log_Reports ); owner_Ec.SetAttribute( PmNames.S_TABLE.Name_Pm, ec_Tbl, log_Reports ); // 無視します。 goto gt_nextAttr; } else if (this.Dic_B.ContainsKey(sName_AtFnc)) { // キー有り。 ConfigurationtreeToExpression_F14n16 to = this.Dic_B[sName_AtFnc]; to.Translate( cf_Child, owner_Ec, memoryApplication, pg_ParsingLog, log_Reports ); } else { // キー無し。 err_Cf_AtElm = cf_Child; err_SAtFncName = sName_AtFnc; err_E = null; goto gt_Error_KeyNotFound_Arg3; } } else { ConfigurationtreeToExpression_F14n16 to; if (this.Dic_B.ContainsKey(sName_AtNode))//todo:ノード名と比べるのはおかしい? { // キー有り。 to = this.Dic_B[sName_AtNode]; } else { // キー無し。 err_Cf_AtElm = cf_Child; err_E = null; goto gt_Error_KeyNotFound1; } to.Translate( cf_Child, owner_Ec, memoryApplication, pg_ParsingLog, log_Reports ); } // <a-case>要素は、次のループで。 } } goto gt_nextAttr; // // // // gt_errorNullValue: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, cur_Cf.Name, log_Reports);//設定ノード名 tmpl.SetParameter(2, Log_RecordReportsImpl.ToText_Configuration(cf_Child), log_Reports);//設定位置パンくずリスト memoryApplication.CreateErrorReport("Er:7007;", tmpl, log_Reports); } goto gt_nextAttr; gt_Error_KeyNotFound_Arg3: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, err_Cf_AtElm.Name, log_Reports);//設定ノード名 tmpl.SetParameter(2, err_SAtFncName, log_Reports);//関数名 tmpl.SetParameter(3, err_Cf_AtElm.GetType().Name, log_Reports);//関数のクラス名 tmpl.SetParameter(4, sName_OwnerNode, log_Reports);//親設定ノード名 tmpl.SetParameter(5, sName_OwnerFnc, log_Reports);//親設定関数名 tmpl.SetParameter(6, Log_RecordReportsImpl.ToText_Configuration(err_Cf_AtElm), log_Reports);//設定位置パンくずリスト tmpl.SetParameter(7, Log_RecordReportsImpl.ToText_Exception(err_E), log_Reports);//例外メッセージ memoryApplication.CreateErrorReport("Er:7008;", tmpl, log_Reports); } goto gt_nextAttr; gt_Error_KeyNotFound1: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, err_Cf_AtElm.Name, log_Reports);//設定ノード名 tmpl.SetParameter(2, err_Cf_AtElm.GetType().Name, log_Reports);//設定ノードのクラス名 tmpl.SetParameter(3, sName_OwnerNode, log_Reports);//親設定ノード名 tmpl.SetParameter(4, sName_OwnerFnc, log_Reports);//親設定関数名 tmpl.SetParameter(5, Log_RecordReportsImpl.ToText_Configuration(err_Cf_AtElm), log_Reports);//設定位置パンくずリスト tmpl.SetParameter(6, Log_RecordReportsImpl.ToText_Exception(err_E), log_Reports);//例外メッセージ memoryApplication.CreateErrorReport("Er:7009;", tmpl, log_Reports); } goto gt_nextAttr; gt_nextAttr: ; }); goto gt_EndMethod; gt_EndMethod: log_Method.EndMethod(log_Reports); }