public AbstractElement getParent(AbstractElement ele) { EObject cnt = ele.eContainer(); return cnt instanceof AbstractElement ? (AbstractElement) cnt : null; }
protected String card(AbstractElement ele) { if (!showCardinality) return ""; return ele.getCardinality() == null ? "" : ele.getCardinality(); }
public Iterable<AbstractElement> getAlternativeChildren(AbstractElement ele) { switch (ele.eClass().getClassifierID()) { case XtextPackage.ALTERNATIVES: return ((Alternatives) ele).getElements(); default: return null; } }
calculator.doSwitch(abstractElement); if (GrammarUtil.isOptionalCardinality(abstractElement)) { EObject container = abstractElement.eContainer(); if (container instanceof Group) { Group group = (Group) container; calculator.doSwitch(group); } else if (idx < group.getElements().size() - 1 && "?".equals(abstractElement.getCardinality())) { // loops are fine AbstractElement nextElement = group.getElements().get(idx + 1); if (!currentState.contains(nextElement)) { EObject container = abstractElement.eContainer(); if (container instanceof Group) { Group group = (Group) container;
if (!(ele.eContainer() instanceof AbstractElement)) return false; TreeIterator<EObject> ti = ele.eAllContents(); while (ti.hasNext()) { EObject obj = ti.next(); TreeIterator<EObject> ti = ele.eContainer().eAllContents(); while (ti.hasNext()) { EObject obj = ti.next();
protected boolean _predicated(final AbstractElement it) { return it.isPredicated(); }
protected boolean isOptional(AbstractElement ele) { if (GrammarUtil.isOptionalCardinality(ele) || ele instanceof Action) return true; if (ele instanceof CompoundElement) { List<EObject> children = ele.eContents(); if (children.isEmpty() && getBuilder().filter(ele)) return true; if (ele instanceof Alternatives) { for (AbstractElement a : ((Alternatives) ele).getElements()) if (isOptional(a)) return true; return false; } for (EObject e : children) if (e instanceof AbstractElement && !isOptional((AbstractElement) e)) return false; return true; } else return false; }
@SuppressWarnings({ "unchecked", "rawtypes" }) public final S getState(AbstractElement ele) { if (ele == null) return null; for (Adapter a : ele.eAdapters()) if (a instanceof INFAState) { INFAState s = (INFAState) a; if (s.getBuilder() == this) return (S) s; } S t = createState(ele); ele.eAdapters().add((Adapter) t); return t; }
protected boolean containsRelevantElement(AbstractElement ele) { Iterator<EObject> i = Iterators.concat(Collections.singleton(ele).iterator(), ele.eAllContents()); while (i.hasNext()) { EObject o = i.next(); if (o instanceof Action || o instanceof Assignment) return true; if (o instanceof RuleCall && containsRelevantElement(((RuleCall) o).getRule().getAlternatives())) return true; } return false; }
calculator.doSwitch(abstractElement); if (GrammarUtil.isOptionalCardinality(abstractElement)) { EObject container = abstractElement.eContainer(); if (container instanceof Group) { Group group = (Group) container; calculator.doSwitch(group); } else if (idx < group.getElements().size() - 1 && "?".equals(abstractElement.getCardinality())) { // loops are fine AbstractElement nextElement = group.getElements().get(idx + 1); if (!currentState.contains(nextElement)) { EObject container = abstractElement.eContainer(); if (container instanceof Group) { Group group = (Group) container;
private void popChecked(AbstractElement element) { if (element.isPredicated()) { elementStack.pop(); } }
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; }
public boolean isStartState() { return element.eContainer() instanceof AbstractRule; }
public static boolean isOneOrMoreCardinality(AbstractElement e) { return e.getCardinality() != null && (e.getCardinality().equals("+")); }
public Iterable<AbstractElement> getUnorderedChildren(AbstractElement ele) { switch (ele.eClass().getClassifierID()) { case XtextPackage.UNORDERED_GROUP: return ((UnorderedGroup) ele).getElements(); default: return null; } }
private void pushChecked(AbstractElement element) { if (element.isPredicated()) { elementStack.push(element); } }
@Override public boolean filter(AbstractElement grammarElement) { if (grammarElement.eContainer() instanceof AbstractRule) return false; if (EcoreUtil2.getContainerOfType(grammarElement.eContainer(), Assignment.class) != null) return true; return false; }
public static boolean isAnyCardinality(AbstractElement e) { return e.getCardinality() != null && (e.getCardinality().equals("*")); }
protected Assignment getAssignment(AbstractElement ele) { Assignment ass = GrammarUtil.containingAssignment(ele); if (ass == null) throw new RuntimeException("Only Assigned " + ele.eClass().getName() + "s are allowed"); return ass; }
protected boolean shouldTraverse(AbstractElement object) { return !object.isPredicated() || alreadyChecked.add(object); }