public AbstractElement getParent(AbstractElement ele) { EObject cnt = ele.eContainer(); return cnt instanceof AbstractElement ? (AbstractElement) cnt : null; }
public boolean isStartState() { return element.eContainer() instanceof AbstractRule; }
@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; }
protected String loadElementParentStatement(final AbstractElement ele) { String _xifexpression = null; EObject _eContainer = ele.eContainer(); if ((_eContainer instanceof AbstractElement)) { EObject _eContainer_1 = ele.eContainer(); _xifexpression = this.gaElementAccessorLocalVarName(((AbstractElement) _eContainer_1)); } else { _xifexpression = "rule"; } return _xifexpression; }
@Override public boolean filter(AbstractElement ele) { // never filter root elements if (!(ele.eContainer() instanceof AbstractElement)) return false; if (ele instanceof Assignment || ele instanceof Action) return false; if (GrammarUtil.isUnassignedEObjectRuleCall(ele)) return false; return true; }
public boolean isMany(AbstractElement element) { return GrammarUtil.isMultipleCardinality(element) || ((element.eContainer() instanceof AbstractElement) && isMany((AbstractElement) element .eContainer())); }
/** * Return the containing group if it contains exactly one element. * * @since 2.14 */ protected AbstractElement getEnclosingSingleElementGroup(AbstractElement elementToParse) { EObject container = elementToParse.eContainer(); if (container instanceof Group) { if (((Group) container).getElements().size() == 1) { return (AbstractElement) container; } } return null; }
private List<String> getElementDescription(final AbstractElement element) { final ArrayList<String> result = new ArrayList<String>(); AbstractElement container = element; while ((container != null)) { { result.addAll(0, this.getSingleElementDescription(container)); final EObject eContainer = container.eContainer(); AbstractElement _xifexpression = null; if ((eContainer instanceof AbstractElement)) { _xifexpression = ((AbstractElement)eContainer); } else { _xifexpression = null; } container = _xifexpression; } } return result; }
private boolean hasMandatoryFollowElements(AbstractElement lastParsedElement) { if (lastParsedElement.eContainer() instanceof AbstractElement) { AbstractElement directParent = (AbstractElement) lastParsedElement.eContainer(); if (directParent instanceof Group) { Group group = (Group) directParent; int idx = group.getElements().indexOf(lastParsedElement) + 1; for (int i = idx; i < group.getElements().size(); i++) { if (isMandatory(group.getElements().get(i))) return true; } } return hasMandatoryFollowElements(directParent); } return false; }
private String[][] getRequiredRuleNames(String ruleName, AbstractElement elementToParse) { if (ruleName == null) { if (elementToParse instanceof RuleCall) { RuleCall call = (RuleCall) elementToParse; if (call.getRule() instanceof ParserRule) return new String[][] {{ "rule" + call.getRule().getName() }}; } return new String[0][]; } if (!(GrammarUtil.isOptionalCardinality(elementToParse) || GrammarUtil.isOneOrMoreCardinality(elementToParse))) return new String[][] {{ ruleName }}; if ((elementToParse.eContainer() instanceof Group)) { List<AbstractElement> tokens = ((Group) elementToParse.eContainer()).getElements(); int idx = tokens.indexOf(elementToParse) + 1; if (idx != tokens.size()) { String secondRule = getRuleName((AbstractElement) elementToParse.eContainer()); secondRule = secondRule.substring(0, secondRule.lastIndexOf('_') + 1) + idx; if (GrammarUtil.isMultipleCardinality(elementToParse)) return new String[][] {{ ruleName }, {ruleName, secondRule}}; return new String[][] { {ruleName, secondRule} }; } } return new String[][] {{ ruleName }}; }
break; } else e = (AbstractElement) e.eContainer(); e = assignment; while (e != group) break; else e = (AbstractElement) e.eContainer(); if (e == group) required++;
/** * @since 2.14 */ protected String[][] getAdjustedRequiredRuleNames(Param param, AbstractElement elementToParse, String originalRuleName) { String adjustedRuleName = adjustRuleName(originalRuleName, param); if (!(GrammarUtil.isOptionalCardinality(elementToParse) || GrammarUtil.isOneOrMoreCardinality(elementToParse))) { return new String[][] { { adjustedRuleName } }; } EObject container = elementToParse.eContainer(); if (container instanceof Group) { Group group = (Group) container; List<AbstractElement> filteredElements = getFilteredElements(group.getElements(), param); int idx = filteredElements.indexOf(elementToParse) + 1; if (idx != filteredElements.size()) { String adjustedSecondRule = getAdjustedSecondRule(param, group, idx); return getRuleNamesInGroup(param, elementToParse, adjustedRuleName, adjustedSecondRule); } } return new String[][] { { adjustedRuleName } }; }
multiple = multiple || isMultipleCardinality(ele); optional = optional || isOptionalCardinality(ele); if (ele.eContainer() instanceof ParserRule && ((ParserRule) ele.eContainer()).getType().getClassifier() instanceof EClass) semanticType = (EClass) ((ParserRule) ele.eContainer()).getType().getClassifier(); if (ele instanceof Assignment) { return createElement(ConstraintType.ASSIGNMENT, ele, semanticType, multiple, optional);
if (!(ele.eContainer() instanceof AbstractElement)) return false; TreeIterator<EObject> ti = ele.eContainer().eAllContents(); while (ti.hasNext()) { EObject obj = ti.next();
protected void collectOutgoingByContainer(AbstractElement element, Set<AbstractElement> visited, boolean isRuleCall, AbstractElement loopCenter) { EObject container = element.eContainer(); if (container instanceof Group || container instanceof UnorderedGroup) { CompoundElement compoundContainer = (CompoundElement) container;
calculator.doSwitch(abstractElement); if (GrammarUtil.isOptionalCardinality(abstractElement)) { EObject container = abstractElement.eContainer(); if (container instanceof Group) { Group group = (Group) container; EObject container = abstractElement.eContainer(); if (container instanceof Group) { Group group = (Group) container;
calculator.doSwitch(abstractElement); if (GrammarUtil.isOptionalCardinality(abstractElement)) { EObject container = abstractElement.eContainer(); if (container instanceof Group) { Group group = (Group) container; EObject container = abstractElement.eContainer(); if (container instanceof Group) { Group group = (Group) container;