private void iterativeLeftRightToolStripMenuItem_Click(object sender, EventArgs e) { recursiveTopDownToolStripMenuItem.Checked = false; iterativeTopDownToolStripMenuItem.Checked = false; iterativeLeftRightToolStripMenuItem.Checked = true; mGenerationMode = eGenerationMode.IterativeLeftRight; }
public virtual IDerivation Visit(TransCallPhrase aTransCallPhrase, DerivationContext aContext) { eGenerationMode lOldMode = aContext.Generator.Mode; aContext.Generator.Mode = eGenerationMode.RecursiveTopDown; //1. Substitute and prepare parameters form context by conf xml object[] parametrs = ParamsArray(aTransCallPhrase, aContext); if (aTransCallPhrase.TargetAccess != null) { IDerivation lDeriv = aTransCallPhrase.TargetAccess.Accept(aContext); aTransCallPhrase.Grammar.ListTrans.TargetList = (ListDerivation)lDeriv; aTransCallPhrase.Grammar.ListTrans.TargetListName = aTransCallPhrase.TargetAccess.ObjectName; } aTransCallPhrase.Grammar.SysTrans.Context = aContext; //2. do actual call object lRetVal = null; try { lRetVal = aTransCallPhrase.BindedMethod.Invoke(aTransCallPhrase.TransductorClass, parametrs); } catch (Exception ex) { while (ex.InnerException != null) { ex = ex.InnerException; } lRetVal = ex.Message; } aContext.Generator.Mode = lOldMode; if (lRetVal is int) { lRetVal = new ExprInt((int)lRetVal); } IDerivation lDer = lRetVal as IDerivation; if (null == lDer) { lDer = new TextDerivation(lRetVal.ToString()); } XmlNode newNode = aContext.DerivationXml.CreateElement("trans"); aContext.currentNode.AppendChild(newNode); newNode.InnerText = lDer.ToString(); TLog.Write("T", lDer.ToString()); return(lDer); }