protected Digraph drawRule(AbstractRule rule, Digraph d) { if (rule.getType().getClassifier() instanceof EClass) drawAbstractElementTree(rule.getAlternatives(), d); return d; }
protected Node drawAbstractElementTree(AbstractElement ele, Digraph d) { Node n = newNode(ele, aeSwitch.doSwitch(ele)); d.add(n); for (EObject c : ele.eContents()) if (c instanceof AbstractElement) { drawAbstractElementTree((AbstractElement) c, d); d.add(drawGrammarContainementEdge(ele, (AbstractElement) c)); } return n; }
@Override protected Node drawAbstractElementTree(AbstractElement ele, Digraph d) { Node n = super.drawAbstractElementTree(ele, d); DefaultNFAState nfas = nfaProvider.getNFA(ele); for (DefaultNFATransition t : nfas.getOutgoing()) d.add(drawFollowerEdge(ele, t, false)); for (DefaultNFATransition t : nfas.getOutgoingAfterReturn()) d.add(drawFollowerEdge(ele, t, true)); if (nfas.getOutgoing().size() == 0 && nfas.getOutgoingAfterReturn().size() == 0 && !nfas.isEndState()) n.setStyle("dotted"); if (nfas.isEndState()) n.put("peripheries", "2"); return n; }
@Override protected Node drawAbstractElementTree(AbstractElement grammarElement, Digraph digraph) { Node node = super.drawAbstractElementTree(grammarElement, digraph); MatcherState nfas = nfaProvider.getNFA(grammarElement); for (MatcherTransition outgoing : nfas.getOutgoing()) digraph.add(drawFollowerEdge(grammarElement, outgoing, false)); for (MatcherTransition outgoingAfterReturn : nfas.getOutgoingAfterReturn()) digraph.add(drawFollowerEdge(grammarElement, outgoingAfterReturn, true)); // for (MatcherTransition outgoingToNextRule : nfas.getOutgoingToNextRule()) // digraph.add(drawOutgoingToNextRuel(outgoingToNextRule)); if (nfas.isEndState()) node.put("peripheries", "2"); if (!nfas.hasTransitions()) node.setStyle("dotted"); return node; }
@Override protected Node drawAbstractElementTree(AbstractElement grammarElement, Digraph digraph) { Node node = super.drawAbstractElementTree(grammarElement, digraph); TreeConstState nfas = nfaProvider.getNFA(grammarElement); for (TreeConstTransition outgoing : nfas.getOutgoing()) digraph.add(drawFollowerEdge(grammarElement, outgoing, false)); for (TreeConstTransition outgoingAfterReturn : nfas.getOutgoingAfterReturn()) digraph.add(drawFollowerEdge(grammarElement, outgoingAfterReturn, true)); if (nfas.getStatusInternal() != Status.ENABLED) node.setStyle("dashed"); if (nfas.isEndState()) node.put("peripheries", "2"); setStatusStyle(node, nfas.getStatus()); node.setLabel(nfas + node.get("label")); return node; }