public static boolean isMultipleCardinality(AbstractElement e) { return isOneOrMoreCardinality(e) || isAnyCardinality(e); }
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 }}; }
/** * @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 } }; }
&& (globalLastAddedElement != current && (globalLastAddedElement == null || GrammarUtil.isOptionalCardinality(globalLastAddedElement) || GrammarUtil.isOneOrMoreCardinality(globalLastAddedElement)))) { createAndAddFollowElement(current, lookAhead);
if (!failedPredicateAtEOF && (globalLastAddedElement != current && (globalLastAddedElement == null || GrammarUtil.isOptionalCardinality(globalLastAddedElement) || GrammarUtil.isOneOrMoreCardinality(globalLastAddedElement)))) { createAndAddFollowElement(current, lookAhead);