public override void visit(Generated.Action obj, bool visitSubNodes) { Rules.Action action = (Rules.Action)obj; if (Rebuild) { action.Statement = null; } // Side effect : compiles or recompiles the statement DataDictionary.Interpreter.Statement.Statement statement = action.Statement; base.visit(obj, visitSubNodes); }
/// <summary> /// Splits the selected action to several sub-actions /// </summary> public virtual void SplitHandler(object sender, EventArgs args) { DataDictionary.Interpreter.Statement.Statement statement = Item.EFSSystem.Parser.Statement(Item, Item.ExpressionText); DataDictionary.Interpreter.Statement.VariableUpdateStatement variableUpdateStatement = statement as DataDictionary.Interpreter.Statement.VariableUpdateStatement; if (variableUpdateStatement != null) { DataDictionary.Interpreter.Expression expression = variableUpdateStatement.Expression; DataDictionary.Interpreter.StructExpression structExpression = expression as DataDictionary.Interpreter.StructExpression; if (structExpression != null) { Dictionary <string, DataDictionary.Interpreter.Expression> associations = structExpression.Associations; foreach (KeyValuePair <string, DataDictionary.Interpreter.Expression> value in associations) { DataDictionary.Rules.Action action = (DataDictionary.Rules.Action)DataDictionary.Generated.acceptor.getFactory().createAction(); action.Expression = structExpression.Structure.ToString() + "." + value.Key + " <- " + value.Value.ToString(); string aString = value.Value.ToString(); ActionTreeNode actionTreeNode = new ActionTreeNode(action); BaseTreeNode parent = Parent as BaseTreeNode; if ((parent != null) && (parent.Nodes != null)) { DataDictionary.Rules.RuleCondition ruleCondition = Item.Enclosing as DataDictionary.Rules.RuleCondition; if (ruleCondition != null) { ruleCondition.appendActions(action); } else { DataDictionary.Tests.SubStep subStep = Item.Enclosing as DataDictionary.Tests.SubStep; if (subStep != null) { subStep.appendActions(action); } } parent.Nodes.Add(actionTreeNode); } } } } Delete(); SortSubNodes(); }