/** * @param GroupNode $astNode * * @return bool */ public function postVisitGroupNode(GroupNode $astNode) { if (0 < $astNode->countChildren()) { $this->visitContext->popParentId(); } return true; }
/** * @param CommentNode $astNode * @return bool */ public function visitCommentNode(CommentNode $astNode) { $increment = $this->visitContext->countParentIds(); $this->formatter->indent($increment, $this->dotWriter); $nodeId = $this->buildNumberedDOTIdentifier('"comment[%s]"', $this->visitContext); $parentId = $this->visitContext->peekParentId(); $this->dotWriter->writeEdgeStatement($parentId, $nodeId); $this->formatter->whitespace(1, $this->dotWriter); //formatting options $this->dotWriter->writeStatementTerminator(); return true; }
/** * @param RuleNode $astNode * @return bool */ public function postVisitRuleNode(RuleNode $astNode) { $this->visitContext->popParentId(); return true; }
/** * @param SyntaxNode $astNode * @return bool */ public function postVisitSyntaxNode(SyntaxNode $astNode) { $this->dotWriter->closeGraph(); $this->visitContext->popParentId(); return true; }
protected function buildNumberedDOTIdentifier($sprintfPattern, VisitContext $visitContext) { $idNumber = $visitContext->getNodeCount(); return sprintf($sprintfPattern, $idNumber); }