protected CharSequence _compileInitUnorderedGroups( final ParserRule it, final AntlrOptions options) { StringConcatenation _builder = new StringConcatenation(); { boolean _definesUnorderedGroups = this._grammarAccessExtensions.definesUnorderedGroups(it, options); if (_definesUnorderedGroups) { _builder.newLineIfNotEmpty(); _builder.append( "UnorderedGroupState myUnorderedGroupState = getUnorderedGroupHelper().snapShot("); _builder.newLine(); { List<EObject> _eAllContentsAsList = EcoreUtil2.eAllContentsAsList(it); Iterable<UnorderedGroup> _filter = Iterables.<UnorderedGroup>filter(_eAllContentsAsList, UnorderedGroup.class); boolean _hasElements = false; for (final UnorderedGroup group : _filter) { if (!_hasElements) { _hasElements = true; } else { _builder.appendImmediate(", ", ""); } _builder.append("grammarAccess."); UnorderedGroup _originalElement = AntlrGrammarGenUtil.<UnorderedGroup>getOriginalElement(group); String _gaRuleElementAccessor = this._grammarAccess.gaRuleElementAccessor(_originalElement); _builder.append(_gaRuleElementAccessor, ""); _builder.newLineIfNotEmpty(); } } _builder.append(");"); } } return _builder; }
@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; }