[eclipse/xtext-core#1093] workaround for missing return keywords in serialization

Signed-off-by: Christian Dietrich <christian.dietrich@itemis.de>
This commit is contained in:
Christian Dietrich 2020-12-04 12:04:26 +01:00
parent 459602b791
commit 5534248b7f
14 changed files with 4918 additions and 5688 deletions

View file

@ -1,5 +1,5 @@
/*******************************************************************************
* Copyright (c) 2019 itemis AG (http://www.itemis.eu) and others.
* Copyright (c) 2019, 2020 itemis AG (http://www.itemis.eu) and others.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0.
@ -27,10 +27,9 @@ public class XtextSerializationTokensTest extends AbstractXtextTests {
this.with(new XtextStandaloneSetup());
}
@Ignore
@Test
public void testParserRuleReturnsToken() throws Exception {
this.serializeAndCheckTokens(
serializeAndCheckTokens(
"grammar org.eclipse.xtext.serializer.XtextSerializationTokensTestLanguage with org.eclipse.xtext.common.Terminals\n" +
"\n" +
"import \"http://www.eclipse.org/emf/2002/Ecore\" as ecore\n" +
@ -41,9 +40,8 @@ public class XtextSerializationTokensTest extends AbstractXtextTests {
}
@Ignore
@Test
public void testParserRuleGreaterSignToken() throws Exception {
this.serializeAndCheckTokens(
serializeAndCheckTokens(
"grammar org.eclipse.xtext.serializer.XtextSerializationTokensTestLanguage with org.eclipse.xtext.common.Terminals\n" +
"\n" +
"import \"http://www.eclipse.org/emf/2002/Ecore\" as ecore\n" +

View file

@ -71,12 +71,11 @@ public class XtextParser extends AbstractContentAssistParser {
builder.put(grammarAccess.getAnnotationAccess().getGroup(), "rule__Annotation__Group__0");
builder.put(grammarAccess.getParserRuleAccess().getGroup(), "rule__ParserRule__Group__0");
builder.put(grammarAccess.getParserRuleAccess().getGroup_1_0(), "rule__ParserRule__Group_1_0__0");
builder.put(grammarAccess.getParserRuleAccess().getGroup_1_0_2_1(), "rule__ParserRule__Group_1_0_2_1__0");
builder.put(grammarAccess.getParserRuleAccess().getGroup_1_1(), "rule__ParserRule__Group_1_1__0");
builder.put(grammarAccess.getParserRuleAccess().getGroup_1_1_1(), "rule__ParserRule__Group_1_1_1__0");
builder.put(grammarAccess.getParserRuleAccess().getGroup_2(), "rule__ParserRule__Group_2__0");
builder.put(grammarAccess.getParserRuleAccess().getGroup_2_2(), "rule__ParserRule__Group_2_2__0");
builder.put(grammarAccess.getParserRuleAccess().getGroup_2_2_1(), "rule__ParserRule__Group_2_2_1__0");
builder.put(grammarAccess.getReturnsCauseAccess().getGroup(), "rule__ReturnsCause__Group__0");
builder.put(grammarAccess.getRuleNameAndParamsAccess().getGroup(), "rule__RuleNameAndParams__Group__0");
builder.put(grammarAccess.getRuleNameAndParamsAccess().getGroup_1(), "rule__RuleNameAndParams__Group_1__0");
builder.put(grammarAccess.getRuleNameAndParamsAccess().getGroup_1_1(), "rule__RuleNameAndParams__Group_1_1__0");
@ -125,7 +124,6 @@ public class XtextParser extends AbstractContentAssistParser {
builder.put(grammarAccess.getTerminalRuleAccess().getGroup(), "rule__TerminalRule__Group__0");
builder.put(grammarAccess.getTerminalRuleAccess().getGroup_2_0(), "rule__TerminalRule__Group_2_0__0");
builder.put(grammarAccess.getTerminalRuleAccess().getGroup_2_1(), "rule__TerminalRule__Group_2_1__0");
builder.put(grammarAccess.getTerminalRuleAccess().getGroup_2_1_1(), "rule__TerminalRule__Group_2_1_1__0");
builder.put(grammarAccess.getTerminalAlternativesAccess().getGroup(), "rule__TerminalAlternatives__Group__0");
builder.put(grammarAccess.getTerminalAlternativesAccess().getGroup_1(), "rule__TerminalAlternatives__Group_1__0");
builder.put(grammarAccess.getTerminalAlternativesAccess().getGroup_1_1(), "rule__TerminalAlternatives__Group_1_1__0");
@ -140,7 +138,6 @@ public class XtextParser extends AbstractContentAssistParser {
builder.put(grammarAccess.getCharacterRangeAccess().getGroup(), "rule__CharacterRange__Group__0");
builder.put(grammarAccess.getCharacterRangeAccess().getGroup_1(), "rule__CharacterRange__Group_1__0");
builder.put(grammarAccess.getEnumRuleAccess().getGroup(), "rule__EnumRule__Group__0");
builder.put(grammarAccess.getEnumRuleAccess().getGroup_3(), "rule__EnumRule__Group_3__0");
builder.put(grammarAccess.getEnumLiteralsAccess().getGroup(), "rule__EnumLiterals__Group__0");
builder.put(grammarAccess.getEnumLiteralsAccess().getGroup_1(), "rule__EnumLiterals__Group_1__0");
builder.put(grammarAccess.getEnumLiteralsAccess().getGroup_1_1(), "rule__EnumLiterals__Group_1_1__0");
@ -163,12 +160,11 @@ public class XtextParser extends AbstractContentAssistParser {
builder.put(grammarAccess.getParserRuleAccess().getAnnotationsAssignment_0(), "rule__ParserRule__AnnotationsAssignment_0");
builder.put(grammarAccess.getParserRuleAccess().getFragmentAssignment_1_0_0(), "rule__ParserRule__FragmentAssignment_1_0_0");
builder.put(grammarAccess.getParserRuleAccess().getWildcardAssignment_1_0_2_0(), "rule__ParserRule__WildcardAssignment_1_0_2_0");
builder.put(grammarAccess.getParserRuleAccess().getTypeAssignment_1_0_2_1_1(), "rule__ParserRule__TypeAssignment_1_0_2_1_1");
builder.put(grammarAccess.getParserRuleAccess().getTypeAssignment_1_1_1_1(), "rule__ParserRule__TypeAssignment_1_1_1_1");
builder.put(grammarAccess.getParserRuleAccess().getDefinesHiddenTokensAssignment_2_0(), "rule__ParserRule__DefinesHiddenTokensAssignment_2_0");
builder.put(grammarAccess.getParserRuleAccess().getHiddenTokensAssignment_2_2_0(), "rule__ParserRule__HiddenTokensAssignment_2_2_0");
builder.put(grammarAccess.getParserRuleAccess().getHiddenTokensAssignment_2_2_1_1(), "rule__ParserRule__HiddenTokensAssignment_2_2_1_1");
builder.put(grammarAccess.getParserRuleAccess().getAlternativesAssignment_4(), "rule__ParserRule__AlternativesAssignment_4");
builder.put(grammarAccess.getReturnsCauseAccess().getTypeAssignment_1(), "rule__ReturnsCause__TypeAssignment_1");
builder.put(grammarAccess.getRuleNameAndParamsAccess().getNameAssignment_0(), "rule__RuleNameAndParams__NameAssignment_0");
builder.put(grammarAccess.getRuleNameAndParamsAccess().getParametersAssignment_1_1_0(), "rule__RuleNameAndParams__ParametersAssignment_1_1_0");
builder.put(grammarAccess.getRuleNameAndParamsAccess().getParametersAssignment_1_1_1_1(), "rule__RuleNameAndParams__ParametersAssignment_1_1_1_1");
@ -220,7 +216,6 @@ public class XtextParser extends AbstractContentAssistParser {
builder.put(grammarAccess.getTerminalRuleAccess().getFragmentAssignment_2_0_0(), "rule__TerminalRule__FragmentAssignment_2_0_0");
builder.put(grammarAccess.getTerminalRuleAccess().getNameAssignment_2_0_1(), "rule__TerminalRule__NameAssignment_2_0_1");
builder.put(grammarAccess.getTerminalRuleAccess().getNameAssignment_2_1_0(), "rule__TerminalRule__NameAssignment_2_1_0");
builder.put(grammarAccess.getTerminalRuleAccess().getTypeAssignment_2_1_1_1(), "rule__TerminalRule__TypeAssignment_2_1_1_1");
builder.put(grammarAccess.getTerminalRuleAccess().getAlternativesAssignment_4(), "rule__TerminalRule__AlternativesAssignment_4");
builder.put(grammarAccess.getTerminalAlternativesAccess().getElementsAssignment_1_1_1(), "rule__TerminalAlternatives__ElementsAssignment_1_1_1");
builder.put(grammarAccess.getTerminalGroupAccess().getElementsAssignment_1_1(), "rule__TerminalGroup__ElementsAssignment_1_1");
@ -230,7 +225,6 @@ public class XtextParser extends AbstractContentAssistParser {
builder.put(grammarAccess.getCharacterRangeAccess().getRightAssignment_1_2(), "rule__CharacterRange__RightAssignment_1_2");
builder.put(grammarAccess.getEnumRuleAccess().getAnnotationsAssignment_0(), "rule__EnumRule__AnnotationsAssignment_0");
builder.put(grammarAccess.getEnumRuleAccess().getNameAssignment_2(), "rule__EnumRule__NameAssignment_2");
builder.put(grammarAccess.getEnumRuleAccess().getTypeAssignment_3_1(), "rule__EnumRule__TypeAssignment_3_1");
builder.put(grammarAccess.getEnumRuleAccess().getAlternativesAssignment_5(), "rule__EnumRule__AlternativesAssignment_5");
builder.put(grammarAccess.getEnumLiteralsAccess().getElementsAssignment_1_1_1(), "rule__EnumLiterals__ElementsAssignment_1_1_1");
builder.put(grammarAccess.getEnumLiteralDeclarationAccess().getEnumLiteralAssignment_0(), "rule__EnumLiteralDeclaration__EnumLiteralAssignment_0");

View file

@ -250,6 +250,23 @@ finally {
}
// Rule ReturnsCause
ruleReturnsCause
@init {
int stackSize = keepStackSize();
}
:
(
{ before(grammarAccess.getReturnsCauseAccess().getGroup()); }
(rule__ReturnsCause__Group__0)
{ after(grammarAccess.getReturnsCauseAccess().getGroup()); }
)
;
finally {
restoreStackSize(stackSize);
}
// Rule RuleNameAndParams
ruleRuleNameAndParams
@init {
@ -1547,9 +1564,9 @@ rule__ParserRule__Alternatives_1_0_2
)
|
(
{ before(grammarAccess.getParserRuleAccess().getGroup_1_0_2_1()); }
(rule__ParserRule__Group_1_0_2_1__0)?
{ after(grammarAccess.getParserRuleAccess().getGroup_1_0_2_1()); }
{ before(grammarAccess.getParserRuleAccess().getReturnsCauseParserRuleCall_1_0_2_1()); }
(ruleReturnsCause)?
{ after(grammarAccess.getParserRuleAccess().getReturnsCauseParserRuleCall_1_0_2_1()); }
)
;
finally {
@ -3309,60 +3326,6 @@ finally {
}
rule__ParserRule__Group_1_0_2_1__0
@init {
int stackSize = keepStackSize();
}
:
rule__ParserRule__Group_1_0_2_1__0__Impl
rule__ParserRule__Group_1_0_2_1__1
;
finally {
restoreStackSize(stackSize);
}
rule__ParserRule__Group_1_0_2_1__0__Impl
@init {
int stackSize = keepStackSize();
}
:
(
{ before(grammarAccess.getParserRuleAccess().getReturnsKeyword_1_0_2_1_0()); }
'returns'
{ after(grammarAccess.getParserRuleAccess().getReturnsKeyword_1_0_2_1_0()); }
)
;
finally {
restoreStackSize(stackSize);
}
rule__ParserRule__Group_1_0_2_1__1
@init {
int stackSize = keepStackSize();
}
:
rule__ParserRule__Group_1_0_2_1__1__Impl
;
finally {
restoreStackSize(stackSize);
}
rule__ParserRule__Group_1_0_2_1__1__Impl
@init {
int stackSize = keepStackSize();
}
:
(
{ before(grammarAccess.getParserRuleAccess().getTypeAssignment_1_0_2_1_1()); }
(rule__ParserRule__TypeAssignment_1_0_2_1_1)
{ after(grammarAccess.getParserRuleAccess().getTypeAssignment_1_0_2_1_1()); }
)
;
finally {
restoreStackSize(stackSize);
}
rule__ParserRule__Group_1_1__0
@init {
int stackSize = keepStackSize();
@ -3407,63 +3370,9 @@ rule__ParserRule__Group_1_1__1__Impl
}
:
(
{ before(grammarAccess.getParserRuleAccess().getGroup_1_1_1()); }
(rule__ParserRule__Group_1_1_1__0)?
{ after(grammarAccess.getParserRuleAccess().getGroup_1_1_1()); }
)
;
finally {
restoreStackSize(stackSize);
}
rule__ParserRule__Group_1_1_1__0
@init {
int stackSize = keepStackSize();
}
:
rule__ParserRule__Group_1_1_1__0__Impl
rule__ParserRule__Group_1_1_1__1
;
finally {
restoreStackSize(stackSize);
}
rule__ParserRule__Group_1_1_1__0__Impl
@init {
int stackSize = keepStackSize();
}
:
(
{ before(grammarAccess.getParserRuleAccess().getReturnsKeyword_1_1_1_0()); }
'returns'
{ after(grammarAccess.getParserRuleAccess().getReturnsKeyword_1_1_1_0()); }
)
;
finally {
restoreStackSize(stackSize);
}
rule__ParserRule__Group_1_1_1__1
@init {
int stackSize = keepStackSize();
}
:
rule__ParserRule__Group_1_1_1__1__Impl
;
finally {
restoreStackSize(stackSize);
}
rule__ParserRule__Group_1_1_1__1__Impl
@init {
int stackSize = keepStackSize();
}
:
(
{ before(grammarAccess.getParserRuleAccess().getTypeAssignment_1_1_1_1()); }
(rule__ParserRule__TypeAssignment_1_1_1_1)
{ after(grammarAccess.getParserRuleAccess().getTypeAssignment_1_1_1_1()); }
{ before(grammarAccess.getParserRuleAccess().getReturnsCauseParserRuleCall_1_1_1()); }
(ruleReturnsCause)?
{ after(grammarAccess.getParserRuleAccess().getReturnsCauseParserRuleCall_1_1_1()); }
)
;
finally {
@ -3687,6 +3596,60 @@ finally {
}
rule__ReturnsCause__Group__0
@init {
int stackSize = keepStackSize();
}
:
rule__ReturnsCause__Group__0__Impl
rule__ReturnsCause__Group__1
;
finally {
restoreStackSize(stackSize);
}
rule__ReturnsCause__Group__0__Impl
@init {
int stackSize = keepStackSize();
}
:
(
{ before(grammarAccess.getReturnsCauseAccess().getReturnsKeyword_0()); }
'returns'
{ after(grammarAccess.getReturnsCauseAccess().getReturnsKeyword_0()); }
)
;
finally {
restoreStackSize(stackSize);
}
rule__ReturnsCause__Group__1
@init {
int stackSize = keepStackSize();
}
:
rule__ReturnsCause__Group__1__Impl
;
finally {
restoreStackSize(stackSize);
}
rule__ReturnsCause__Group__1__Impl
@init {
int stackSize = keepStackSize();
}
:
(
{ before(grammarAccess.getReturnsCauseAccess().getTypeAssignment_1()); }
(rule__ReturnsCause__TypeAssignment_1)
{ after(grammarAccess.getReturnsCauseAccess().getTypeAssignment_1()); }
)
;
finally {
restoreStackSize(stackSize);
}
rule__RuleNameAndParams__Group__0
@init {
int stackSize = keepStackSize();
@ -7087,63 +7050,9 @@ rule__TerminalRule__Group_2_1__1__Impl
}
:
(
{ before(grammarAccess.getTerminalRuleAccess().getGroup_2_1_1()); }
(rule__TerminalRule__Group_2_1_1__0)?
{ after(grammarAccess.getTerminalRuleAccess().getGroup_2_1_1()); }
)
;
finally {
restoreStackSize(stackSize);
}
rule__TerminalRule__Group_2_1_1__0
@init {
int stackSize = keepStackSize();
}
:
rule__TerminalRule__Group_2_1_1__0__Impl
rule__TerminalRule__Group_2_1_1__1
;
finally {
restoreStackSize(stackSize);
}
rule__TerminalRule__Group_2_1_1__0__Impl
@init {
int stackSize = keepStackSize();
}
:
(
{ before(grammarAccess.getTerminalRuleAccess().getReturnsKeyword_2_1_1_0()); }
'returns'
{ after(grammarAccess.getTerminalRuleAccess().getReturnsKeyword_2_1_1_0()); }
)
;
finally {
restoreStackSize(stackSize);
}
rule__TerminalRule__Group_2_1_1__1
@init {
int stackSize = keepStackSize();
}
:
rule__TerminalRule__Group_2_1_1__1__Impl
;
finally {
restoreStackSize(stackSize);
}
rule__TerminalRule__Group_2_1_1__1__Impl
@init {
int stackSize = keepStackSize();
}
:
(
{ before(grammarAccess.getTerminalRuleAccess().getTypeAssignment_2_1_1_1()); }
(rule__TerminalRule__TypeAssignment_2_1_1_1)
{ after(grammarAccess.getTerminalRuleAccess().getTypeAssignment_2_1_1_1()); }
{ before(grammarAccess.getTerminalRuleAccess().getReturnsCauseParserRuleCall_2_1_1()); }
(ruleReturnsCause)?
{ after(grammarAccess.getTerminalRuleAccess().getReturnsCauseParserRuleCall_2_1_1()); }
)
;
finally {
@ -8020,9 +7929,9 @@ rule__EnumRule__Group__3__Impl
}
:
(
{ before(grammarAccess.getEnumRuleAccess().getGroup_3()); }
(rule__EnumRule__Group_3__0)?
{ after(grammarAccess.getEnumRuleAccess().getGroup_3()); }
{ before(grammarAccess.getEnumRuleAccess().getReturnsCauseParserRuleCall_3()); }
(ruleReturnsCause)?
{ after(grammarAccess.getEnumRuleAccess().getReturnsCauseParserRuleCall_3()); }
)
;
finally {
@ -8110,60 +8019,6 @@ finally {
}
rule__EnumRule__Group_3__0
@init {
int stackSize = keepStackSize();
}
:
rule__EnumRule__Group_3__0__Impl
rule__EnumRule__Group_3__1
;
finally {
restoreStackSize(stackSize);
}
rule__EnumRule__Group_3__0__Impl
@init {
int stackSize = keepStackSize();
}
:
(
{ before(grammarAccess.getEnumRuleAccess().getReturnsKeyword_3_0()); }
'returns'
{ after(grammarAccess.getEnumRuleAccess().getReturnsKeyword_3_0()); }
)
;
finally {
restoreStackSize(stackSize);
}
rule__EnumRule__Group_3__1
@init {
int stackSize = keepStackSize();
}
:
rule__EnumRule__Group_3__1__Impl
;
finally {
restoreStackSize(stackSize);
}
rule__EnumRule__Group_3__1__Impl
@init {
int stackSize = keepStackSize();
}
:
(
{ before(grammarAccess.getEnumRuleAccess().getTypeAssignment_3_1()); }
(rule__EnumRule__TypeAssignment_3_1)
{ after(grammarAccess.getEnumRuleAccess().getTypeAssignment_3_1()); }
)
;
finally {
restoreStackSize(stackSize);
}
rule__EnumLiterals__Group__0
@init {
int stackSize = keepStackSize();
@ -8732,36 +8587,6 @@ finally {
restoreStackSize(stackSize);
}
rule__ParserRule__TypeAssignment_1_0_2_1_1
@init {
int stackSize = keepStackSize();
}
:
(
{ before(grammarAccess.getParserRuleAccess().getTypeTypeRefParserRuleCall_1_0_2_1_1_0()); }
ruleTypeRef
{ after(grammarAccess.getParserRuleAccess().getTypeTypeRefParserRuleCall_1_0_2_1_1_0()); }
)
;
finally {
restoreStackSize(stackSize);
}
rule__ParserRule__TypeAssignment_1_1_1_1
@init {
int stackSize = keepStackSize();
}
:
(
{ before(grammarAccess.getParserRuleAccess().getTypeTypeRefParserRuleCall_1_1_1_1_0()); }
ruleTypeRef
{ after(grammarAccess.getParserRuleAccess().getTypeTypeRefParserRuleCall_1_1_1_1_0()); }
)
;
finally {
restoreStackSize(stackSize);
}
rule__ParserRule__DefinesHiddenTokensAssignment_2_0
@init {
int stackSize = keepStackSize();
@ -8834,6 +8659,21 @@ finally {
restoreStackSize(stackSize);
}
rule__ReturnsCause__TypeAssignment_1
@init {
int stackSize = keepStackSize();
}
:
(
{ before(grammarAccess.getReturnsCauseAccess().getTypeTypeRefParserRuleCall_1_0()); }
ruleTypeRef
{ after(grammarAccess.getReturnsCauseAccess().getTypeTypeRefParserRuleCall_1_0()); }
)
;
finally {
restoreStackSize(stackSize);
}
rule__RuleNameAndParams__NameAssignment_0
@init {
int stackSize = keepStackSize();
@ -9671,21 +9511,6 @@ finally {
restoreStackSize(stackSize);
}
rule__TerminalRule__TypeAssignment_2_1_1_1
@init {
int stackSize = keepStackSize();
}
:
(
{ before(grammarAccess.getTerminalRuleAccess().getTypeTypeRefParserRuleCall_2_1_1_1_0()); }
ruleTypeRef
{ after(grammarAccess.getTerminalRuleAccess().getTypeTypeRefParserRuleCall_2_1_1_1_0()); }
)
;
finally {
restoreStackSize(stackSize);
}
rule__TerminalRule__AlternativesAssignment_4
@init {
int stackSize = keepStackSize();
@ -9821,21 +9646,6 @@ finally {
restoreStackSize(stackSize);
}
rule__EnumRule__TypeAssignment_3_1
@init {
int stackSize = keepStackSize();
}
:
(
{ before(grammarAccess.getEnumRuleAccess().getTypeTypeRefParserRuleCall_3_1_0()); }
ruleTypeRef
{ after(grammarAccess.getEnumRuleAccess().getTypeTypeRefParserRuleCall_3_1_0()); }
)
;
finally {
restoreStackSize(stackSize);
}
rule__EnumRule__AlternativesAssignment_5
@init {
int stackSize = keepStackSize();

View file

@ -899,10 +899,10 @@ public class InternalXtextLexer extends Lexer {
try {
int _type = RULE_ID;
int _channel = DEFAULT_TOKEN_CHANNEL;
// InternalXtext.g:9903:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* )
// InternalXtext.g:9903:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )*
// InternalXtext.g:9713:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* )
// InternalXtext.g:9713:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )*
{
// InternalXtext.g:9903:11: ( '^' )?
// InternalXtext.g:9713:11: ( '^' )?
int alt1=2;
int LA1_0 = input.LA(1);
@ -911,7 +911,7 @@ public class InternalXtextLexer extends Lexer {
}
switch (alt1) {
case 1 :
// InternalXtext.g:9903:11: '^'
// InternalXtext.g:9713:11: '^'
{
match('^');
@ -929,7 +929,7 @@ public class InternalXtextLexer extends Lexer {
recover(mse);
throw mse;}
// InternalXtext.g:9903:40: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )*
// InternalXtext.g:9713:40: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )*
loop2:
do {
int alt2=2;
@ -978,10 +978,10 @@ public class InternalXtextLexer extends Lexer {
try {
int _type = RULE_INT;
int _channel = DEFAULT_TOKEN_CHANNEL;
// InternalXtext.g:9905:10: ( ( '0' .. '9' )+ )
// InternalXtext.g:9905:12: ( '0' .. '9' )+
// InternalXtext.g:9715:10: ( ( '0' .. '9' )+ )
// InternalXtext.g:9715:12: ( '0' .. '9' )+
{
// InternalXtext.g:9905:12: ( '0' .. '9' )+
// InternalXtext.g:9715:12: ( '0' .. '9' )+
int cnt3=0;
loop3:
do {
@ -995,7 +995,7 @@ public class InternalXtextLexer extends Lexer {
switch (alt3) {
case 1 :
// InternalXtext.g:9905:13: '0' .. '9'
// InternalXtext.g:9715:13: '0' .. '9'
{
matchRange('0','9');
@ -1027,10 +1027,10 @@ public class InternalXtextLexer extends Lexer {
try {
int _type = RULE_STRING;
int _channel = DEFAULT_TOKEN_CHANNEL;
// InternalXtext.g:9907:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' ) )
// InternalXtext.g:9907:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' )
// InternalXtext.g:9717:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' ) )
// InternalXtext.g:9717:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' )
{
// InternalXtext.g:9907:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' )
// InternalXtext.g:9717:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' )
int alt6=2;
int LA6_0 = input.LA(1);
@ -1048,10 +1048,10 @@ public class InternalXtextLexer extends Lexer {
}
switch (alt6) {
case 1 :
// InternalXtext.g:9907:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"'
// InternalXtext.g:9717:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"'
{
match('\"');
// InternalXtext.g:9907:20: ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )*
// InternalXtext.g:9717:20: ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )*
loop4:
do {
int alt4=3;
@ -1067,7 +1067,7 @@ public class InternalXtextLexer extends Lexer {
switch (alt4) {
case 1 :
// InternalXtext.g:9907:21: '\\\\' .
// InternalXtext.g:9717:21: '\\\\' .
{
match('\\');
matchAny();
@ -1075,7 +1075,7 @@ public class InternalXtextLexer extends Lexer {
}
break;
case 2 :
// InternalXtext.g:9907:28: ~ ( ( '\\\\' | '\"' ) )
// InternalXtext.g:9717:28: ~ ( ( '\\\\' | '\"' ) )
{
if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
input.consume();
@ -1100,10 +1100,10 @@ public class InternalXtextLexer extends Lexer {
}
break;
case 2 :
// InternalXtext.g:9907:48: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\''
// InternalXtext.g:9717:48: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\''
{
match('\'');
// InternalXtext.g:9907:53: ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )*
// InternalXtext.g:9717:53: ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )*
loop5:
do {
int alt5=3;
@ -1119,7 +1119,7 @@ public class InternalXtextLexer extends Lexer {
switch (alt5) {
case 1 :
// InternalXtext.g:9907:54: '\\\\' .
// InternalXtext.g:9717:54: '\\\\' .
{
match('\\');
matchAny();
@ -1127,7 +1127,7 @@ public class InternalXtextLexer extends Lexer {
}
break;
case 2 :
// InternalXtext.g:9907:61: ~ ( ( '\\\\' | '\\'' ) )
// InternalXtext.g:9717:61: ~ ( ( '\\\\' | '\\'' ) )
{
if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
input.consume();
@ -1170,12 +1170,12 @@ public class InternalXtextLexer extends Lexer {
try {
int _type = RULE_ML_COMMENT;
int _channel = DEFAULT_TOKEN_CHANNEL;
// InternalXtext.g:9909:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
// InternalXtext.g:9909:19: '/*' ( options {greedy=false; } : . )* '*/'
// InternalXtext.g:9719:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
// InternalXtext.g:9719:19: '/*' ( options {greedy=false; } : . )* '*/'
{
match("/*");
// InternalXtext.g:9909:24: ( options {greedy=false; } : . )*
// InternalXtext.g:9719:24: ( options {greedy=false; } : . )*
loop7:
do {
int alt7=2;
@ -1200,7 +1200,7 @@ public class InternalXtextLexer extends Lexer {
switch (alt7) {
case 1 :
// InternalXtext.g:9909:52: .
// InternalXtext.g:9719:52: .
{
matchAny();
@ -1230,12 +1230,12 @@ public class InternalXtextLexer extends Lexer {
try {
int _type = RULE_SL_COMMENT;
int _channel = DEFAULT_TOKEN_CHANNEL;
// InternalXtext.g:9911:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
// InternalXtext.g:9911:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
// InternalXtext.g:9721:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
// InternalXtext.g:9721:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
{
match("//");
// InternalXtext.g:9911:24: (~ ( ( '\\n' | '\\r' ) ) )*
// InternalXtext.g:9721:24: (~ ( ( '\\n' | '\\r' ) ) )*
loop8:
do {
int alt8=2;
@ -1248,7 +1248,7 @@ public class InternalXtextLexer extends Lexer {
switch (alt8) {
case 1 :
// InternalXtext.g:9911:24: ~ ( ( '\\n' | '\\r' ) )
// InternalXtext.g:9721:24: ~ ( ( '\\n' | '\\r' ) )
{
if ( (input.LA(1)>='\u0000' && input.LA(1)<='\t')||(input.LA(1)>='\u000B' && input.LA(1)<='\f')||(input.LA(1)>='\u000E' && input.LA(1)<='\uFFFF') ) {
input.consume();
@ -1268,7 +1268,7 @@ public class InternalXtextLexer extends Lexer {
}
} while (true);
// InternalXtext.g:9911:40: ( ( '\\r' )? '\\n' )?
// InternalXtext.g:9721:40: ( ( '\\r' )? '\\n' )?
int alt10=2;
int LA10_0 = input.LA(1);
@ -1277,9 +1277,9 @@ public class InternalXtextLexer extends Lexer {
}
switch (alt10) {
case 1 :
// InternalXtext.g:9911:41: ( '\\r' )? '\\n'
// InternalXtext.g:9721:41: ( '\\r' )? '\\n'
{
// InternalXtext.g:9911:41: ( '\\r' )?
// InternalXtext.g:9721:41: ( '\\r' )?
int alt9=2;
int LA9_0 = input.LA(1);
@ -1288,7 +1288,7 @@ public class InternalXtextLexer extends Lexer {
}
switch (alt9) {
case 1 :
// InternalXtext.g:9911:41: '\\r'
// InternalXtext.g:9721:41: '\\r'
{
match('\r');
@ -1320,10 +1320,10 @@ public class InternalXtextLexer extends Lexer {
try {
int _type = RULE_WS;
int _channel = DEFAULT_TOKEN_CHANNEL;
// InternalXtext.g:9913:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
// InternalXtext.g:9913:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
// InternalXtext.g:9723:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
// InternalXtext.g:9723:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
{
// InternalXtext.g:9913:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
// InternalXtext.g:9723:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
int cnt11=0;
loop11:
do {
@ -1377,8 +1377,8 @@ public class InternalXtextLexer extends Lexer {
try {
int _type = RULE_ANY_OTHER;
int _channel = DEFAULT_TOKEN_CHANNEL;
// InternalXtext.g:9915:16: ( . )
// InternalXtext.g:9915:18: .
// InternalXtext.g:9725:16: ( . )
// InternalXtext.g:9725:18: .
{
matchAny();

View file

@ -636,29 +636,17 @@ ruleParserRule returns [EObject current=null]
)
|
(
otherlv_4='returns'
{
newLeafNode(otherlv_4, grammarAccess.getParserRuleAccess().getReturnsKeyword_1_0_2_1_0());
}
(
(
{
newCompositeNode(grammarAccess.getParserRuleAccess().getTypeTypeRefParserRuleCall_1_0_2_1_1_0());
}
lv_type_5_0=ruleTypeRef
{
if ($current==null) {
$current = createModelElementForParent(grammarAccess.getParserRuleRule());
$current = createModelElement(grammarAccess.getParserRuleRule());
}
set(
$current,
"type",
lv_type_5_0,
"org.eclipse.xtext.Xtext.TypeRef");
newCompositeNode(grammarAccess.getParserRuleAccess().getReturnsCauseParserRuleCall_1_0_2_1());
}
this_ReturnsCause_4=ruleReturnsCause[$current]
{
$current = $this_ReturnsCause_4.current;
afterParserOrEnumRuleCall();
}
)
)
)?
)
)
@ -670,56 +658,44 @@ ruleParserRule returns [EObject current=null]
}
newCompositeNode(grammarAccess.getParserRuleAccess().getRuleNameAndParamsParserRuleCall_1_1_0());
}
this_RuleNameAndParams_6=ruleRuleNameAndParams[$current]
this_RuleNameAndParams_5=ruleRuleNameAndParams[$current]
{
$current = $this_RuleNameAndParams_6.current;
$current = $this_RuleNameAndParams_5.current;
afterParserOrEnumRuleCall();
}
(
otherlv_7='returns'
{
newLeafNode(otherlv_7, grammarAccess.getParserRuleAccess().getReturnsKeyword_1_1_1_0());
}
(
(
{
newCompositeNode(grammarAccess.getParserRuleAccess().getTypeTypeRefParserRuleCall_1_1_1_1_0());
}
lv_type_8_0=ruleTypeRef
{
if ($current==null) {
$current = createModelElementForParent(grammarAccess.getParserRuleRule());
$current = createModelElement(grammarAccess.getParserRuleRule());
}
set(
$current,
"type",
lv_type_8_0,
"org.eclipse.xtext.Xtext.TypeRef");
newCompositeNode(grammarAccess.getParserRuleAccess().getReturnsCauseParserRuleCall_1_1_1());
}
this_ReturnsCause_6=ruleReturnsCause[$current]
{
$current = $this_ReturnsCause_6.current;
afterParserOrEnumRuleCall();
}
)
)
)?
)
)
(
(
(
lv_definesHiddenTokens_9_0='hidden'
lv_definesHiddenTokens_7_0='hidden'
{
newLeafNode(lv_definesHiddenTokens_9_0, grammarAccess.getParserRuleAccess().getDefinesHiddenTokensHiddenKeyword_2_0_0());
newLeafNode(lv_definesHiddenTokens_7_0, grammarAccess.getParserRuleAccess().getDefinesHiddenTokensHiddenKeyword_2_0_0());
}
{
if ($current==null) {
$current = createModelElement(grammarAccess.getParserRuleRule());
}
setWithLastConsumed($current, "definesHiddenTokens", lv_definesHiddenTokens_9_0 != null, "hidden");
setWithLastConsumed($current, "definesHiddenTokens", lv_definesHiddenTokens_7_0 != null, "hidden");
}
)
)
otherlv_10='('
otherlv_8='('
{
newLeafNode(otherlv_10, grammarAccess.getParserRuleAccess().getLeftParenthesisKeyword_2_1());
newLeafNode(otherlv_8, grammarAccess.getParserRuleAccess().getLeftParenthesisKeyword_2_1());
}
(
(
@ -739,9 +715,9 @@ ruleParserRule returns [EObject current=null]
)
)
(
otherlv_12=','
otherlv_10=','
{
newLeafNode(otherlv_12, grammarAccess.getParserRuleAccess().getCommaKeyword_2_2_1_0());
newLeafNode(otherlv_10, grammarAccess.getParserRuleAccess().getCommaKeyword_2_2_1_0());
}
(
(
@ -761,21 +737,21 @@ ruleParserRule returns [EObject current=null]
)
)*
)?
otherlv_14=')'
otherlv_12=')'
{
newLeafNode(otherlv_14, grammarAccess.getParserRuleAccess().getRightParenthesisKeyword_2_3());
newLeafNode(otherlv_12, grammarAccess.getParserRuleAccess().getRightParenthesisKeyword_2_3());
}
)?
otherlv_15=':'
otherlv_13=':'
{
newLeafNode(otherlv_15, grammarAccess.getParserRuleAccess().getColonKeyword_3());
newLeafNode(otherlv_13, grammarAccess.getParserRuleAccess().getColonKeyword_3());
}
(
(
{
newCompositeNode(grammarAccess.getParserRuleAccess().getAlternativesAlternativesParserRuleCall_4_0());
}
lv_alternatives_16_0=ruleAlternatives
lv_alternatives_14_0=ruleAlternatives
{
if ($current==null) {
$current = createModelElementForParent(grammarAccess.getParserRuleRule());
@ -783,20 +759,56 @@ ruleParserRule returns [EObject current=null]
set(
$current,
"alternatives",
lv_alternatives_16_0,
lv_alternatives_14_0,
"org.eclipse.xtext.Xtext.Alternatives");
afterParserOrEnumRuleCall();
}
)
)
otherlv_17=';'
otherlv_15=';'
{
newLeafNode(otherlv_17, grammarAccess.getParserRuleAccess().getSemicolonKeyword_5());
newLeafNode(otherlv_15, grammarAccess.getParserRuleAccess().getSemicolonKeyword_5());
}
)
;
// Rule ReturnsCause
ruleReturnsCause[EObject in_current] returns [EObject current=in_current]
@init {
enterRule();
}
@after {
leaveRule();
}:
(
otherlv_0='returns'
{
newLeafNode(otherlv_0, grammarAccess.getReturnsCauseAccess().getReturnsKeyword_0());
}
(
(
{
newCompositeNode(grammarAccess.getReturnsCauseAccess().getTypeTypeRefParserRuleCall_1_0());
}
lv_type_1_0=ruleTypeRef
{
if ($current==null) {
$current = createModelElementForParent(grammarAccess.getReturnsCauseRule());
}
set(
$current,
"type",
lv_type_1_0,
"org.eclipse.xtext.Xtext.TypeRef");
afterParserOrEnumRuleCall();
}
)
)
)
;
// Rule RuleNameAndParams
ruleRuleNameAndParams[EObject in_current] returns [EObject current=in_current]
@init {
@ -2939,42 +2951,30 @@ ruleTerminalRule returns [EObject current=null]
)
)
(
otherlv_5='returns'
{
newLeafNode(otherlv_5, grammarAccess.getTerminalRuleAccess().getReturnsKeyword_2_1_1_0());
}
(
(
{
newCompositeNode(grammarAccess.getTerminalRuleAccess().getTypeTypeRefParserRuleCall_2_1_1_1_0());
}
lv_type_6_0=ruleTypeRef
{
if ($current==null) {
$current = createModelElementForParent(grammarAccess.getTerminalRuleRule());
$current = createModelElement(grammarAccess.getTerminalRuleRule());
}
set(
$current,
"type",
lv_type_6_0,
"org.eclipse.xtext.Xtext.TypeRef");
newCompositeNode(grammarAccess.getTerminalRuleAccess().getReturnsCauseParserRuleCall_2_1_1());
}
this_ReturnsCause_5=ruleReturnsCause[$current]
{
$current = $this_ReturnsCause_5.current;
afterParserOrEnumRuleCall();
}
)
)
)?
)
)
otherlv_7=':'
otherlv_6=':'
{
newLeafNode(otherlv_7, grammarAccess.getTerminalRuleAccess().getColonKeyword_3());
newLeafNode(otherlv_6, grammarAccess.getTerminalRuleAccess().getColonKeyword_3());
}
(
(
{
newCompositeNode(grammarAccess.getTerminalRuleAccess().getAlternativesTerminalAlternativesParserRuleCall_4_0());
}
lv_alternatives_8_0=ruleTerminalAlternatives
lv_alternatives_7_0=ruleTerminalAlternatives
{
if ($current==null) {
$current = createModelElementForParent(grammarAccess.getTerminalRuleRule());
@ -2982,15 +2982,15 @@ ruleTerminalRule returns [EObject current=null]
set(
$current,
"alternatives",
lv_alternatives_8_0,
lv_alternatives_7_0,
"org.eclipse.xtext.Xtext.TerminalAlternatives");
afterParserOrEnumRuleCall();
}
)
)
otherlv_9=';'
otherlv_8=';'
{
newLeafNode(otherlv_9, grammarAccess.getTerminalRuleAccess().getSemicolonKeyword_5());
newLeafNode(otherlv_8, grammarAccess.getTerminalRuleAccess().getSemicolonKeyword_5());
}
)
;
@ -3581,40 +3581,28 @@ ruleEnumRule returns [EObject current=null]
)
)
(
otherlv_3='returns'
{
newLeafNode(otherlv_3, grammarAccess.getEnumRuleAccess().getReturnsKeyword_3_0());
}
(
(
{
newCompositeNode(grammarAccess.getEnumRuleAccess().getTypeTypeRefParserRuleCall_3_1_0());
}
lv_type_4_0=ruleTypeRef
{
if ($current==null) {
$current = createModelElementForParent(grammarAccess.getEnumRuleRule());
$current = createModelElement(grammarAccess.getEnumRuleRule());
}
set(
$current,
"type",
lv_type_4_0,
"org.eclipse.xtext.Xtext.TypeRef");
newCompositeNode(grammarAccess.getEnumRuleAccess().getReturnsCauseParserRuleCall_3());
}
this_ReturnsCause_3=ruleReturnsCause[$current]
{
$current = $this_ReturnsCause_3.current;
afterParserOrEnumRuleCall();
}
)
)
)?
otherlv_5=':'
otherlv_4=':'
{
newLeafNode(otherlv_5, grammarAccess.getEnumRuleAccess().getColonKeyword_4());
newLeafNode(otherlv_4, grammarAccess.getEnumRuleAccess().getColonKeyword_4());
}
(
(
{
newCompositeNode(grammarAccess.getEnumRuleAccess().getAlternativesEnumLiteralsParserRuleCall_5_0());
}
lv_alternatives_6_0=ruleEnumLiterals
lv_alternatives_5_0=ruleEnumLiterals
{
if ($current==null) {
$current = createModelElementForParent(grammarAccess.getEnumRuleRule());
@ -3622,15 +3610,15 @@ ruleEnumRule returns [EObject current=null]
set(
$current,
"alternatives",
lv_alternatives_6_0,
lv_alternatives_5_0,
"org.eclipse.xtext.Xtext.EnumLiterals");
afterParserOrEnumRuleCall();
}
)
)
otherlv_7=';'
otherlv_6=';'
{
newLeafNode(otherlv_7, grammarAccess.getEnumRuleAccess().getSemicolonKeyword_6());
newLeafNode(otherlv_6, grammarAccess.getEnumRuleAccess().getSemicolonKeyword_6());
}
)
;

View file

@ -9,9 +9,9 @@
'->'=43
'.'=17
'..'=49
':'=25
':'=24
'::'=29
';'=26
';'=25
'<'=27
'='=35
'=>'=42
@ -31,7 +31,7 @@
'grammar'=11
'hidden'=14
'import'=20
'returns'=24
'returns'=26
'terminal'=47
'true'=39
'with'=12

View file

@ -346,11 +346,10 @@ public class InternalXtextLexer extends Lexer {
try {
int _type = T__24;
int _channel = DEFAULT_TOKEN_CHANNEL;
// InternalXtext.g:24:7: ( 'returns' )
// InternalXtext.g:24:9: 'returns'
// InternalXtext.g:24:7: ( ':' )
// InternalXtext.g:24:9: ':'
{
match("returns");
match(':');
}
@ -367,10 +366,10 @@ public class InternalXtextLexer extends Lexer {
try {
int _type = T__25;
int _channel = DEFAULT_TOKEN_CHANNEL;
// InternalXtext.g:25:7: ( ':' )
// InternalXtext.g:25:9: ':'
// InternalXtext.g:25:7: ( ';' )
// InternalXtext.g:25:9: ';'
{
match(':');
match(';');
}
@ -387,10 +386,11 @@ public class InternalXtextLexer extends Lexer {
try {
int _type = T__26;
int _channel = DEFAULT_TOKEN_CHANNEL;
// InternalXtext.g:26:7: ( ';' )
// InternalXtext.g:26:9: ';'
// InternalXtext.g:26:7: ( 'returns' )
// InternalXtext.g:26:9: 'returns'
{
match(';');
match("returns");
}
@ -899,10 +899,10 @@ public class InternalXtextLexer extends Lexer {
try {
int _type = RULE_ID;
int _channel = DEFAULT_TOKEN_CHANNEL;
// InternalXtext.g:3759:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* )
// InternalXtext.g:3759:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )*
// InternalXtext.g:3747:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* )
// InternalXtext.g:3747:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )*
{
// InternalXtext.g:3759:11: ( '^' )?
// InternalXtext.g:3747:11: ( '^' )?
int alt1=2;
int LA1_0 = input.LA(1);
@ -911,7 +911,7 @@ public class InternalXtextLexer extends Lexer {
}
switch (alt1) {
case 1 :
// InternalXtext.g:3759:11: '^'
// InternalXtext.g:3747:11: '^'
{
match('^');
@ -929,7 +929,7 @@ public class InternalXtextLexer extends Lexer {
recover(mse);
throw mse;}
// InternalXtext.g:3759:40: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )*
// InternalXtext.g:3747:40: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )*
loop2:
do {
int alt2=2;
@ -978,10 +978,10 @@ public class InternalXtextLexer extends Lexer {
try {
int _type = RULE_INT;
int _channel = DEFAULT_TOKEN_CHANNEL;
// InternalXtext.g:3761:10: ( ( '0' .. '9' )+ )
// InternalXtext.g:3761:12: ( '0' .. '9' )+
// InternalXtext.g:3749:10: ( ( '0' .. '9' )+ )
// InternalXtext.g:3749:12: ( '0' .. '9' )+
{
// InternalXtext.g:3761:12: ( '0' .. '9' )+
// InternalXtext.g:3749:12: ( '0' .. '9' )+
int cnt3=0;
loop3:
do {
@ -995,7 +995,7 @@ public class InternalXtextLexer extends Lexer {
switch (alt3) {
case 1 :
// InternalXtext.g:3761:13: '0' .. '9'
// InternalXtext.g:3749:13: '0' .. '9'
{
matchRange('0','9');
@ -1027,10 +1027,10 @@ public class InternalXtextLexer extends Lexer {
try {
int _type = RULE_STRING;
int _channel = DEFAULT_TOKEN_CHANNEL;
// InternalXtext.g:3763:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' ) )
// InternalXtext.g:3763:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' )
// InternalXtext.g:3751:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' ) )
// InternalXtext.g:3751:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' )
{
// InternalXtext.g:3763:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' )
// InternalXtext.g:3751:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' )
int alt6=2;
int LA6_0 = input.LA(1);
@ -1048,10 +1048,10 @@ public class InternalXtextLexer extends Lexer {
}
switch (alt6) {
case 1 :
// InternalXtext.g:3763:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"'
// InternalXtext.g:3751:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"'
{
match('\"');
// InternalXtext.g:3763:20: ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )*
// InternalXtext.g:3751:20: ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )*
loop4:
do {
int alt4=3;
@ -1067,7 +1067,7 @@ public class InternalXtextLexer extends Lexer {
switch (alt4) {
case 1 :
// InternalXtext.g:3763:21: '\\\\' .
// InternalXtext.g:3751:21: '\\\\' .
{
match('\\');
matchAny();
@ -1075,7 +1075,7 @@ public class InternalXtextLexer extends Lexer {
}
break;
case 2 :
// InternalXtext.g:3763:28: ~ ( ( '\\\\' | '\"' ) )
// InternalXtext.g:3751:28: ~ ( ( '\\\\' | '\"' ) )
{
if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
input.consume();
@ -1100,10 +1100,10 @@ public class InternalXtextLexer extends Lexer {
}
break;
case 2 :
// InternalXtext.g:3763:48: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\''
// InternalXtext.g:3751:48: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\''
{
match('\'');
// InternalXtext.g:3763:53: ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )*
// InternalXtext.g:3751:53: ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )*
loop5:
do {
int alt5=3;
@ -1119,7 +1119,7 @@ public class InternalXtextLexer extends Lexer {
switch (alt5) {
case 1 :
// InternalXtext.g:3763:54: '\\\\' .
// InternalXtext.g:3751:54: '\\\\' .
{
match('\\');
matchAny();
@ -1127,7 +1127,7 @@ public class InternalXtextLexer extends Lexer {
}
break;
case 2 :
// InternalXtext.g:3763:61: ~ ( ( '\\\\' | '\\'' ) )
// InternalXtext.g:3751:61: ~ ( ( '\\\\' | '\\'' ) )
{
if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
input.consume();
@ -1170,12 +1170,12 @@ public class InternalXtextLexer extends Lexer {
try {
int _type = RULE_ML_COMMENT;
int _channel = DEFAULT_TOKEN_CHANNEL;
// InternalXtext.g:3765:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
// InternalXtext.g:3765:19: '/*' ( options {greedy=false; } : . )* '*/'
// InternalXtext.g:3753:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
// InternalXtext.g:3753:19: '/*' ( options {greedy=false; } : . )* '*/'
{
match("/*");
// InternalXtext.g:3765:24: ( options {greedy=false; } : . )*
// InternalXtext.g:3753:24: ( options {greedy=false; } : . )*
loop7:
do {
int alt7=2;
@ -1200,7 +1200,7 @@ public class InternalXtextLexer extends Lexer {
switch (alt7) {
case 1 :
// InternalXtext.g:3765:52: .
// InternalXtext.g:3753:52: .
{
matchAny();
@ -1230,12 +1230,12 @@ public class InternalXtextLexer extends Lexer {
try {
int _type = RULE_SL_COMMENT;
int _channel = DEFAULT_TOKEN_CHANNEL;
// InternalXtext.g:3767:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
// InternalXtext.g:3767:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
// InternalXtext.g:3755:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
// InternalXtext.g:3755:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
{
match("//");
// InternalXtext.g:3767:24: (~ ( ( '\\n' | '\\r' ) ) )*
// InternalXtext.g:3755:24: (~ ( ( '\\n' | '\\r' ) ) )*
loop8:
do {
int alt8=2;
@ -1248,7 +1248,7 @@ public class InternalXtextLexer extends Lexer {
switch (alt8) {
case 1 :
// InternalXtext.g:3767:24: ~ ( ( '\\n' | '\\r' ) )
// InternalXtext.g:3755:24: ~ ( ( '\\n' | '\\r' ) )
{
if ( (input.LA(1)>='\u0000' && input.LA(1)<='\t')||(input.LA(1)>='\u000B' && input.LA(1)<='\f')||(input.LA(1)>='\u000E' && input.LA(1)<='\uFFFF') ) {
input.consume();
@ -1268,7 +1268,7 @@ public class InternalXtextLexer extends Lexer {
}
} while (true);
// InternalXtext.g:3767:40: ( ( '\\r' )? '\\n' )?
// InternalXtext.g:3755:40: ( ( '\\r' )? '\\n' )?
int alt10=2;
int LA10_0 = input.LA(1);
@ -1277,9 +1277,9 @@ public class InternalXtextLexer extends Lexer {
}
switch (alt10) {
case 1 :
// InternalXtext.g:3767:41: ( '\\r' )? '\\n'
// InternalXtext.g:3755:41: ( '\\r' )? '\\n'
{
// InternalXtext.g:3767:41: ( '\\r' )?
// InternalXtext.g:3755:41: ( '\\r' )?
int alt9=2;
int LA9_0 = input.LA(1);
@ -1288,7 +1288,7 @@ public class InternalXtextLexer extends Lexer {
}
switch (alt9) {
case 1 :
// InternalXtext.g:3767:41: '\\r'
// InternalXtext.g:3755:41: '\\r'
{
match('\r');
@ -1320,10 +1320,10 @@ public class InternalXtextLexer extends Lexer {
try {
int _type = RULE_WS;
int _channel = DEFAULT_TOKEN_CHANNEL;
// InternalXtext.g:3769:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
// InternalXtext.g:3769:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
// InternalXtext.g:3757:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
// InternalXtext.g:3757:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
{
// InternalXtext.g:3769:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
// InternalXtext.g:3757:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
int cnt11=0;
loop11:
do {
@ -1377,8 +1377,8 @@ public class InternalXtextLexer extends Lexer {
try {
int _type = RULE_ANY_OTHER;
int _channel = DEFAULT_TOKEN_CHANNEL;
// InternalXtext.g:3771:16: ( . )
// InternalXtext.g:3771:18: .
// InternalXtext.g:3759:16: ( . )
// InternalXtext.g:3759:18: .
{
matchAny();
@ -1734,21 +1734,21 @@ public class InternalXtextLexer extends Lexer {
protected DFA12 dfa12 = new DFA12(this);
static final String DFA12_eotS =
"\1\uffff\2\53\1\uffff\1\53\2\uffff\1\62\2\53\1\uffff\1\53\1\uffff\1\53\1\73\5\uffff\1\102\1\104\1\uffff\1\107\1\53\1\uffff\1\53\1\uffff\1\50\2\uffff\2\53\1\50\2\uffff\3\50\2\uffff\2\53\1\uffff\1\53\1\uffff\1\53\4\uffff\1\133\1\53\1\uffff\2\53\1\uffff\1\53\16\uffff\1\53\1\uffff\2\53\4\uffff\2\53\5\uffff\4\53\1\uffff\7\53\1\160\3\53\1\164\6\53\1\173\1\53\1\uffff\1\175\2\53\1\uffff\3\53\1\u0083\2\53\1\uffff\1\53\1\uffff\2\53\1\u0089\1\u008a\1\53\1\uffff\3\53\1\u008f\1\53\2\uffff\1\53\1\u0092\1\u0093\1\53\1\uffff\1\u0095\1\u0096\2\uffff\1\u0097\3\uffff";
"\1\uffff\2\53\1\uffff\1\53\2\uffff\1\62\2\53\1\uffff\1\53\1\uffff\1\72\1\uffff\1\53\4\uffff\1\102\1\104\1\uffff\1\107\1\53\1\uffff\1\53\1\uffff\1\50\2\uffff\2\53\1\50\2\uffff\3\50\2\uffff\2\53\1\uffff\1\53\1\uffff\1\53\4\uffff\1\133\1\53\1\uffff\2\53\4\uffff\1\53\13\uffff\1\53\1\uffff\2\53\4\uffff\2\53\5\uffff\4\53\1\uffff\7\53\1\160\3\53\1\164\6\53\1\173\1\53\1\uffff\1\175\2\53\1\uffff\3\53\1\u0083\2\53\1\uffff\1\53\1\uffff\2\53\1\u0089\1\u008a\1\53\1\uffff\3\53\1\u008f\1\53\2\uffff\1\53\1\u0092\1\u0093\1\53\1\uffff\1\u0095\1\u0096\2\uffff\1\u0097\3\uffff";
static final String DFA12_eofS =
"\u0098\uffff";
static final String DFA12_minS =
"\1\0\1\145\1\151\1\uffff\1\151\2\uffff\1\56\1\163\1\155\1\uffff\1\141\1\uffff\1\145\1\72\5\uffff\2\75\1\uffff\1\76\1\165\1\uffff\1\145\1\uffff\1\76\2\uffff\1\117\1\156\1\101\2\uffff\2\0\1\52\2\uffff\1\141\1\156\1\uffff\1\164\1\uffff\1\144\4\uffff\1\60\1\160\1\uffff\1\141\1\154\1\uffff\1\164\16\uffff\1\162\1\uffff\1\165\1\162\4\uffff\1\106\1\165\5\uffff\1\155\1\145\1\150\1\144\1\uffff\1\157\1\147\1\163\1\165\1\162\1\145\1\155\1\60\2\155\1\162\1\60\1\145\1\162\1\155\1\145\1\162\1\145\1\60\1\151\1\uffff\1\60\2\141\1\uffff\1\156\1\164\1\145\1\60\2\156\1\uffff\1\156\1\uffff\1\162\1\164\2\60\1\156\1\uffff\1\163\1\164\1\141\1\60\1\145\2\uffff\1\164\2\60\1\154\1\uffff\2\60\2\uffff\1\60\3\uffff";
"\1\0\1\145\1\151\1\uffff\1\151\2\uffff\1\56\1\163\1\155\1\uffff\1\141\1\uffff\1\72\1\uffff\1\145\4\uffff\2\75\1\uffff\1\76\1\165\1\uffff\1\145\1\uffff\1\76\2\uffff\1\117\1\156\1\101\2\uffff\2\0\1\52\2\uffff\1\141\1\156\1\uffff\1\164\1\uffff\1\144\4\uffff\1\60\1\160\1\uffff\1\141\1\154\4\uffff\1\164\13\uffff\1\162\1\uffff\1\165\1\162\4\uffff\1\106\1\165\5\uffff\1\155\1\145\1\150\1\144\1\uffff\1\157\1\147\1\163\1\165\1\162\1\145\1\155\1\60\2\155\1\162\1\60\1\145\1\162\1\155\1\145\1\162\1\145\1\60\1\151\1\uffff\1\60\2\141\1\uffff\1\156\1\164\1\145\1\60\2\156\1\uffff\1\156\1\uffff\1\162\1\164\2\60\1\156\1\uffff\1\163\1\164\1\141\1\60\1\145\2\uffff\1\164\2\60\1\154\1\uffff\2\60\2\uffff\1\60\3\uffff";
static final String DFA12_maxS =
"\1\uffff\1\162\1\151\1\uffff\1\151\2\uffff\1\56\1\163\1\155\1\uffff\1\162\1\uffff\1\145\1\72\5\uffff\2\75\1\uffff\1\76\1\165\1\uffff\1\162\1\uffff\1\76\2\uffff\1\117\1\156\1\172\2\uffff\2\uffff\1\57\2\uffff\1\141\1\156\1\uffff\1\164\1\uffff\1\144\4\uffff\1\172\1\160\1\uffff\1\141\1\154\1\uffff\1\164\16\uffff\1\162\1\uffff\1\165\1\162\4\uffff\1\106\1\165\5\uffff\1\155\1\145\1\150\1\144\1\uffff\1\157\1\147\1\163\1\165\1\162\1\145\1\155\1\172\2\155\1\162\1\172\1\145\1\162\1\155\1\145\1\162\1\145\1\172\1\151\1\uffff\1\172\2\141\1\uffff\1\156\1\164\1\145\1\172\2\156\1\uffff\1\156\1\uffff\1\162\1\164\2\172\1\156\1\uffff\1\163\1\164\1\141\1\172\1\145\2\uffff\1\164\2\172\1\154\1\uffff\2\172\2\uffff\1\172\3\uffff";
"\1\uffff\1\162\1\151\1\uffff\1\151\2\uffff\1\56\1\163\1\155\1\uffff\1\162\1\uffff\1\72\1\uffff\1\145\4\uffff\2\75\1\uffff\1\76\1\165\1\uffff\1\162\1\uffff\1\76\2\uffff\1\117\1\156\1\172\2\uffff\2\uffff\1\57\2\uffff\1\141\1\156\1\uffff\1\164\1\uffff\1\144\4\uffff\1\172\1\160\1\uffff\1\141\1\154\4\uffff\1\164\13\uffff\1\162\1\uffff\1\165\1\162\4\uffff\1\106\1\165\5\uffff\1\155\1\145\1\150\1\144\1\uffff\1\157\1\147\1\163\1\165\1\162\1\145\1\155\1\172\2\155\1\162\1\172\1\145\1\162\1\155\1\145\1\162\1\145\1\172\1\151\1\uffff\1\172\2\141\1\uffff\1\156\1\164\1\145\1\172\2\156\1\uffff\1\156\1\uffff\1\162\1\164\2\172\1\156\1\uffff\1\163\1\164\1\141\1\172\1\145\2\uffff\1\164\2\172\1\154\1\uffff\2\172\2\uffff\1\172\3\uffff";
static final String DFA12_acceptS =
"\3\uffff\1\3\1\uffff\1\5\1\6\3\uffff\1\13\1\uffff\1\15\2\uffff\1\20\1\21\1\22\1\24\1\25\2\uffff\1\30\2\uffff\1\34\1\uffff\1\37\1\uffff\1\43\1\44\3\uffff\1\51\1\52\3\uffff\1\56\1\57\2\uffff\1\51\1\uffff\1\3\1\uffff\1\5\1\6\1\47\1\7\2\uffff\1\13\2\uffff\1\15\1\uffff\1\23\1\17\1\20\1\21\1\22\1\24\1\25\1\42\1\26\1\32\1\27\1\30\1\40\1\31\1\uffff\1\34\2\uffff\1\37\1\41\1\43\1\44\2\uffff\1\52\1\53\1\54\1\55\1\56\4\uffff\1\11\24\uffff\1\46\3\uffff\1\2\6\uffff\1\35\1\uffff\1\50\5\uffff\1\36\5\uffff\1\4\1\12\4\uffff\1\1\2\uffff\1\16\1\33\1\uffff\1\10\1\14\1\45";
"\3\uffff\1\3\1\uffff\1\5\1\6\3\uffff\1\13\1\uffff\1\15\1\uffff\1\17\1\uffff\1\21\1\22\1\24\1\25\2\uffff\1\30\2\uffff\1\34\1\uffff\1\37\1\uffff\1\43\1\44\3\uffff\1\51\1\52\3\uffff\1\56\1\57\2\uffff\1\51\1\uffff\1\3\1\uffff\1\5\1\6\1\47\1\7\2\uffff\1\13\2\uffff\1\15\1\23\1\16\1\17\1\uffff\1\21\1\22\1\24\1\25\1\42\1\26\1\32\1\27\1\30\1\40\1\31\1\uffff\1\34\2\uffff\1\37\1\41\1\43\1\44\2\uffff\1\52\1\53\1\54\1\55\1\56\4\uffff\1\11\24\uffff\1\46\3\uffff\1\2\6\uffff\1\35\1\uffff\1\50\5\uffff\1\36\5\uffff\1\4\1\12\4\uffff\1\1\2\uffff\1\20\1\33\1\uffff\1\10\1\14\1\45";
static final String DFA12_specialS =
"\1\1\43\uffff\1\0\1\2\162\uffff}>";
static final String[] DFA12_transitionS = DFA12_transitionS_.DFA12_transitionS;
private static final class DFA12_transitionS_ {
static final String[] DFA12_transitionS = {
"\11\50\2\47\2\50\1\47\22\50\1\47\1\33\1\44\3\50\1\23\1\45\1\5\1\6\1\14\1\25\1\3\1\34\1\7\1\46\12\43\1\16\1\17\1\20\1\27\1\21\1\24\1\12\4\42\1\37\25\42\1\35\1\50\1\36\1\41\1\42\1\50\1\10\1\42\1\30\1\42\1\40\1\13\1\1\1\4\1\11\10\42\1\15\1\42\1\32\2\42\1\2\3\42\1\26\1\22\1\31\uff82\50",
"\11\50\2\47\2\50\1\47\22\50\1\47\1\33\1\44\3\50\1\23\1\45\1\5\1\6\1\14\1\25\1\3\1\34\1\7\1\46\12\43\1\15\1\16\1\20\1\27\1\21\1\24\1\12\4\42\1\37\25\42\1\35\1\50\1\36\1\41\1\42\1\50\1\10\1\42\1\30\1\42\1\40\1\13\1\1\1\4\1\11\10\42\1\17\1\42\1\32\2\42\1\2\3\42\1\26\1\22\1\31\uff82\50",
"\1\52\14\uffff\1\51",
"\1\54",
"",
@ -1762,8 +1762,8 @@ public class InternalXtextLexer extends Lexer {
"\1\67\20\uffff\1\66",
"",
"\1\71",
"\1\72",
"",
"\1\74",
"",
"",
"",
@ -1805,6 +1805,9 @@ public class InternalXtextLexer extends Lexer {
"\1\135",
"\1\136",
"",
"",
"",
"",
"\1\137",
"",
"",
@ -1817,9 +1820,6 @@ public class InternalXtextLexer extends Lexer {
"",
"",
"",
"",
"",
"",
"\1\140",
"",
"\1\141",
@ -1977,11 +1977,11 @@ public class InternalXtextLexer extends Lexer {
else if ( (LA12_0=='*') ) {s = 12;}
else if ( (LA12_0=='r') ) {s = 13;}
else if ( (LA12_0==':') ) {s = 13;}
else if ( (LA12_0==':') ) {s = 14;}
else if ( (LA12_0==';') ) {s = 14;}
else if ( (LA12_0==';') ) {s = 15;}
else if ( (LA12_0=='r') ) {s = 15;}
else if ( (LA12_0=='<') ) {s = 16;}

View file

@ -181,7 +181,7 @@ public class XtextSemanticSequencer extends AbstractDelegatingSemanticSequencer
sequence_EnumLiteralDeclaration(context, (EnumLiteralDeclaration) semanticObject);
return;
case XtextPackage.ENUM_RULE:
sequence_EnumRule(context, (EnumRule) semanticObject);
sequence_EnumRule_ReturnsCause(context, (EnumRule) semanticObject);
return;
case XtextPackage.GENERATED_METAMODEL:
sequence_GeneratedMetamodel(context, (GeneratedMetamodel) semanticObject);
@ -293,7 +293,7 @@ public class XtextSemanticSequencer extends AbstractDelegatingSemanticSequencer
sequence_ParameterReference(context, (ParameterReference) semanticObject);
return;
case XtextPackage.PARSER_RULE:
sequence_ParserRule_RuleNameAndParams(context, (ParserRule) semanticObject);
sequence_ParserRule_ReturnsCause_RuleNameAndParams(context, (ParserRule) semanticObject);
return;
case XtextPackage.REFERENCED_METAMODEL:
sequence_ReferencedMetamodel(context, (ReferencedMetamodel) semanticObject);
@ -342,7 +342,7 @@ public class XtextSemanticSequencer extends AbstractDelegatingSemanticSequencer
}
else break;
case XtextPackage.TERMINAL_RULE:
sequence_TerminalRule(context, (TerminalRule) semanticObject);
sequence_ReturnsCause_TerminalRule(context, (TerminalRule) semanticObject);
return;
case XtextPackage.TYPE_REF:
sequence_TypeRef(context, (TypeRef) semanticObject);
@ -791,7 +791,7 @@ public class XtextSemanticSequencer extends AbstractDelegatingSemanticSequencer
* Constraint:
* (annotations+=Annotation* name=ValidID type=TypeRef? alternatives=EnumLiterals)
*/
protected void sequence_EnumRule(ISerializationContext context, EnumRule semanticObject) {
protected void sequence_EnumRule_ReturnsCause(ISerializationContext context, EnumRule semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
@ -1016,12 +1016,12 @@ public class XtextSemanticSequencer extends AbstractDelegatingSemanticSequencer
* fragment?='fragment'?
* name=ValidID
* (parameters+=Parameter parameters+=Parameter*)?
* (wildcard?='*' | type=TypeRef | type=TypeRef)?
* (wildcard?='*' | type=TypeRef)?
* (definesHiddenTokens?='hidden' (hiddenTokens+=[AbstractRule|RuleID] hiddenTokens+=[AbstractRule|RuleID]*)?)?
* alternatives=Alternatives
* )
*/
protected void sequence_ParserRule_RuleNameAndParams(ISerializationContext context, ParserRule semanticObject) {
protected void sequence_ParserRule_ReturnsCause_RuleNameAndParams(ISerializationContext context, ParserRule semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
@ -1075,6 +1075,19 @@ public class XtextSemanticSequencer extends AbstractDelegatingSemanticSequencer
}
/**
* Contexts:
* AbstractRule returns TerminalRule
* TerminalRule returns TerminalRule
*
* Constraint:
* (annotations+=Annotation* ((fragment?='fragment' name=ValidID) | (name=ValidID type=TypeRef?)) alternatives=TerminalAlternatives)
*/
protected void sequence_ReturnsCause_TerminalRule(ISerializationContext context, TerminalRule semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Contexts:
* RuleCall returns RuleCall
@ -1164,19 +1177,6 @@ public class XtextSemanticSequencer extends AbstractDelegatingSemanticSequencer
}
/**
* Contexts:
* AbstractRule returns TerminalRule
* TerminalRule returns TerminalRule
*
* Constraint:
* (annotations+=Annotation* ((fragment?='fragment' name=ValidID) | (name=ValidID type=TypeRef?)) alternatives=TerminalAlternatives)
*/
protected void sequence_TerminalRule(ISerializationContext context, TerminalRule semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Contexts:
* TerminalAlternatives returns UntilToken

View file

@ -234,7 +234,6 @@ public class XtextSyntacticSequencer extends AbstractSyntacticSequencer {
* ('<' '>')?
*
* This ambiguous syntax occurs at:
* name=ValidID (ambiguity) 'returns' type=TypeRef
* name=ValidID (ambiguity) wildcard?='*'
*/
protected void emit_RuleNameAndParams___LessThanSignKeyword_1_0_GreaterThanSignKeyword_1_2__q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {

View file

@ -113,7 +113,8 @@ public class XtextGrammarAccess extends AbstractElementFinder.AbstractGrammarEle
//GrammarID
public RuleCall getUsedGrammarsGrammarGrammarIDParserRuleCall_2_2_1_0_1() { return cUsedGrammarsGrammarGrammarIDParserRuleCall_2_2_1_0_1; }
//(definesHiddenTokens?='hidden' '(' (hiddenTokens+=[AbstractRule|RuleID] (',' hiddenTokens+=[AbstractRule|RuleID])*)? ')')?
//(definesHiddenTokens?='hidden' '(' (hiddenTokens+=[AbstractRule|RuleID] (',' hiddenTokens+=[AbstractRule|RuleID])*)? ')')
//?
public Group getGroup_3() { return cGroup_3; }
//definesHiddenTokens?='hidden'
@ -373,16 +374,10 @@ public class XtextGrammarAccess extends AbstractElementFinder.AbstractGrammarEle
private final Alternatives cAlternatives_1_0_2 = (Alternatives)cGroup_1_0.eContents().get(2);
private final Assignment cWildcardAssignment_1_0_2_0 = (Assignment)cAlternatives_1_0_2.eContents().get(0);
private final Keyword cWildcardAsteriskKeyword_1_0_2_0_0 = (Keyword)cWildcardAssignment_1_0_2_0.eContents().get(0);
private final Group cGroup_1_0_2_1 = (Group)cAlternatives_1_0_2.eContents().get(1);
private final Keyword cReturnsKeyword_1_0_2_1_0 = (Keyword)cGroup_1_0_2_1.eContents().get(0);
private final Assignment cTypeAssignment_1_0_2_1_1 = (Assignment)cGroup_1_0_2_1.eContents().get(1);
private final RuleCall cTypeTypeRefParserRuleCall_1_0_2_1_1_0 = (RuleCall)cTypeAssignment_1_0_2_1_1.eContents().get(0);
private final RuleCall cReturnsCauseParserRuleCall_1_0_2_1 = (RuleCall)cAlternatives_1_0_2.eContents().get(1);
private final Group cGroup_1_1 = (Group)cAlternatives_1.eContents().get(1);
private final RuleCall cRuleNameAndParamsParserRuleCall_1_1_0 = (RuleCall)cGroup_1_1.eContents().get(0);
private final Group cGroup_1_1_1 = (Group)cGroup_1_1.eContents().get(1);
private final Keyword cReturnsKeyword_1_1_1_0 = (Keyword)cGroup_1_1_1.eContents().get(0);
private final Assignment cTypeAssignment_1_1_1_1 = (Assignment)cGroup_1_1_1.eContents().get(1);
private final RuleCall cTypeTypeRefParserRuleCall_1_1_1_1_0 = (RuleCall)cTypeAssignment_1_1_1_1.eContents().get(0);
private final RuleCall cReturnsCauseParserRuleCall_1_1_1 = (RuleCall)cGroup_1_1.eContents().get(1);
private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
private final Assignment cDefinesHiddenTokensAssignment_2_0 = (Assignment)cGroup_2.eContents().get(0);
private final Keyword cDefinesHiddenTokensHiddenKeyword_2_0_0 = (Keyword)cDefinesHiddenTokensAssignment_2_0.eContents().get(0);
@ -403,15 +398,15 @@ public class XtextGrammarAccess extends AbstractElementFinder.AbstractGrammarEle
private final Keyword cSemicolonKeyword_5 = (Keyword)cGroup.eContents().get(5);
//ParserRule:
// annotations+=Annotation* (^fragment?='fragment' RuleNameAndParams (wildcard?='*' | ('returns' type=TypeRef)?) |
// RuleNameAndParams ('returns' type=TypeRef)?) (definesHiddenTokens?='hidden' '(' (hiddenTokens+=[AbstractRule|RuleID] (
// ',' hiddenTokens+=[AbstractRule|RuleID])*)? ')')? ':'
// annotations+=Annotation* (^fragment?='fragment' RuleNameAndParams (wildcard?='*' | ReturnsCause?) |
// RuleNameAndParams ReturnsCause?) (definesHiddenTokens?='hidden' '(' (hiddenTokens+=[AbstractRule|RuleID] (','
// hiddenTokens+=[AbstractRule|RuleID])*)? ')')? ':'
// alternatives=Alternatives
// ';';
@Override public ParserRule getRule() { return rule; }
//annotations+=Annotation* (^fragment?='fragment' RuleNameAndParams (wildcard?='*' | ('returns' type=TypeRef)?) |
//RuleNameAndParams ('returns' type=TypeRef)?) (definesHiddenTokens?='hidden' '(' (hiddenTokens+=[AbstractRule|RuleID] (','
//annotations+=Annotation* (^fragment?='fragment' RuleNameAndParams (wildcard?='*' | ReturnsCause?) |
//RuleNameAndParams ReturnsCause?) (definesHiddenTokens?='hidden' '(' (hiddenTokens+=[AbstractRule|RuleID] (','
//hiddenTokens+=[AbstractRule|RuleID])*)? ')')? ':'
//alternatives=Alternatives
//';'
@ -423,11 +418,10 @@ public class XtextGrammarAccess extends AbstractElementFinder.AbstractGrammarEle
//Annotation
public RuleCall getAnnotationsAnnotationParserRuleCall_0_0() { return cAnnotationsAnnotationParserRuleCall_0_0; }
//(^fragment?='fragment' RuleNameAndParams (wildcard?='*' | ('returns' type=TypeRef)?) | RuleNameAndParams ('returns'
//type=TypeRef)?)
//(^fragment?='fragment' RuleNameAndParams (wildcard?='*' | ReturnsCause?) | RuleNameAndParams ReturnsCause?)
public Alternatives getAlternatives_1() { return cAlternatives_1; }
//^fragment?='fragment' RuleNameAndParams (wildcard?='*' | ('returns' type=TypeRef)?)
//^fragment?='fragment' RuleNameAndParams (wildcard?='*' | ReturnsCause?)
public Group getGroup_1_0() { return cGroup_1_0; }
//^fragment?='fragment'
@ -439,7 +433,7 @@ public class XtextGrammarAccess extends AbstractElementFinder.AbstractGrammarEle
//RuleNameAndParams
public RuleCall getRuleNameAndParamsParserRuleCall_1_0_1() { return cRuleNameAndParamsParserRuleCall_1_0_1; }
//(wildcard?='*' | ('returns' type=TypeRef)?)
//(wildcard?='*' | ReturnsCause?)
public Alternatives getAlternatives_1_0_2() { return cAlternatives_1_0_2; }
//wildcard?='*'
@ -448,37 +442,20 @@ public class XtextGrammarAccess extends AbstractElementFinder.AbstractGrammarEle
//'*'
public Keyword getWildcardAsteriskKeyword_1_0_2_0_0() { return cWildcardAsteriskKeyword_1_0_2_0_0; }
//('returns' type=TypeRef)?
public Group getGroup_1_0_2_1() { return cGroup_1_0_2_1; }
//ReturnsCause?
public RuleCall getReturnsCauseParserRuleCall_1_0_2_1() { return cReturnsCauseParserRuleCall_1_0_2_1; }
//'returns'
public Keyword getReturnsKeyword_1_0_2_1_0() { return cReturnsKeyword_1_0_2_1_0; }
//type=TypeRef
public Assignment getTypeAssignment_1_0_2_1_1() { return cTypeAssignment_1_0_2_1_1; }
//TypeRef
public RuleCall getTypeTypeRefParserRuleCall_1_0_2_1_1_0() { return cTypeTypeRefParserRuleCall_1_0_2_1_1_0; }
//RuleNameAndParams ('returns' type=TypeRef)?
//RuleNameAndParams ReturnsCause?
public Group getGroup_1_1() { return cGroup_1_1; }
//RuleNameAndParams
public RuleCall getRuleNameAndParamsParserRuleCall_1_1_0() { return cRuleNameAndParamsParserRuleCall_1_1_0; }
//('returns' type=TypeRef)?
public Group getGroup_1_1_1() { return cGroup_1_1_1; }
//ReturnsCause?
public RuleCall getReturnsCauseParserRuleCall_1_1_1() { return cReturnsCauseParserRuleCall_1_1_1; }
//'returns'
public Keyword getReturnsKeyword_1_1_1_0() { return cReturnsKeyword_1_1_1_0; }
//type=TypeRef
public Assignment getTypeAssignment_1_1_1_1() { return cTypeAssignment_1_1_1_1; }
//TypeRef
public RuleCall getTypeTypeRefParserRuleCall_1_1_1_1_0() { return cTypeTypeRefParserRuleCall_1_1_1_1_0; }
//(definesHiddenTokens?='hidden' '(' (hiddenTokens+=[AbstractRule|RuleID] (',' hiddenTokens+=[AbstractRule|RuleID])*)? ')')?
//(definesHiddenTokens?='hidden' '(' (hiddenTokens+=[AbstractRule|RuleID] (',' hiddenTokens+=[AbstractRule|RuleID])*)? ')')
//?
public Group getGroup_2() { return cGroup_2; }
//definesHiddenTokens?='hidden'
@ -532,6 +509,29 @@ public class XtextGrammarAccess extends AbstractElementFinder.AbstractGrammarEle
//';'
public Keyword getSemicolonKeyword_5() { return cSemicolonKeyword_5; }
}
public class ReturnsCauseElements extends AbstractParserRuleElementFinder {
private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.xtext.Xtext.ReturnsCause");
private final Group cGroup = (Group)rule.eContents().get(0);
private final Keyword cReturnsKeyword_0 = (Keyword)cGroup.eContents().get(0);
private final Assignment cTypeAssignment_1 = (Assignment)cGroup.eContents().get(1);
private final RuleCall cTypeTypeRefParserRuleCall_1_0 = (RuleCall)cTypeAssignment_1.eContents().get(0);
//fragment ReturnsCause*:
// 'returns' type=TypeRef;
@Override public ParserRule getRule() { return rule; }
//'returns' type=TypeRef
public Group getGroup() { return cGroup; }
//'returns'
public Keyword getReturnsKeyword_0() { return cReturnsKeyword_0; }
//type=TypeRef
public Assignment getTypeAssignment_1() { return cTypeAssignment_1; }
//TypeRef
public RuleCall getTypeTypeRefParserRuleCall_1_0() { return cTypeTypeRefParserRuleCall_1_0; }
}
public class RuleNameAndParamsElements extends AbstractParserRuleElementFinder {
private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.xtext.Xtext.RuleNameAndParams");
private final Group cGroup = (Group)rule.eContents().get(1);
@ -1786,10 +1786,7 @@ public class XtextGrammarAccess extends AbstractElementFinder.AbstractGrammarEle
private final Group cGroup_2_1 = (Group)cAlternatives_2.eContents().get(1);
private final Assignment cNameAssignment_2_1_0 = (Assignment)cGroup_2_1.eContents().get(0);
private final RuleCall cNameValidIDParserRuleCall_2_1_0_0 = (RuleCall)cNameAssignment_2_1_0.eContents().get(0);
private final Group cGroup_2_1_1 = (Group)cGroup_2_1.eContents().get(1);
private final Keyword cReturnsKeyword_2_1_1_0 = (Keyword)cGroup_2_1_1.eContents().get(0);
private final Assignment cTypeAssignment_2_1_1_1 = (Assignment)cGroup_2_1_1.eContents().get(1);
private final RuleCall cTypeTypeRefParserRuleCall_2_1_1_1_0 = (RuleCall)cTypeAssignment_2_1_1_1.eContents().get(0);
private final RuleCall cReturnsCauseParserRuleCall_2_1_1 = (RuleCall)cGroup_2_1.eContents().get(1);
private final Keyword cColonKeyword_3 = (Keyword)cGroup.eContents().get(3);
private final Assignment cAlternativesAssignment_4 = (Assignment)cGroup.eContents().get(4);
private final RuleCall cAlternativesTerminalAlternativesParserRuleCall_4_0 = (RuleCall)cAlternativesAssignment_4.eContents().get(0);
@ -1797,13 +1794,13 @@ public class XtextGrammarAccess extends AbstractElementFinder.AbstractGrammarEle
//TerminalRule:
// annotations+=Annotation*
// 'terminal' (^fragment?='fragment' name=ValidID | name=ValidID ('returns' type=TypeRef)?) ':'
// 'terminal' (^fragment?='fragment' name=ValidID | name=ValidID ReturnsCause?) ':'
// alternatives=TerminalAlternatives
// ';';
@Override public ParserRule getRule() { return rule; }
//annotations+=Annotation*
//'terminal' (^fragment?='fragment' name=ValidID | name=ValidID ('returns' type=TypeRef)?) ':'
//'terminal' (^fragment?='fragment' name=ValidID | name=ValidID ReturnsCause?) ':'
//alternatives=TerminalAlternatives
//';'
public Group getGroup() { return cGroup; }
@ -1817,7 +1814,7 @@ public class XtextGrammarAccess extends AbstractElementFinder.AbstractGrammarEle
//'terminal'
public Keyword getTerminalKeyword_1() { return cTerminalKeyword_1; }
//(^fragment?='fragment' name=ValidID | name=ValidID ('returns' type=TypeRef)?)
//(^fragment?='fragment' name=ValidID | name=ValidID ReturnsCause?)
public Alternatives getAlternatives_2() { return cAlternatives_2; }
//^fragment?='fragment' name=ValidID
@ -1835,7 +1832,7 @@ public class XtextGrammarAccess extends AbstractElementFinder.AbstractGrammarEle
//ValidID
public RuleCall getNameValidIDParserRuleCall_2_0_1_0() { return cNameValidIDParserRuleCall_2_0_1_0; }
//name=ValidID ('returns' type=TypeRef)?
//name=ValidID ReturnsCause?
public Group getGroup_2_1() { return cGroup_2_1; }
//name=ValidID
@ -1844,17 +1841,8 @@ public class XtextGrammarAccess extends AbstractElementFinder.AbstractGrammarEle
//ValidID
public RuleCall getNameValidIDParserRuleCall_2_1_0_0() { return cNameValidIDParserRuleCall_2_1_0_0; }
//('returns' type=TypeRef)?
public Group getGroup_2_1_1() { return cGroup_2_1_1; }
//'returns'
public Keyword getReturnsKeyword_2_1_1_0() { return cReturnsKeyword_2_1_1_0; }
//type=TypeRef
public Assignment getTypeAssignment_2_1_1_1() { return cTypeAssignment_2_1_1_1; }
//TypeRef
public RuleCall getTypeTypeRefParserRuleCall_2_1_1_1_0() { return cTypeTypeRefParserRuleCall_2_1_1_1_0; }
//ReturnsCause?
public RuleCall getReturnsCauseParserRuleCall_2_1_1() { return cReturnsCauseParserRuleCall_2_1_1; }
//':'
public Keyword getColonKeyword_3() { return cColonKeyword_3; }
@ -2178,10 +2166,7 @@ public class XtextGrammarAccess extends AbstractElementFinder.AbstractGrammarEle
private final Keyword cEnumKeyword_1 = (Keyword)cGroup.eContents().get(1);
private final Assignment cNameAssignment_2 = (Assignment)cGroup.eContents().get(2);
private final RuleCall cNameValidIDParserRuleCall_2_0 = (RuleCall)cNameAssignment_2.eContents().get(0);
private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
private final Keyword cReturnsKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
private final Assignment cTypeAssignment_3_1 = (Assignment)cGroup_3.eContents().get(1);
private final RuleCall cTypeTypeRefParserRuleCall_3_1_0 = (RuleCall)cTypeAssignment_3_1.eContents().get(0);
private final RuleCall cReturnsCauseParserRuleCall_3 = (RuleCall)cGroup.eContents().get(3);
private final Keyword cColonKeyword_4 = (Keyword)cGroup.eContents().get(4);
private final Assignment cAlternativesAssignment_5 = (Assignment)cGroup.eContents().get(5);
private final RuleCall cAlternativesEnumLiteralsParserRuleCall_5_0 = (RuleCall)cAlternativesAssignment_5.eContents().get(0);
@ -2189,13 +2174,13 @@ public class XtextGrammarAccess extends AbstractElementFinder.AbstractGrammarEle
//EnumRule:
// annotations+=Annotation*
// 'enum' name=ValidID ('returns' type=TypeRef)? ':'
// 'enum' name=ValidID ReturnsCause? ':'
// alternatives=EnumLiterals
// ';';
@Override public ParserRule getRule() { return rule; }
//annotations+=Annotation*
//'enum' name=ValidID ('returns' type=TypeRef)? ':'
//'enum' name=ValidID ReturnsCause? ':'
//alternatives=EnumLiterals
//';'
public Group getGroup() { return cGroup; }
@ -2215,17 +2200,8 @@ public class XtextGrammarAccess extends AbstractElementFinder.AbstractGrammarEle
//ValidID
public RuleCall getNameValidIDParserRuleCall_2_0() { return cNameValidIDParserRuleCall_2_0; }
//('returns' type=TypeRef)?
public Group getGroup_3() { return cGroup_3; }
//'returns'
public Keyword getReturnsKeyword_3_0() { return cReturnsKeyword_3_0; }
//type=TypeRef
public Assignment getTypeAssignment_3_1() { return cTypeAssignment_3_1; }
//TypeRef
public RuleCall getTypeTypeRefParserRuleCall_3_1_0() { return cTypeTypeRefParserRuleCall_3_1_0; }
//ReturnsCause?
public RuleCall getReturnsCauseParserRuleCall_3() { return cReturnsCauseParserRuleCall_3; }
//':'
public Keyword getColonKeyword_4() { return cColonKeyword_4; }
@ -2327,6 +2303,7 @@ public class XtextGrammarAccess extends AbstractElementFinder.AbstractGrammarEle
private final ReferencedMetamodelElements pReferencedMetamodel;
private final AnnotationElements pAnnotation;
private final ParserRuleElements pParserRule;
private final ReturnsCauseElements pReturnsCause;
private final RuleNameAndParamsElements pRuleNameAndParams;
private final ParameterElements pParameter;
private final TypeRefElements pTypeRef;
@ -2394,6 +2371,7 @@ public class XtextGrammarAccess extends AbstractElementFinder.AbstractGrammarEle
this.pReferencedMetamodel = new ReferencedMetamodelElements();
this.pAnnotation = new AnnotationElements();
this.pParserRule = new ParserRuleElements();
this.pReturnsCause = new ReturnsCauseElements();
this.pRuleNameAndParams = new RuleNameAndParamsElements();
this.pParameter = new ParameterElements();
this.pTypeRef = new TypeRefElements();
@ -2554,9 +2532,9 @@ public class XtextGrammarAccess extends AbstractElementFinder.AbstractGrammarEle
}
//ParserRule:
// annotations+=Annotation* (^fragment?='fragment' RuleNameAndParams (wildcard?='*' | ('returns' type=TypeRef)?) |
// RuleNameAndParams ('returns' type=TypeRef)?) (definesHiddenTokens?='hidden' '(' (hiddenTokens+=[AbstractRule|RuleID] (
// ',' hiddenTokens+=[AbstractRule|RuleID])*)? ')')? ':'
// annotations+=Annotation* (^fragment?='fragment' RuleNameAndParams (wildcard?='*' | ReturnsCause?) |
// RuleNameAndParams ReturnsCause?) (definesHiddenTokens?='hidden' '(' (hiddenTokens+=[AbstractRule|RuleID] (','
// hiddenTokens+=[AbstractRule|RuleID])*)? ')')? ':'
// alternatives=Alternatives
// ';';
public ParserRuleElements getParserRuleAccess() {
@ -2567,6 +2545,16 @@ public class XtextGrammarAccess extends AbstractElementFinder.AbstractGrammarEle
return getParserRuleAccess().getRule();
}
//fragment ReturnsCause*:
// 'returns' type=TypeRef;
public ReturnsCauseElements getReturnsCauseAccess() {
return pReturnsCause;
}
public ParserRule getReturnsCauseRule() {
return getReturnsCauseAccess().getRule();
}
//fragment RuleNameAndParams returns ParserRule:
// name=ValidID ('<' (parameters+=Parameter (',' parameters+=Parameter)*)? '>')?;
public RuleNameAndParamsElements getRuleNameAndParamsAccess() {
@ -2914,7 +2902,7 @@ public class XtextGrammarAccess extends AbstractElementFinder.AbstractGrammarEle
//TerminalRule:
// annotations+=Annotation*
// 'terminal' (^fragment?='fragment' name=ValidID | name=ValidID ('returns' type=TypeRef)?) ':'
// 'terminal' (^fragment?='fragment' name=ValidID | name=ValidID ReturnsCause?) ':'
// alternatives=TerminalAlternatives
// ';';
public TerminalRuleElements getTerminalRuleAccess() {
@ -3038,7 +3026,7 @@ public class XtextGrammarAccess extends AbstractElementFinder.AbstractGrammarEle
//EnumRule:
// annotations+=Annotation*
// 'enum' name=ValidID ('returns' type=TypeRef)? ':'
// 'enum' name=ValidID ReturnsCause? ':'
// alternatives=EnumLiterals
// ';';
public EnumRuleElements getEnumRuleAccess() {

View file

@ -47,14 +47,16 @@ Annotation returns Annotation:
ParserRule :
(annotations += Annotation)*
(
^fragment?='fragment' RuleNameAndParams (wildcard?='*' | ('returns' type=TypeRef)?)
| RuleNameAndParams ('returns' type=TypeRef)?
^fragment?='fragment' RuleNameAndParams (wildcard?='*' | ReturnsCause?)
| RuleNameAndParams ReturnsCause?
)
(definesHiddenTokens?='hidden' '(' (hiddenTokens+=[AbstractRule|RuleID] (',' hiddenTokens+=[AbstractRule|RuleID])*)? ')')? ':'
alternatives=Alternatives
';'
;
fragment ReturnsCause*:('returns' type=TypeRef);
fragment RuleNameAndParams returns ParserRule:
name=ValidID ('<' (parameters+=Parameter (',' parameters+=Parameter)*)? '>')?
;
@ -207,7 +209,7 @@ PredicatedGroup returns Group:
TerminalRule :
(annotations += Annotation)*
'terminal' (^fragment?='fragment' name=ValidID | name=ValidID ('returns' type=TypeRef)?) ':'
'terminal' (^fragment?='fragment' name=ValidID | name=ValidID ReturnsCause?) ':'
alternatives=TerminalAlternatives
';'
;
@ -259,7 +261,7 @@ CharacterRange returns AbstractElement:
EnumRule:
(annotations += Annotation)*
'enum' name=ValidID ('returns' type=TypeRef)? ':'
'enum' name=ValidID ReturnsCause? ':'
alternatives=EnumLiterals
';'
;