int yyRepetition1;
Pair<Node> yyRepValue1;
int yyOption1;
Node yyOpValue1;
Node yyValue;
ParseError yyError = ParseError.DUMMY;
// Alternative 1.
yyResult = pPath(yyStart);
yyError = yyResult.select(yyError);
if (yyResult.hasValue()) {
Node v$g$1 = yyResult.semanticValue();
yyBase = yyResult.index;
yyResult = psep(yyBase);
if (yyResult.hasValue(".")) {
yyBase = yyResult.index;
yyResult = pkey(yyBase);
if (yyResult.hasValue("type")) {
yyOption1 = yyResult.index;
yyOpValue1 = null;
yyResult = pTypeArgs(yyOption1);
yyError = yyResult.select(yyError, yyOption1);
if (yyResult.hasValue()) {
Node v$el$1 = yyResult.semanticValue();
yyOption1 = yyResult.index;
yyOpValue1 = v$el$1;
}
{ // Start scope for v$g$2.
Node v$g$2 = yyOpValue1;
yyRepetition1 = yyOption1;
yyRepValue1 = Pair.empty();
while (true) {
yyBase = yyRepetition1;
yyResult = pkey(yyBase);
if (yyResult.hasValue("#")) {
yyResult = pId(yyResult.index);
yyError = yyResult.select(yyError, yyRepetition1);
if (yyResult.hasValue()) {
Node v$el$2 = yyResult.semanticValue();
yyRepetition1 = yyResult.index;
yyRepValue1 = new Pair<Node>(v$el$2, yyRepValue1);
continue;
}
} else {
yyError = yyError.select("'#' expected", yyBase);
}
break;
}
{ // Start scope for v$g$3.
Pair<Node> v$g$3 = yyRepValue1.reverse();
yyValue = GNode.create("SimpleSingletonType", v$g$1, v$g$2, v$g$3);
yyValue.setLocation(location(yyStart));
return new SemanticValue(yyValue, yyRepetition1, yyError);
} // End scope for v$g$3.
} // End scope for v$g$2.
} else {
yyError = yyError.select("'type' expected", yyBase);
}
} else {
yyError = yyError.select("'.' expected", yyBase);
}
}
// Alternative 2.
yyResult = pStableId(yyStart);
yyError = yyResult.select(yyError);
if (yyResult.hasValue()) {
Node v$g$4 = yyResult.semanticValue();
yyOption1 = yyResult.index;
yyOpValue1 = null;
yyResult = pTypeArgs(yyOption1);
yyError = yyResult.select(yyError, yyOption1);
if (yyResult.hasValue()) {
Node v$el$3 = yyResult.semanticValue();
yyOption1 = yyResult.index;
yyOpValue1 = v$el$3;
}
{ // Start scope for v$g$5.
Node v$g$5 = yyOpValue1;
yyRepetition1 = yyOption1;
yyRepValue1 = Pair.empty();
while (true) {
yyBase = yyRepetition1;
yyResult = pkey(yyBase);
if (yyResult.hasValue("#")) {
yyResult = pId(yyResult.index);
yyError = yyResult.select(yyError, yyRepetition1);
if (yyResult.hasValue()) {
Node v$el$4 = yyResult.semanticValue();
yyRepetition1 = yyResult.index;
yyRepValue1 = new Pair<Node>(v$el$4, yyRepValue1);
continue;
}
} else {
yyError = yyError.select("'#' expected", yyBase);
}
break;
}
{ // Start scope for v$g$6.
Pair<Node> v$g$6 = yyRepValue1.reverse();
yyValue = GNode.create("SimpleIdType", v$g$4, v$g$5, v$g$6);
yyValue.setLocation(location(yyStart));
return new SemanticValue(yyValue, yyRepetition1, yyError);
} // End scope for v$g$6.
} // End scope for v$g$5.
}
// Alternative 3.
yyResult = psep(yyStart);
if (yyResult.hasValue("(")) {
yyResult = pTypes(yyResult.index);
yyError = yyResult.select(yyError);
if (yyResult.hasValue()) {
Node v$g$7 = yyResult.semanticValue();
yyOption1 = yyResult.index;
yyBase = yyOption1;
yyResult = psep(yyBase);
if (yyResult.hasValue(",")) {
yyOption1 = yyResult.index;
} else {
yyError = yyError.select("',' expected", yyBase);
}
yyBase = yyOption1;
yyResult = psep(yyBase);
if (yyResult.hasValue(")")) {
yyOption1 = yyResult.index;
yyOpValue1 = null;
yyResult = pTypeArgs(yyOption1);
yyError = yyResult.select(yyError, yyOption1);
if (yyResult.hasValue()) {
Node v$el$5 = yyResult.semanticValue();
yyOption1 = yyResult.index;
yyOpValue1 = v$el$5;
}
{ // Start scope for v$g$8.
Node v$g$8 = yyOpValue1;
yyRepetition1 = yyOption1;
yyRepValue1 = Pair.empty();
while (true) {
yyBase = yyRepetition1;
yyResult = pkey(yyBase);
if (yyResult.hasValue("#")) {
yyResult = pId(yyResult.index);
yyError = yyResult.select(yyError, yyRepetition1);
if (yyResult.hasValue()) {
Node v$el$6 = yyResult.semanticValue();
yyRepetition1 = yyResult.index;
yyRepValue1 = new Pair<Node>(v$el$6, yyRepValue1);
continue;
}
} else {
yyError = yyError.select("'#' expected", yyBase);
}
break;
}
{ // Start scope for v$g$9.
Pair<Node> v$g$9 = yyRepValue1.reverse();
yyValue = GNode.create("SimpleTupleType", v$g$7, v$g$8, v$g$9);
yyValue.setLocation(location(yyStart));
return new SemanticValue(yyValue, yyRepetition1, yyError);
} // End scope for v$g$9.
} // End scope for v$g$8.
} else {
yyError = yyError.select("')' expected", yyBase);
}
}
}
// Done.
yyError = yyError.select("simple type expected", yyStart);
return yyError;
}