@Override public Boolean caseUnorderedGroup(UnorderedGroup object) { if (object == this.group) { boolean more = true; for (AbstractElement element : object.getElements()) { if (handledAlternatives == null || !handledAlternatives.contains(element)) { this.group = null; more = doSwitch(element) && more; this.group = object; } } if (more && GrammarUtil.isMultipleCardinality(object)) { handledAlternatives = null; this.group = null; return caseUnorderedGroup(object); } return more || isOptional(object); } else { boolean more = true; for (AbstractElement element : object.getElements()) { more = doSwitch(element) && more; } return more || isOptional(object); } }
protected List<AbstractElement> _contentsAsList(final UnorderedGroup it) { ArrayList<AbstractElement> _xblockexpression = null; { final ArrayList<AbstractElement> result = CollectionLiterals.<AbstractElement>newArrayList(it); EList<AbstractElement> _elements = it.getElements(); final Function1<AbstractElement, List<AbstractElement>> _function = new Function1<AbstractElement, List<AbstractElement>>() { @Override public List<AbstractElement> apply(final AbstractElement it) { return GrammarAccessExtensions.this.contentsAsList(it); } }; List<List<AbstractElement>> _map = ListExtensions.<AbstractElement, List<AbstractElement>>map(_elements, _function); Iterable<AbstractElement> _flatten = Iterables.<AbstractElement>concat(_map); List<AbstractElement> _list = IterableExtensions.<AbstractElement>toList(_flatten); Iterables.<AbstractElement>addAll(result, _list); _xblockexpression = result; } return _xblockexpression; }
@Override protected String _ebnf2( final UnorderedGroup it, final AntlrOptions options, final boolean supportActions) { String _xifexpression = null; if (supportActions) { String _xblockexpression = null; { EList<AbstractElement> _elements = it.getElements(); final Function1<AbstractElement, Boolean> _function = new Function1<AbstractElement, Boolean>() { @Override public Boolean apply(final AbstractElement it) { boolean _isOptionalCardinality = GrammarUtil.isOptionalCardinality(it); return Boolean.valueOf((!_isOptionalCardinality)); } }; Iterable<AbstractElement> _filter = IterableExtensions.<AbstractElement>filter(_elements, _function); final int mandatoryContent = IterableExtensions.size(_filter); StringConcatenation _builder = new StringConcatenation(); _builder.append("("); _builder.newLine(); _builder.append("\t"); _builder.append("{ "); _builder.newLine(); _builder.append("\t "); _builder.append("getUnorderedGroupHelper().enter(grammarAccess."); UnorderedGroup _originalElement = AntlrGrammarGenUtil.<UnorderedGroup>getOriginalElement(it); String _gaRuleElementAccessor = this._grammarAccess.gaRuleElementAccessor(_originalElement); _builder.append(_gaRuleElementAccessor, "\t "); _builder.append(");"); _builder.newLineIfNotEmpty(); _builder.append("\t"); _builder.append("}"); _builder.newLine(); _builder.append("\t"); _builder.append("("); _builder.newLine(); _builder.append("\t\t"); _builder.append("("); _builder.newLine(); { EList<AbstractElement> _elements_1 = it.getElements(); Iterable<Pair<Integer, AbstractElement>> _indexed = IterableExtensions.<AbstractElement>indexed(_elements_1); boolean _hasElements = false; for (final Pair<Integer, AbstractElement> element : _indexed) { if (!_hasElements) { _hasElements = true; } else { _builder.appendImmediate("|", ""); } _builder.append("("); _builder.newLine(); _builder.append("\t"); _builder.append("{getUnorderedGroupHelper().canSelect(grammarAccess."); UnorderedGroup _originalElement_1 = AntlrGrammarGenUtil.<UnorderedGroup>getOriginalElement(it); String _gaRuleElementAccessor_1 = this._grammarAccess.gaRuleElementAccessor(_originalElement_1); _builder.append(_gaRuleElementAccessor_1, "\t"); _builder.append(", "); Integer _key = element.getKey(); _builder.append(_key, "\t"); _builder.append(")}?=>("); _builder.newLineIfNotEmpty(); _builder.append("\t\t"); _builder.append("{"); _builder.newLine(); _builder.append("\t\t\t"); _builder.append("getUnorderedGroupHelper().select(grammarAccess."); UnorderedGroup _originalElement_2 = AntlrGrammarGenUtil.<UnorderedGroup>getOriginalElement(it); String _gaRuleElementAccessor_2 = this._grammarAccess.gaRuleElementAccessor(_originalElement_2); _builder.append(_gaRuleElementAccessor_2, "\t\t\t"); _builder.append(", "); Integer _key_1 = element.getKey(); _builder.append(_key_1, "\t\t\t"); _builder.append(");"); _builder.newLineIfNotEmpty(); _builder.append("\t\t"); _builder.append("}"); _builder.newLine(); _builder.append("\t\t\t\t\t"); _builder.append("({true}?=>("); AbstractElement _value = element.getValue(); String _ebnf2 = this.ebnf2(_value, options, supportActions); _builder.append(_ebnf2, "\t\t\t\t\t"); _builder.append("))"); { AbstractElement _value_1 = element.getValue(); boolean _isMultipleCardinality = GrammarUtil.isMultipleCardinality(_value_1); if (_isMultipleCardinality) { _builder.append("+"); } } _builder.newLineIfNotEmpty(); _builder.append("\t\t"); _builder.append("{ "); _builder.newLine(); _builder.append("\t\t\t"); _builder.append("getUnorderedGroupHelper().returnFromSelection(grammarAccess."); UnorderedGroup _originalElement_3 = AntlrGrammarGenUtil.<UnorderedGroup>getOriginalElement(it); String _gaRuleElementAccessor_3 = this._grammarAccess.gaRuleElementAccessor(_originalElement_3); _builder.append(_gaRuleElementAccessor_3, "\t\t\t"); _builder.append(");"); _builder.newLineIfNotEmpty(); _builder.append("\t\t"); _builder.append("}"); _builder.newLine(); _builder.append("\t"); _builder.append(")"); _builder.newLine(); _builder.append(")"); _builder.newLine(); } } _builder.append("\t\t"); _builder.append(")"); { if ((mandatoryContent != 0)) { _builder.append("+"); _builder.newLineIfNotEmpty(); _builder.append("\t\t"); _builder.append("{getUnorderedGroupHelper().canLeave(grammarAccess."); UnorderedGroup _originalElement_4 = AntlrGrammarGenUtil.<UnorderedGroup>getOriginalElement(it); String _gaRuleElementAccessor_4 = this._grammarAccess.gaRuleElementAccessor(_originalElement_4); _builder.append(_gaRuleElementAccessor_4, "\t\t"); _builder.append(")}?"); } else { _builder.append("*"); } } _builder.newLineIfNotEmpty(); _builder.append("\t"); _builder.append(")"); _builder.newLine(); _builder.append(")"); _builder.newLine(); _builder.append("\t"); _builder.append("{ "); _builder.newLine(); _builder.append("\t "); _builder.append("getUnorderedGroupHelper().leave(grammarAccess."); UnorderedGroup _originalElement_5 = AntlrGrammarGenUtil.<UnorderedGroup>getOriginalElement(it); String _gaRuleElementAccessor_5 = this._grammarAccess.gaRuleElementAccessor(_originalElement_5); _builder.append(_gaRuleElementAccessor_5, "\t "); _builder.append(");"); _builder.newLineIfNotEmpty(); _builder.append("\t"); _builder.append("}"); _builder.newLine(); _xblockexpression = _builder.toString(); } _xifexpression = _xblockexpression; } else { _xifexpression = super._ebnf2(it, options, supportActions); } return _xifexpression; }