public override int VisitIf(CIf node) { ExtractSubgraphs(node, CIf.CT_CONDITION, CIf.ContextNames); ExtractSubgraphs(node, CIf.CT_IFCLAUSE, CIf.ContextNames); ExtractSubgraphs(node, CIf.CT_ELSECLAUSE, CIf.ContextNames); base.VisitIf(node); m_ostream.WriteLine("{0}->{1}", currentParent.M_GraphVizName, node.M_GraphVizName); return(0); }
public override int VisitIf(CIf node) { CEmmitableCodeContainer parent = m_parents.Peek() as CEmmitableCodeContainer; CIfStatement rep = new CIfStatement(CodeBlockType.CB_IFSTATEMENTS, 3, parent); parent.AddCode(rep, m_parentContexts.Peek()); m_parents.Push(rep); m_parentContexts.Push(CIfStatement.CC_IFSTATEMENT_CONDITION); foreach (ASTVisitableElement child in node.GetChildrenContext(CIf.CT_CONDITION)) { Visit(child); } m_parents.Pop(); m_parentContexts.Pop(); m_parents.Push(rep); m_parentContexts.Push(CIfStatement.CC_IFSTATEMENT_IFBODY); // Visit Function Definitions and emmit code to distinct functions foreach (ASTVisitableElement child in node.GetChildrenContext(CIf.CT_IFCLAUSE)) { Visit(child); } m_parents.Pop(); m_parentContexts.Pop(); if (node.GetChildrenContext(CIf.CT_ELSECLAUSE).Count() == 0) { return(0); } m_parents.Push(rep); m_parentContexts.Push(CIfStatement.CC_IFSTATEMENT_ELSEBODY); // Visit Function Definitions and emmit code to distinct functions foreach (ASTVisitableElement child in node.GetChildrenContext(CIf.CT_ELSECLAUSE)) { Visit(child); } m_parents.Pop(); m_parentContexts.Pop(); return(0); }
public virtual T VisitIf(CIf node) { return(VisitChildren(node)); }