00001: // ===========================================================================
00002: // This file has been generated by
00003: // Rats! Parser Generator, version 1.13.1,
00004: // (C) 2004-2007 Robert Grimm,
00005: // on Monday, October 8, 2007 at 5:40:10 PM.
00006: // Edit at your own risk.
00007: // ===========================================================================
00008:
00009: package xtc.lang;
00010:
00011: import java.io.Reader;
00012: import java.io.IOException;
00013:
00014: import java.util.HashSet;
00015: import java.util.Set;
00016:
00017: import xtc.util.Action;
00018: import xtc.util.Pair;
00019:
00020: import xtc.tree.Node;
00021: import xtc.tree.GNode;
00022:
00023: import xtc.parser.ParserBase;
00024: import xtc.parser.Column;
00025: import xtc.parser.Result;
00026: import xtc.parser.SemanticValue;
00027: import xtc.parser.ParseError;
00028:
00029: /**
00030: * Packrat parser for grammar <code>xtc.lang.JavaFive</code>.
00031: *
00032: * <p />This class has been generated by the <i>Rats!</i> parser
00033: * generator, version 1.13.1, (C) 2004-2007 Robert Grimm.
00034: */
00035: public final class JavaFiveParser extends ParserBase {
00036:
00037: /** The JAVA_KEYWORDS set. */
00038: public static final Set<String> JAVA_KEYWORDS = new HashSet<String>();
00039:
00040: // =========================================================================
00041:
00042: /** Chunk 1 of memoized results. */
00043: static final class Chunk1 {
00044: Result fModifiers;
00045: Result fFormalParameters;
00046: Result fFormalParameters$$Star1;
00047: Result fDeclarators;
00048: Result fDeclarators$$Star1;
00049: Result fImplementation;
00050: Result fImplementation$$Star1;
00051: Result fBlock;
00052: Result fBlock$$Star1;
00053: Result fParExpression;
00054: }
00055:
00056: /** Chunk 2 of memoized results. */
00057: static final class Chunk2 {
00058: Result fCatchClause;
00059: Result fExpression;
00060: Result fConditionalExpression;
00061: Result fLogicalOrExpression;
00062: Result fRelationalExpression;
00063: Result fVariableInitializer;
00064: Result fAnnotations;
00065: Result fAnnotations$$Plus1;
00066: Result fElementValuePair;
00067: Result fElementValue;
00068: }
00069:
00070: /** Chunk 3 of memoized results. */
00071: static final class Chunk3 {
00072: Result fResultType;
00073: Result fType;
00074: Result fTypeName;
00075: Result fPrimitiveType;
00076: Result fDimensions;
00077: Result fDimensions$$Plus1;
00078: Result fTypeParameters;
00079: Result fTypeParameters$$Star1;
00080: Result fTypeParameter;
00081: Result fTypeArguments;
00082: }
00083:
00084: /** Chunk 4 of memoized results. */
00085: static final class Chunk4 {
00086: Result fTypeArguments$$Star1;
00087: Result fTypeArgument;
00088: Result fTypeInstantiation;
00089: Result fQualifiedIdentifier;
00090: Result fQualifiedIdentifier$$Star1;
00091: Result fIdentifier;
00092: Result fWord;
00093: Result fSymbol;
00094: }
00095:
00096: // =========================================================================
00097:
00098: /** Memoization table column. */
00099: static final class JavaFiveParserColumn extends Column {
00100: Chunk1 chunk1;
00101: Chunk2 chunk2;
00102: Chunk3 chunk3;
00103: Chunk4 chunk4;
00104: }
00105:
00106: // =========================================================================
00107:
00108: /**
00109: * Create a new packrat parser.
00110: *
00111: * @param reader The reader.
00112: * @param file The file name.
00113: */
00114: public JavaFiveParser(final Reader reader, final String file) {
00115: super (reader, file);
00116: }
00117:
00118: /**
00119: * Create a new packrat parser.
00120: *
00121: * @param reader The file reader.
00122: * @param file The file name.
00123: * @param size The file size.
00124: */
00125: public JavaFiveParser(final Reader reader, final String file,
00126: final int size) {
00127: super (reader, file, size);
00128: }
00129:
00130: // =========================================================================
00131:
00132: protected Column newColumn() {
00133: return new JavaFiveParserColumn();
00134: }
00135:
00136: // =========================================================================
00137:
00138: /**
00139: * Parse nonterminal xtc.lang.JavaFive.CompilationUnit.
00140: *
00141: * @param yyStart The index.
00142: * @return The result.
00143: * @throws IOException Signals an I/O error.
00144: */
00145: public Result pCompilationUnit(final int yyStart)
00146: throws IOException {
00147: int yyC;
00148: int yyIndex;
00149: Result yyResult;
00150: int yyRepetition1;
00151: Pair<Node> yyRepValue1;
00152: int yyOption1;
00153: Node yyOpValue1;
00154: Node yyValue;
00155: ParseError yyError = ParseError.DUMMY;
00156:
00157: // Alternative 1.
00158:
00159: yyResult = pSpacing(yyStart);
00160: yyError = yyResult.select(yyError);
00161: if (yyResult.hasValue()) {
00162:
00163: yyOption1 = yyResult.index;
00164: yyOpValue1 = null;
00165:
00166: yyResult = pPackageDeclaration(yyOption1);
00167: yyError = yyResult.select(yyError);
00168: if (yyResult.hasValue()) {
00169: final Node v$el$1 = yyResult.semanticValue();
00170:
00171: yyOption1 = yyResult.index;
00172: yyOpValue1 = v$el$1;
00173: }
00174: { // Start scope for v$g$1.
00175: final Node v$g$1 = yyOpValue1;
00176:
00177: yyRepetition1 = yyOption1;
00178: yyRepValue1 = Pair.empty();
00179: while (true) {
00180:
00181: yyResult = pImportDeclaration(yyRepetition1);
00182: yyError = yyResult.select(yyError);
00183: if (yyResult.hasValue()) {
00184: final Node v$el$2 = yyResult.semanticValue();
00185:
00186: yyRepetition1 = yyResult.index;
00187: yyRepValue1 = new Pair<Node>(v$el$2,
00188: yyRepValue1);
00189: continue;
00190: }
00191: break;
00192: }
00193: { // Start scope for v$g$2.
00194: final Pair<Node> v$g$2 = yyRepValue1.reverse();
00195:
00196: yyRepValue1 = Pair.empty();
00197: while (true) {
00198:
00199: yyResult = pDeclaration(yyRepetition1);
00200: yyError = yyResult.select(yyError);
00201: if (yyResult.hasValue()) {
00202: final Node v$el$3 = yyResult
00203: .semanticValue();
00204:
00205: yyRepetition1 = yyResult.index;
00206: yyRepValue1 = new Pair<Node>(v$el$3,
00207: yyRepValue1);
00208: continue;
00209: }
00210: break;
00211: }
00212: { // Start scope for v$g$3.
00213: final Pair<Node> v$g$3 = yyRepValue1.reverse();
00214:
00215: yyOption1 = yyRepetition1;
00216:
00217: yyC = character(yyOption1);
00218: if ('\u001a' == yyC) {
00219: yyIndex = yyOption1 + 1;
00220:
00221: yyOption1 = yyIndex;
00222: }
00223:
00224: yyResult = pEndOfFile(yyOption1);
00225: yyError = yyResult.select(yyError);
00226: if (yyResult.hasValue()) {
00227:
00228: yyValue = GNode.create("CompilationUnit",
00229: v$g$2.size() + v$g$3.size() + 1)
00230: .add(v$g$1).addAll(v$g$2).addAll(
00231: v$g$3);
00232: yyValue.setLocation(location(yyStart));
00233:
00234: return yyResult.createValue(yyValue,
00235: yyError);
00236: }
00237: } // End scope for v$g$3.
00238: } // End scope for v$g$2.
00239: } // End scope for v$g$1.
00240: }
00241:
00242: // Done.
00243: yyError = yyError.select("compilation unit expected", yyStart);
00244: return yyError;
00245: }
00246:
00247: // =========================================================================
00248:
00249: /**
00250: * Parse nonterminal xtc.lang.JavaFive.PackageDeclaration.
00251: *
00252: * @param yyStart The index.
00253: * @return The result.
00254: * @throws IOException Signals an I/O error.
00255: */
00256: private Result pPackageDeclaration(final int yyStart)
00257: throws IOException {
00258: Result yyResult;
00259: int yyBase;
00260: int yyOption1;
00261: Node yyOpValue1;
00262: Node yyValue;
00263: ParseError yyError = ParseError.DUMMY;
00264:
00265: // Alternative <Declaration>.
00266:
00267: yyOption1 = yyStart;
00268: yyOpValue1 = null;
00269:
00270: yyResult = pAnnotations(yyOption1);
00271: yyError = yyResult.select(yyError);
00272: if (yyResult.hasValue()) {
00273: final Node v$el$1 = yyResult.semanticValue();
00274:
00275: yyOption1 = yyResult.index;
00276: yyOpValue1 = v$el$1;
00277: }
00278: { // Start scope for v$g$1.
00279: final Node v$g$1 = yyOpValue1;
00280:
00281: yyBase = yyOption1;
00282: yyResult = pWord(yyBase);
00283: yyError = yyResult.select(yyError);
00284: if (yyResult.hasValue("package")) {
00285:
00286: yyResult = pQualifiedIdentifier(yyResult.index);
00287: yyError = yyResult.select(yyError);
00288: if (yyResult.hasValue()) {
00289: final Node v$g$2 = yyResult.semanticValue();
00290:
00291: yyBase = yyResult.index;
00292: yyResult = pSymbol(yyBase);
00293: yyError = yyResult.select(yyError);
00294: if (yyResult.hasValue(";")) {
00295:
00296: yyValue = GNode.create("PackageDeclaration",
00297: v$g$1, v$g$2);
00298: yyValue.setLocation(location(yyStart));
00299:
00300: return yyResult.createValue(yyValue, yyError);
00301: } else {
00302: yyError = yyError.select("\";\" expected",
00303: yyBase);
00304: }
00305: }
00306: } else {
00307: yyError = yyError
00308: .select("\"package\" expected", yyBase);
00309: }
00310: } // End scope for v$g$1.
00311:
00312: // Done.
00313: return yyError;
00314: }
00315:
00316: // =========================================================================
00317:
00318: /**
00319: * Parse nonterminal xtc.lang.JavaFive.ImportDeclaration.
00320: *
00321: * @param yyStart The index.
00322: * @return The result.
00323: * @throws IOException Signals an I/O error.
00324: */
00325: private Result pImportDeclaration(final int yyStart)
00326: throws IOException {
00327: Result yyResult;
00328: int yyBase;
00329: int yyOption1;
00330: String yyOpValue1;
00331: Node yyValue;
00332: ParseError yyError = ParseError.DUMMY;
00333:
00334: // Alternative <Declaration>.
00335:
00336: yyResult = pWord(yyStart);
00337: yyError = yyResult.select(yyError);
00338: if (yyResult.hasValue("import")) {
00339:
00340: yyOption1 = yyResult.index;
00341: yyOpValue1 = null;
00342:
00343: yyBase = yyOption1;
00344: yyResult = pWord(yyBase);
00345: yyError = yyResult.select(yyError);
00346: if (yyResult.hasValue("static")) {
00347: final String v$el$1 = "static";
00348:
00349: yyOption1 = yyResult.index;
00350: yyOpValue1 = v$el$1;
00351: } else {
00352: yyError = yyError.select("\"static\" expected", yyBase);
00353: }
00354: { // Start scope for v$g$1.
00355: final String v$g$1 = yyOpValue1;
00356:
00357: yyResult = pQualifiedIdentifier(yyOption1);
00358: yyError = yyResult.select(yyError);
00359: if (yyResult.hasValue()) {
00360: final Node v$g$2 = yyResult.semanticValue();
00361:
00362: yyOption1 = yyResult.index;
00363: yyOpValue1 = null;
00364:
00365: yyResult = pDotStarTail(yyOption1);
00366: yyError = yyResult.select(yyError);
00367: if (yyResult.hasValue()) {
00368: final String v$el$2 = yyResult.semanticValue();
00369:
00370: yyOption1 = yyResult.index;
00371: yyOpValue1 = v$el$2;
00372: }
00373: { // Start scope for v$g$3.
00374: final String v$g$3 = yyOpValue1;
00375:
00376: yyBase = yyOption1;
00377: yyResult = pSymbol(yyBase);
00378: yyError = yyResult.select(yyError);
00379: if (yyResult.hasValue(";")) {
00380:
00381: yyValue = GNode.create("ImportDeclaration",
00382: v$g$1, v$g$2, v$g$3);
00383: yyValue.setLocation(location(yyStart));
00384:
00385: return yyResult.createValue(yyValue,
00386: yyError);
00387: } else {
00388: yyError = yyError.select("\";\" expected",
00389: yyBase);
00390: }
00391: } // End scope for v$g$3.
00392: }
00393: } // End scope for v$g$1.
00394: }
00395:
00396: // Done.
00397: yyError = yyError
00398: .select("import declaration expected", yyStart);
00399: return yyError;
00400: }
00401:
00402: // =========================================================================
00403:
00404: /**
00405: * Parse nonterminal xtc.lang.JavaFive.DotStarTail.
00406: *
00407: * @param yyStart The index.
00408: * @return The result.
00409: * @throws IOException Signals an I/O error.
00410: */
00411: private Result pDotStarTail(final int yyStart) throws IOException {
00412: Result yyResult;
00413: int yyBase;
00414: String yyValue;
00415: ParseError yyError = ParseError.DUMMY;
00416:
00417: // Alternative 1.
00418:
00419: yyResult = pSymbol(yyStart);
00420: yyError = yyResult.select(yyError);
00421: if (yyResult.hasValue(".")) {
00422:
00423: yyBase = yyResult.index;
00424: yyResult = pSymbol(yyBase);
00425: yyError = yyResult.select(yyError);
00426: if (yyResult.hasValue("*")) {
00427: yyValue = "*";
00428:
00429: return yyResult.createValue(yyValue, yyError);
00430: } else {
00431: yyError = yyError.select("\"*\" expected", yyBase);
00432: }
00433: }
00434:
00435: // Done.
00436: yyError = yyError.select("dot star tail expected", yyStart);
00437: return yyError;
00438: }
00439:
00440: // =========================================================================
00441:
00442: /**
00443: * Parse nonterminal xtc.lang.JavaFive.Modifiers.
00444: *
00445: * @param yyStart The index.
00446: * @return The result.
00447: * @throws IOException Signals an I/O error.
00448: */
00449: private Result pModifiers(final int yyStart) throws IOException {
00450: JavaFiveParserColumn yyColumn = (JavaFiveParserColumn) column(yyStart);
00451: if (null == yyColumn.chunk1)
00452: yyColumn.chunk1 = new Chunk1();
00453: if (null == yyColumn.chunk1.fModifiers)
00454: yyColumn.chunk1.fModifiers = pModifiers$1(yyStart);
00455: return yyColumn.chunk1.fModifiers;
00456: }
00457:
00458: /** Actually parse xtc.lang.JavaFive.Modifiers. */
00459: private Result pModifiers$1(final int yyStart) throws IOException {
00460: Result yyResult;
00461: Node yyValue;
00462: ParseError yyError = ParseError.DUMMY;
00463:
00464: // Alternative 1.
00465:
00466: yyResult = pModifierList(yyStart);
00467: yyError = yyResult.select(yyError);
00468: if (yyResult.hasValue()) {
00469: final Pair<Node> v$g$1 = yyResult.semanticValue();
00470:
00471: yyValue = GNode.createFromPair("Modifiers", v$g$1);
00472: yyValue.setLocation(location(yyStart));
00473:
00474: return yyResult.createValue(yyValue, yyError);
00475: }
00476:
00477: // Done.
00478: return yyError;
00479: }
00480:
00481: // =========================================================================
00482:
00483: /**
00484: * Parse nonterminal xtc.lang.JavaFive.ModifierList.
00485: *
00486: * @param yyStart The index.
00487: * @return The result.
00488: * @throws IOException Signals an I/O error.
00489: */
00490: private Result pModifierList(final int yyStart) throws IOException {
00491: Result yyResult;
00492: int yyRepetition1;
00493: Pair<Node> yyRepValue1;
00494: Pair<Node> yyValue;
00495: ParseError yyError = ParseError.DUMMY;
00496:
00497: // Alternative 1.
00498:
00499: yyRepetition1 = yyStart;
00500: yyRepValue1 = Pair.empty();
00501: while (true) {
00502:
00503: yyResult = pModifier(yyRepetition1);
00504: yyError = yyResult.select(yyError);
00505: if (yyResult.hasValue()) {
00506: final Node v$el$1 = yyResult.semanticValue();
00507:
00508: yyRepetition1 = yyResult.index;
00509: yyRepValue1 = new Pair<Node>(v$el$1, yyRepValue1);
00510: continue;
00511: }
00512: break;
00513: }
00514: { // Start scope for yyValue.
00515: yyValue = yyRepValue1.reverse();
00516:
00517: return new SemanticValue(yyValue, yyRepetition1, yyError);
00518: } // End scope for yyValue.
00519: }
00520:
00521: // =========================================================================
00522:
00523: /**
00524: * Parse nonterminal xtc.lang.JavaFive.Modifier.
00525: *
00526: * @param yyStart The index.
00527: * @return The result.
00528: * @throws IOException Signals an I/O error.
00529: */
00530: private Result pModifier(final int yyStart) throws IOException {
00531: Result yyResult;
00532: Node yyValue;
00533: ParseError yyError = ParseError.DUMMY;
00534:
00535: // Alternative <Annotation>.
00536:
00537: yyResult = pAnnotation(yyStart);
00538: yyError = yyResult.select(yyError);
00539: if (yyResult.hasValue()) {
00540: yyValue = yyResult.semanticValue();
00541:
00542: return yyResult.createValue(yyValue, yyError);
00543: }
00544:
00545: // Alternative <Public>.
00546:
00547: yyResult = pWord(yyStart);
00548: yyError = yyResult.select(yyError);
00549: if (yyResult.hasValue("public")) {
00550: final String v$g$1 = "public";
00551:
00552: yyValue = GNode.create("Modifier", v$g$1);
00553: yyValue.setLocation(location(yyStart));
00554:
00555: return yyResult.createValue(yyValue, yyError);
00556: }
00557:
00558: // Alternative <Protected>.
00559:
00560: yyResult = pWord(yyStart);
00561: yyError = yyResult.select(yyError);
00562: if (yyResult.hasValue("protected")) {
00563: final String v$g$2 = "protected";
00564:
00565: yyValue = GNode.create("Modifier", v$g$2);
00566: yyValue.setLocation(location(yyStart));
00567:
00568: return yyResult.createValue(yyValue, yyError);
00569: }
00570:
00571: // Alternative <Private>.
00572:
00573: yyResult = pWord(yyStart);
00574: yyError = yyResult.select(yyError);
00575: if (yyResult.hasValue("private")) {
00576: final String v$g$3 = "private";
00577:
00578: yyValue = GNode.create("Modifier", v$g$3);
00579: yyValue.setLocation(location(yyStart));
00580:
00581: return yyResult.createValue(yyValue, yyError);
00582: }
00583:
00584: // Alternative <Static>.
00585:
00586: yyResult = pWord(yyStart);
00587: yyError = yyResult.select(yyError);
00588: if (yyResult.hasValue("static")) {
00589: final String v$g$4 = "static";
00590:
00591: yyValue = GNode.create("Modifier", v$g$4);
00592: yyValue.setLocation(location(yyStart));
00593:
00594: return yyResult.createValue(yyValue, yyError);
00595: }
00596:
00597: // Alternative <Abstract>.
00598:
00599: yyResult = pWord(yyStart);
00600: yyError = yyResult.select(yyError);
00601: if (yyResult.hasValue("abstract")) {
00602: final String v$g$5 = "abstract";
00603:
00604: yyValue = GNode.create("Modifier", v$g$5);
00605: yyValue.setLocation(location(yyStart));
00606:
00607: return yyResult.createValue(yyValue, yyError);
00608: }
00609:
00610: // Alternative <Final>.
00611:
00612: yyResult = pWord(yyStart);
00613: yyError = yyResult.select(yyError);
00614: if (yyResult.hasValue("final")) {
00615: final String v$g$6 = "final";
00616:
00617: yyValue = GNode.create("Modifier", v$g$6);
00618: yyValue.setLocation(location(yyStart));
00619:
00620: return yyResult.createValue(yyValue, yyError);
00621: }
00622:
00623: // Alternative <Native>.
00624:
00625: yyResult = pWord(yyStart);
00626: yyError = yyResult.select(yyError);
00627: if (yyResult.hasValue("native")) {
00628: final String v$g$7 = "native";
00629:
00630: yyValue = GNode.create("Modifier", v$g$7);
00631: yyValue.setLocation(location(yyStart));
00632:
00633: return yyResult.createValue(yyValue, yyError);
00634: }
00635:
00636: // Alternative <Synchronized>.
00637:
00638: yyResult = pWord(yyStart);
00639: yyError = yyResult.select(yyError);
00640: if (yyResult.hasValue("synchronized")) {
00641: final String v$g$8 = "synchronized";
00642:
00643: yyValue = GNode.create("Modifier", v$g$8);
00644: yyValue.setLocation(location(yyStart));
00645:
00646: return yyResult.createValue(yyValue, yyError);
00647: }
00648:
00649: // Alternative <Transient>.
00650:
00651: yyResult = pWord(yyStart);
00652: yyError = yyResult.select(yyError);
00653: if (yyResult.hasValue("transient")) {
00654: final String v$g$9 = "transient";
00655:
00656: yyValue = GNode.create("Modifier", v$g$9);
00657: yyValue.setLocation(location(yyStart));
00658:
00659: return yyResult.createValue(yyValue, yyError);
00660: }
00661:
00662: // Alternative <Volatile>.
00663:
00664: yyResult = pWord(yyStart);
00665: yyError = yyResult.select(yyError);
00666: if (yyResult.hasValue("volatile")) {
00667: final String v$g$10 = "volatile";
00668:
00669: yyValue = GNode.create("Modifier", v$g$10);
00670: yyValue.setLocation(location(yyStart));
00671:
00672: return yyResult.createValue(yyValue, yyError);
00673: }
00674:
00675: // Alternative <Strictfp>.
00676:
00677: yyResult = pWord(yyStart);
00678: yyError = yyResult.select(yyError);
00679: if (yyResult.hasValue("strictfp")) {
00680: final String v$g$11 = "strictfp";
00681:
00682: yyValue = GNode.create("Modifier", v$g$11);
00683: yyValue.setLocation(location(yyStart));
00684:
00685: return yyResult.createValue(yyValue, yyError);
00686: }
00687:
00688: // Done.
00689: yyError = yyError.select("modifier expected", yyStart);
00690: return yyError;
00691: }
00692:
00693: // =========================================================================
00694:
00695: /**
00696: * Parse nonterminal xtc.lang.JavaFive.FormalParameter.
00697: *
00698: * @param yyStart The index.
00699: * @return The result.
00700: * @throws IOException Signals an I/O error.
00701: */
00702: private Result pFormalParameter(final int yyStart)
00703: throws IOException {
00704: Result yyResult;
00705: int yyBase;
00706: int yyOption1;
00707: Object yyOpValue1;
00708: Node yyValue;
00709: ParseError yyError = ParseError.DUMMY;
00710:
00711: // Alternative <Parameter>.
00712:
00713: yyResult = pVariableModifiers(yyStart);
00714: yyError = yyResult.select(yyError);
00715: if (yyResult.hasValue()) {
00716: final Node v$g$1 = yyResult.semanticValue();
00717:
00718: yyResult = pType(yyResult.index);
00719: yyError = yyResult.select(yyError);
00720: if (yyResult.hasValue()) {
00721: final Node v$g$2 = yyResult.semanticValue();
00722:
00723: yyOption1 = yyResult.index;
00724: yyOpValue1 = null;
00725:
00726: yyBase = yyOption1;
00727: yyResult = pSymbol(yyBase);
00728: yyError = yyResult.select(yyError);
00729: if (yyResult.hasValue("...")) {
00730: final String v$el$1 = "...";
00731:
00732: yyOption1 = yyResult.index;
00733: yyOpValue1 = v$el$1;
00734: } else {
00735: yyError = yyError
00736: .select("\"...\" expected", yyBase);
00737: }
00738: { // Start scope for v$g$3.
00739: final String v$g$3 = cast(yyOpValue1);
00740:
00741: yyResult = pIdentifier(yyOption1);
00742: yyError = yyResult.select(yyError);
00743: if (yyResult.hasValue()) {
00744: final String v$g$4 = yyResult.semanticValue();
00745:
00746: yyOption1 = yyResult.index;
00747: yyOpValue1 = null;
00748:
00749: yyResult = pDimensions(yyOption1);
00750: yyError = yyResult.select(yyError);
00751: if (yyResult.hasValue()) {
00752: final Node v$el$2 = yyResult
00753: .semanticValue();
00754:
00755: yyOption1 = yyResult.index;
00756: yyOpValue1 = v$el$2;
00757: }
00758: { // Start scope for v$g$5.
00759: final Node v$g$5 = cast(yyOpValue1);
00760:
00761: yyValue = GNode.create("FormalParameter",
00762: v$g$1, v$g$2, v$g$3, v$g$4, v$g$5);
00763: yyValue.setLocation(location(yyStart));
00764:
00765: return new SemanticValue(yyValue,
00766: yyOption1, yyError);
00767: } // End scope for v$g$5.
00768: }
00769: } // End scope for v$g$3.
00770: }
00771: }
00772:
00773: // Done.
00774: return yyError;
00775: }
00776:
00777: // =========================================================================
00778:
00779: /**
00780: * Parse nonterminal xtc.lang.JavaFive.VariableModifiers.
00781: *
00782: * @param yyStart The index.
00783: * @return The result.
00784: * @throws IOException Signals an I/O error.
00785: */
00786: private Result pVariableModifiers(final int yyStart)
00787: throws IOException {
00788: Result yyResult;
00789: int yyRepetition1;
00790: Pair<Node> yyRepValue1;
00791: Node yyValue;
00792: ParseError yyError = ParseError.DUMMY;
00793:
00794: // Alternative <Modifiers>.
00795:
00796: yyRepetition1 = yyStart;
00797: yyRepValue1 = Pair.empty();
00798: while (true) {
00799:
00800: yyResult = pVariableModifier(yyRepetition1);
00801: yyError = yyResult.select(yyError);
00802: if (yyResult.hasValue()) {
00803: final Node v$el$1 = yyResult.semanticValue();
00804:
00805: yyRepetition1 = yyResult.index;
00806: yyRepValue1 = new Pair<Node>(v$el$1, yyRepValue1);
00807: continue;
00808: }
00809: break;
00810: }
00811: { // Start scope for v$g$1.
00812: final Pair<Node> v$g$1 = yyRepValue1.reverse();
00813:
00814: yyValue = GNode.createFromPair("Modifiers", v$g$1);
00815: yyValue.setLocation(location(yyStart));
00816:
00817: return new SemanticValue(yyValue, yyRepetition1, yyError);
00818: } // End scope for v$g$1.
00819: }
00820:
00821: // =========================================================================
00822:
00823: /**
00824: * Parse nonterminal xtc.lang.JavaFive.FinalModifier.
00825: *
00826: * @param yyStart The index.
00827: * @return The result.
00828: * @throws IOException Signals an I/O error.
00829: */
00830: private Result pFinalModifier(final int yyStart) throws IOException {
00831: Result yyResult;
00832: Node yyValue;
00833: ParseError yyError = ParseError.DUMMY;
00834:
00835: // Alternative 1.
00836:
00837: yyResult = pWord(yyStart);
00838: yyError = yyResult.select(yyError);
00839: if (yyResult.hasValue("final")) {
00840: final String v$g$1 = "final";
00841:
00842: yyValue = GNode.create("Modifier", v$g$1);
00843: yyValue.setLocation(location(yyStart));
00844:
00845: return yyResult.createValue(yyValue, yyError);
00846: }
00847:
00848: // Done.
00849: yyError = yyError.select("final modifier expected", yyStart);
00850: return yyError;
00851: }
00852:
00853: // =========================================================================
00854:
00855: /**
00856: * Parse nonterminal xtc.lang.JavaFive.FormalParameters.
00857: *
00858: * @param yyStart The index.
00859: * @return The result.
00860: * @throws IOException Signals an I/O error.
00861: */
00862: private Result pFormalParameters(final int yyStart)
00863: throws IOException {
00864: JavaFiveParserColumn yyColumn = (JavaFiveParserColumn) column(yyStart);
00865: if (null == yyColumn.chunk1)
00866: yyColumn.chunk1 = new Chunk1();
00867: if (null == yyColumn.chunk1.fFormalParameters)
00868: yyColumn.chunk1.fFormalParameters = pFormalParameters$1(yyStart);
00869: return yyColumn.chunk1.fFormalParameters;
00870: }
00871:
00872: /** Actually parse xtc.lang.JavaFive.FormalParameters. */
00873: private Result pFormalParameters$1(final int yyStart)
00874: throws IOException {
00875: Result yyResult;
00876: int yyBase;
00877: Node yyValue;
00878: ParseError yyError = ParseError.DUMMY;
00879:
00880: // Alternative 1.
00881:
00882: yyResult = pSymbol(yyStart);
00883: yyError = yyResult.select(yyError);
00884: if (yyResult.hasValue("(")) {
00885:
00886: final int yyChoice1 = yyResult.index;
00887:
00888: // Nested alternative 1.
00889:
00890: yyResult = pFormalParameter(yyChoice1);
00891: yyError = yyResult.select(yyError);
00892: if (yyResult.hasValue()) {
00893: final Node v$g$1 = yyResult.semanticValue();
00894:
00895: yyResult = pFormalParameters$$Star1(yyResult.index);
00896: yyError = yyResult.select(yyError);
00897: if (yyResult.hasValue()) {
00898: final Pair<Node> v$g$2 = yyResult.semanticValue();
00899:
00900: yyBase = yyResult.index;
00901: yyResult = pSymbol(yyBase);
00902: yyError = yyResult.select(yyError);
00903: if (yyResult.hasValue(")")) {
00904:
00905: yyValue = GNode.createFromPair(
00906: "FormalParameters", v$g$1, v$g$2);
00907: yyValue.setLocation(location(yyStart));
00908:
00909: return yyResult.createValue(yyValue, yyError);
00910: } else {
00911: yyError = yyError.select("\")\" expected",
00912: yyBase);
00913: }
00914: }
00915: }
00916:
00917: // Nested alternative 2.
00918:
00919: yyBase = yyChoice1;
00920: yyResult = pSymbol(yyBase);
00921: yyError = yyResult.select(yyError);
00922: if (yyResult.hasValue(")")) {
00923:
00924: yyValue = GNode.create("FormalParameters", false);
00925: yyValue.setLocation(location(yyStart));
00926:
00927: return yyResult.createValue(yyValue, yyError);
00928: } else {
00929: yyError = yyError.select("\")\" expected", yyBase);
00930: }
00931: }
00932:
00933: // Done.
00934: yyError = yyError.select("formal parameters expected", yyStart);
00935: return yyError;
00936: }
00937:
00938: // =========================================================================
00939:
00940: /**
00941: * Parse synthetic nonterminal xtc.lang.JavaFive.FormalParameters$$Star1.
00942: *
00943: * @param yyStart The index.
00944: * @return The result.
00945: * @throws IOException Signals an I/O error.
00946: */
00947: private Result pFormalParameters$$Star1(final int yyStart)
00948: throws IOException {
00949:
00950: JavaFiveParserColumn yyColumn = (JavaFiveParserColumn) column(yyStart);
00951: if (null == yyColumn.chunk1)
00952: yyColumn.chunk1 = new Chunk1();
00953: if (null == yyColumn.chunk1.fFormalParameters$$Star1)
00954: yyColumn.chunk1.fFormalParameters$$Star1 = pFormalParameters$$Star1$1(yyStart);
00955: return yyColumn.chunk1.fFormalParameters$$Star1;
00956: }
00957:
00958: /** Actually parse xtc.lang.JavaFive.FormalParameters$$Star1. */
00959: private Result pFormalParameters$$Star1$1(final int yyStart)
00960: throws IOException {
00961:
00962: Result yyResult;
00963: Pair<Node> yyValue;
00964: ParseError yyError = ParseError.DUMMY;
00965:
00966: // Alternative 1.
00967:
00968: yyResult = pSymbol(yyStart);
00969: yyError = yyResult.select(yyError);
00970: if (yyResult.hasValue(",")) {
00971:
00972: yyResult = pFormalParameter(yyResult.index);
00973: yyError = yyResult.select(yyError);
00974: if (yyResult.hasValue()) {
00975: final Node v$el$1 = yyResult.semanticValue();
00976:
00977: yyResult = pFormalParameters$$Star1(yyResult.index);
00978: yyError = yyResult.select(yyError);
00979: if (yyResult.hasValue()) {
00980: final Pair<Node> v$2 = yyResult.semanticValue();
00981:
00982: yyValue = new Pair<Node>(v$el$1, v$2);
00983:
00984: return yyResult.createValue(yyValue, yyError);
00985: }
00986: }
00987: }
00988:
00989: // Alternative 2.
00990:
00991: yyValue = Pair.empty();
00992:
00993: return new SemanticValue(yyValue, yyStart, yyError);
00994: }
00995:
00996: // =========================================================================
00997:
00998: /**
00999: * Parse nonterminal xtc.lang.JavaFive.Declarator.
01000: *
01001: * @param yyStart The index.
01002: * @return The result.
01003: * @throws IOException Signals an I/O error.
01004: */
01005: private Result pDeclarator(final int yyStart) throws IOException {
01006: Result yyResult;
01007: int yyBase;
01008: int yyOption1;
01009: Node yyOpValue1;
01010: Node yyValue;
01011: ParseError yyError = ParseError.DUMMY;
01012:
01013: // Alternative <Declarator>.
01014:
01015: yyResult = pIdentifier(yyStart);
01016: yyError = yyResult.select(yyError);
01017: if (yyResult.hasValue()) {
01018: final String v$g$1 = yyResult.semanticValue();
01019:
01020: yyOption1 = yyResult.index;
01021: yyOpValue1 = null;
01022:
01023: yyResult = pDimensions(yyOption1);
01024: yyError = yyResult.select(yyError);
01025: if (yyResult.hasValue()) {
01026: final Node v$el$1 = yyResult.semanticValue();
01027:
01028: yyOption1 = yyResult.index;
01029: yyOpValue1 = v$el$1;
01030: }
01031: { // Start scope for v$g$2.
01032: final Node v$g$2 = yyOpValue1;
01033:
01034: yyOpValue1 = null;
01035:
01036: yyBase = yyOption1;
01037: yyResult = pSymbol(yyBase);
01038: yyError = yyResult.select(yyError);
01039: if (yyResult.hasValue("=")) {
01040:
01041: yyResult = pVariableInitializer(yyResult.index);
01042: yyError = yyResult.select(yyError);
01043: if (yyResult.hasValue()) {
01044: final Node v$el$2 = yyResult.semanticValue();
01045:
01046: yyOption1 = yyResult.index;
01047: yyOpValue1 = v$el$2;
01048: }
01049: } else {
01050: yyError = yyError.select("\"=\" expected", yyBase);
01051: }
01052: { // Start scope for v$g$3.
01053: final Node v$g$3 = yyOpValue1;
01054:
01055: yyValue = GNode.create("Declarator", v$g$1, v$g$2,
01056: v$g$3);
01057: yyValue.setLocation(location(yyStart));
01058:
01059: return new SemanticValue(yyValue, yyOption1,
01060: yyError);
01061: } // End scope for v$g$3.
01062: } // End scope for v$g$2.
01063: }
01064:
01065: // Done.
01066: return yyError;
01067: }
01068:
01069: // =========================================================================
01070:
01071: /**
01072: * Parse nonterminal xtc.lang.JavaFive.Declarators.
01073: *
01074: * @param yyStart The index.
01075: * @return The result.
01076: * @throws IOException Signals an I/O error.
01077: */
01078: private Result pDeclarators(final int yyStart) throws IOException {
01079: JavaFiveParserColumn yyColumn = (JavaFiveParserColumn) column(yyStart);
01080: if (null == yyColumn.chunk1)
01081: yyColumn.chunk1 = new Chunk1();
01082: if (null == yyColumn.chunk1.fDeclarators)
01083: yyColumn.chunk1.fDeclarators = pDeclarators$1(yyStart);
01084: return yyColumn.chunk1.fDeclarators;
01085: }
01086:
01087: /** Actually parse xtc.lang.JavaFive.Declarators. */
01088: private Result pDeclarators$1(final int yyStart) throws IOException {
01089: Result yyResult;
01090: Node yyValue;
01091: ParseError yyError = ParseError.DUMMY;
01092:
01093: // Alternative 1.
01094:
01095: yyResult = pDeclarator(yyStart);
01096: yyError = yyResult.select(yyError);
01097: if (yyResult.hasValue()) {
01098: final Node v$g$1 = yyResult.semanticValue();
01099:
01100: yyResult = pDeclarators$$Star1(yyResult.index);
01101: yyError = yyResult.select(yyError);
01102: if (yyResult.hasValue()) {
01103: final Pair<Node> v$g$2 = yyResult.semanticValue();
01104:
01105: yyValue = GNode.createFromPair("Declarators", v$g$1,
01106: v$g$2);
01107: yyValue.setLocation(location(yyStart));
01108:
01109: return yyResult.createValue(yyValue, yyError);
01110: }
01111: }
01112:
01113: // Done.
01114: return yyError;
01115: }
01116:
01117: // =========================================================================
01118:
01119: /**
01120: * Parse synthetic nonterminal xtc.lang.JavaFive.Declarators$$Star1.
01121: *
01122: * @param yyStart The index.
01123: * @return The result.
01124: * @throws IOException Signals an I/O error.
01125: */
01126: private Result pDeclarators$$Star1(final int yyStart)
01127: throws IOException {
01128: JavaFiveParserColumn yyColumn = (JavaFiveParserColumn) column(yyStart);
01129: if (null == yyColumn.chunk1)
01130: yyColumn.chunk1 = new Chunk1();
01131: if (null == yyColumn.chunk1.fDeclarators$$Star1)
01132: yyColumn.chunk1.fDeclarators$$Star1 = pDeclarators$$Star1$1(yyStart);
01133: return yyColumn.chunk1.fDeclarators$$Star1;
01134: }
01135:
01136: /** Actually parse xtc.lang.JavaFive.Declarators$$Star1. */
01137: private Result pDeclarators$$Star1$1(final int yyStart)
01138: throws IOException {
01139: Result yyResult;
01140: Pair<Node> yyValue;
01141: ParseError yyError = ParseError.DUMMY;
01142:
01143: // Alternative 1.
01144:
01145: yyResult = pSymbol(yyStart);
01146: yyError = yyResult.select(yyError);
01147: if (yyResult.hasValue(",")) {
01148:
01149: yyResult = pDeclarator(yyResult.index);
01150: yyError = yyResult.select(yyError);
01151: if (yyResult.hasValue()) {
01152: final Node v$el$1 = yyResult.semanticValue();
01153:
01154: yyResult = pDeclarators$$Star1(yyResult.index);
01155: yyError = yyResult.select(yyError);
01156: if (yyResult.hasValue()) {
01157: final Pair<Node> v$2 = yyResult.semanticValue();
01158:
01159: yyValue = new Pair<Node>(v$el$1, v$2);
01160:
01161: return yyResult.createValue(yyValue, yyError);
01162: }
01163: }
01164: }
01165:
01166: // Alternative 2.
01167:
01168: yyValue = Pair.empty();
01169:
01170: return new SemanticValue(yyValue, yyStart, yyError);
01171: }
01172:
01173: // =========================================================================
01174:
01175: /**
01176: * Parse nonterminal xtc.lang.JavaFive.ClassBody.
01177: *
01178: * @param yyStart The index.
01179: * @return The result.
01180: * @throws IOException Signals an I/O error.
01181: */
01182: private Result pClassBody(final int yyStart) throws IOException {
01183: Result yyResult;
01184: int yyBase;
01185: int yyRepetition1;
01186: Pair<Node> yyRepValue1;
01187: Node yyValue;
01188: ParseError yyError = ParseError.DUMMY;
01189:
01190: // Alternative <Body>.
01191:
01192: yyResult = pSymbol(yyStart);
01193: yyError = yyResult.select(yyError);
01194: if (yyResult.hasValue("{")) {
01195:
01196: yyRepetition1 = yyResult.index;
01197: yyRepValue1 = Pair.empty();
01198: while (true) {
01199:
01200: yyResult = pDeclaration(yyRepetition1);
01201: yyError = yyResult.select(yyError);
01202: if (yyResult.hasValue()) {
01203: final Node v$el$1 = yyResult.semanticValue();
01204:
01205: yyRepetition1 = yyResult.index;
01206: yyRepValue1 = new Pair<Node>(v$el$1, yyRepValue1);
01207: continue;
01208: }
01209: break;
01210: }
01211: { // Start scope for v$g$1.
01212: final Pair<Node> v$g$1 = yyRepValue1.reverse();
01213:
01214: yyBase = yyRepetition1;
01215: yyResult = pSymbol(yyBase);
01216: yyError = yyResult.select(yyError);
01217: if (yyResult.hasValue("}")) {
01218:
01219: yyValue = GNode.createFromPair("ClassBody", v$g$1);
01220: yyValue.setLocation(location(yyStart));
01221:
01222: return yyResult.createValue(yyValue, yyError);
01223: } else {
01224: yyError = yyError.select("\"}\" expected", yyBase);
01225: }
01226: } // End scope for v$g$1.
01227: }
01228:
01229: // Done.
01230: yyError = yyError.select("class body expected", yyStart);
01231: return yyError;
01232: }
01233:
01234: // =========================================================================
01235:
01236: /**
01237: * Parse nonterminal xtc.lang.JavaFive.Declaration.
01238: *
01239: * @param yyStart The index.
01240: * @return The result.
01241: * @throws IOException Signals an I/O error.
01242: */
01243: private Result pDeclaration(final int yyStart) throws IOException {
01244: Result yyResult;
01245: int yyBase;
01246: int yyOption1;
01247: Object yyOpValue1;
01248: Node yyValue;
01249: ParseError yyError = ParseError.DUMMY;
01250:
01251: // Alternative 1.
01252:
01253: yyResult = pModifiers(yyStart);
01254: yyError = yyResult.select(yyError);
01255: if (yyResult.hasValue()) {
01256: final Node v$g$1 = yyResult.semanticValue();
01257:
01258: final int yyChoice1 = yyResult.index;
01259:
01260: // Nested alternative 1.
01261:
01262: yyResult = pType(yyChoice1);
01263: yyError = yyResult.select(yyError);
01264: if (yyResult.hasValue()) {
01265: final Node v$g$2 = yyResult.semanticValue();
01266:
01267: yyResult = pDeclarators(yyResult.index);
01268: yyError = yyResult.select(yyError);
01269: if (yyResult.hasValue()) {
01270: final Node v$g$3 = yyResult.semanticValue();
01271:
01272: yyBase = yyResult.index;
01273: yyResult = pSymbol(yyBase);
01274: yyError = yyResult.select(yyError);
01275: if (yyResult.hasValue(";")) {
01276:
01277: yyValue = GNode.create("FieldDeclaration",
01278: v$g$1, v$g$2, v$g$3);
01279: yyValue.setLocation(location(yyStart));
01280:
01281: return yyResult.createValue(yyValue, yyError);
01282: } else {
01283: yyError = yyError.select("\";\" expected",
01284: yyBase);
01285: }
01286: }
01287: }
01288:
01289: // Nested alternative 2.
01290:
01291: yyOption1 = yyChoice1;
01292: yyOpValue1 = null;
01293:
01294: yyResult = pTypeParameters(yyOption1);
01295: yyError = yyResult.select(yyError);
01296: if (yyResult.hasValue()) {
01297: final Node v$el$1 = yyResult.semanticValue();
01298:
01299: yyOption1 = yyResult.index;
01300: yyOpValue1 = v$el$1;
01301: }
01302: { // Start scope for v$g$2.
01303: final Node v$g$2 = cast(yyOpValue1);
01304:
01305: final int yyChoice2 = yyOption1;
01306:
01307: // Nested alternative 1.
01308:
01309: yyResult = pResultType(yyChoice2);
01310: yyError = yyResult.select(yyError);
01311: if (yyResult.hasValue()) {
01312: final Node v$g$3 = yyResult.semanticValue();
01313:
01314: yyResult = pIdentifier(yyResult.index);
01315: yyError = yyResult.select(yyError);
01316: if (yyResult.hasValue()) {
01317: final String v$g$4 = yyResult.semanticValue();
01318:
01319: yyResult = pFormalParameters(yyResult.index);
01320: yyError = yyResult.select(yyError);
01321: if (yyResult.hasValue()) {
01322: final Node v$g$5 = yyResult.semanticValue();
01323:
01324: yyOption1 = yyResult.index;
01325: yyOpValue1 = null;
01326:
01327: yyResult = pDimensions(yyOption1);
01328: yyError = yyResult.select(yyError);
01329: if (yyResult.hasValue()) {
01330: final Node v$el$2 = yyResult
01331: .semanticValue();
01332:
01333: yyOption1 = yyResult.index;
01334: yyOpValue1 = v$el$2;
01335: }
01336: { // Start scope for v$g$6.
01337: final Node v$g$6 = cast(yyOpValue1);
01338:
01339: yyOpValue1 = null;
01340:
01341: yyResult = pThrowsClause(yyOption1);
01342: yyError = yyResult.select(yyError);
01343: if (yyResult.hasValue()) {
01344: final Node v$el$3 = yyResult
01345: .semanticValue();
01346:
01347: yyOption1 = yyResult.index;
01348: yyOpValue1 = v$el$3;
01349: }
01350: { // Start scope for v$g$7.
01351: final Node v$g$7 = cast(yyOpValue1);
01352:
01353: final int yyChoice3 = yyOption1;
01354:
01355: // Nested alternative 1.
01356:
01357: yyResult = pBlock(yyChoice3);
01358: yyError = yyResult.select(yyError);
01359: if (yyResult.hasValue()) {
01360: final Node v$g$8 = yyResult
01361: .semanticValue();
01362:
01363: yyValue = GNode.create(
01364: "MethodDeclaration",
01365: v$g$1, v$g$2, v$g$3,
01366: v$g$4, v$g$5, v$g$6,
01367: v$g$7, v$g$8);
01368: yyValue
01369: .setLocation(location(yyStart));
01370:
01371: return yyResult.createValue(
01372: yyValue, yyError);
01373: }
01374:
01375: // Nested alternative 2.
01376:
01377: yyBase = yyChoice3;
01378: yyResult = pSymbol(yyBase);
01379: yyError = yyResult.select(yyError);
01380: if (yyResult.hasValue(";")) {
01381:
01382: yyValue = GNode.create(
01383: "MethodDeclaration",
01384: v$g$1, v$g$2, v$g$3,
01385: v$g$4, v$g$5, v$g$6,
01386: v$g$7, null);
01387: yyValue
01388: .setLocation(location(yyStart));
01389:
01390: return yyResult.createValue(
01391: yyValue, yyError);
01392: } else {
01393: yyError = yyError.select(
01394: "\";\" expected",
01395: yyBase);
01396: }
01397: } // End scope for v$g$7.
01398: } // End scope for v$g$6.
01399: }
01400: }
01401: }
01402:
01403: // Nested alternative 2.
01404:
01405: yyResult = pIdentifier(yyChoice2);
01406: yyError = yyResult.select(yyError);
01407: if (yyResult.hasValue()) {
01408: final String v$g$3 = yyResult.semanticValue();
01409:
01410: yyResult = pFormalParameters(yyResult.index);
01411: yyError = yyResult.select(yyError);
01412: if (yyResult.hasValue()) {
01413: final Node v$g$4 = yyResult.semanticValue();
01414:
01415: yyOption1 = yyResult.index;
01416: yyOpValue1 = null;
01417:
01418: yyResult = pThrowsClause(yyOption1);
01419: yyError = yyResult.select(yyError);
01420: if (yyResult.hasValue()) {
01421: final Node v$el$2 = yyResult
01422: .semanticValue();
01423:
01424: yyOption1 = yyResult.index;
01425: yyOpValue1 = v$el$2;
01426: }
01427: { // Start scope for v$g$5.
01428: final Node v$g$5 = cast(yyOpValue1);
01429:
01430: yyResult = pBlock(yyOption1);
01431: yyError = yyResult.select(yyError);
01432: if (yyResult.hasValue()) {
01433: final Node v$g$6 = yyResult
01434: .semanticValue();
01435:
01436: yyValue = GNode.create(
01437: "ConstructorDeclaration",
01438: v$g$1, v$g$2, v$g$3, v$g$4,
01439: v$g$5, v$g$6);
01440: yyValue.setLocation(location(yyStart));
01441:
01442: return yyResult.createValue(yyValue,
01443: yyError);
01444: }
01445: } // End scope for v$g$5.
01446: }
01447: }
01448: } // End scope for v$g$2.
01449:
01450: // Nested alternative 3.
01451:
01452: yyBase = yyChoice1;
01453: yyResult = pWord(yyBase);
01454: yyError = yyResult.select(yyError);
01455: if (yyResult.hasValue("class")) {
01456:
01457: yyResult = pIdentifier(yyResult.index);
01458: yyError = yyResult.select(yyError);
01459: if (yyResult.hasValue()) {
01460: final String v$g$2 = yyResult.semanticValue();
01461:
01462: yyOption1 = yyResult.index;
01463: yyOpValue1 = null;
01464:
01465: yyResult = pTypeParameters(yyOption1);
01466: yyError = yyResult.select(yyError);
01467: if (yyResult.hasValue()) {
01468: final Node v$el$1 = yyResult.semanticValue();
01469:
01470: yyOption1 = yyResult.index;
01471: yyOpValue1 = v$el$1;
01472: }
01473: { // Start scope for v$g$3.
01474: final Node v$g$3 = cast(yyOpValue1);
01475:
01476: yyOpValue1 = null;
01477:
01478: yyResult = pExtension(yyOption1);
01479: yyError = yyResult.select(yyError);
01480: if (yyResult.hasValue()) {
01481: final Node v$el$2 = yyResult
01482: .semanticValue();
01483:
01484: yyOption1 = yyResult.index;
01485: yyOpValue1 = v$el$2;
01486: }
01487: { // Start scope for v$g$4.
01488: final Node v$g$4 = cast(yyOpValue1);
01489:
01490: yyOpValue1 = null;
01491:
01492: yyResult = pImplementation(yyOption1);
01493: yyError = yyResult.select(yyError);
01494: if (yyResult.hasValue()) {
01495: final Node v$el$3 = yyResult
01496: .semanticValue();
01497:
01498: yyOption1 = yyResult.index;
01499: yyOpValue1 = v$el$3;
01500: }
01501: { // Start scope for v$g$5.
01502: final Node v$g$5 = cast(yyOpValue1);
01503:
01504: yyResult = pClassBody(yyOption1);
01505: yyError = yyResult.select(yyError);
01506: if (yyResult.hasValue()) {
01507: final Node v$g$6 = yyResult
01508: .semanticValue();
01509:
01510: yyValue = GNode.create(
01511: "ClassDeclaration", v$g$1,
01512: v$g$2, v$g$3, v$g$4, v$g$5,
01513: v$g$6);
01514: yyValue
01515: .setLocation(location(yyStart));
01516:
01517: return yyResult.createValue(
01518: yyValue, yyError);
01519: }
01520: } // End scope for v$g$5.
01521: } // End scope for v$g$4.
01522: } // End scope for v$g$3.
01523: }
01524: } else {
01525: yyError = yyError.select("\"class\" expected", yyBase);
01526: }
01527:
01528: // Nested alternative 4.
01529:
01530: yyBase = yyChoice1;
01531: yyResult = pWord(yyBase);
01532: yyError = yyResult.select(yyError);
01533: if (yyResult.hasValue("interface")) {
01534:
01535: yyResult = pIdentifier(yyResult.index);
01536: yyError = yyResult.select(yyError);
01537: if (yyResult.hasValue()) {
01538: final String v$g$2 = yyResult.semanticValue();
01539:
01540: yyOption1 = yyResult.index;
01541: yyOpValue1 = null;
01542:
01543: yyResult = pTypeParameters(yyOption1);
01544: yyError = yyResult.select(yyError);
01545: if (yyResult.hasValue()) {
01546: final Node v$el$1 = yyResult.semanticValue();
01547:
01548: yyOption1 = yyResult.index;
01549: yyOpValue1 = v$el$1;
01550: }
01551: { // Start scope for v$g$3.
01552: final Node v$g$3 = cast(yyOpValue1);
01553:
01554: yyOpValue1 = null;
01555:
01556: yyResult = pExtension(yyOption1);
01557: yyError = yyResult.select(yyError);
01558: if (yyResult.hasValue()) {
01559: final Node v$el$2 = yyResult
01560: .semanticValue();
01561:
01562: yyOption1 = yyResult.index;
01563: yyOpValue1 = v$el$2;
01564: }
01565: { // Start scope for v$g$4.
01566: final Node v$g$4 = cast(yyOpValue1);
01567:
01568: yyResult = pClassBody(yyOption1);
01569: yyError = yyResult.select(yyError);
01570: if (yyResult.hasValue()) {
01571: final Node v$g$5 = yyResult
01572: .semanticValue();
01573:
01574: yyValue = GNode.create(
01575: "InterfaceDeclaration", v$g$1,
01576: v$g$2, v$g$3, v$g$4, v$g$5);
01577: yyValue.setLocation(location(yyStart));
01578:
01579: return yyResult.createValue(yyValue,
01580: yyError);
01581: }
01582: } // End scope for v$g$4.
01583: } // End scope for v$g$3.
01584: }
01585: } else {
01586: yyError = yyError.select("\"interface\" expected",
01587: yyBase);
01588: }
01589:
01590: // Nested alternative 5.
01591:
01592: yyBase = yyChoice1;
01593: yyResult = pSymbol(yyBase);
01594: yyError = yyResult.select(yyError);
01595: if (yyResult.hasValue("@")) {
01596:
01597: yyBase = yyResult.index;
01598: yyResult = pWord(yyBase);
01599: yyError = yyResult.select(yyError);
01600: if (yyResult.hasValue("interface")) {
01601:
01602: yyResult = pIdentifier(yyResult.index);
01603: yyError = yyResult.select(yyError);
01604: if (yyResult.hasValue()) {
01605: final String v$g$2 = yyResult.semanticValue();
01606:
01607: yyResult = pAnnotationBody(yyResult.index);
01608: yyError = yyResult.select(yyError);
01609: if (yyResult.hasValue()) {
01610: final Node v$g$3 = yyResult.semanticValue();
01611:
01612: yyValue = GNode.create(
01613: "AnnotationDeclaration", v$g$1,
01614: v$g$2, v$g$3);
01615: yyValue.setLocation(location(yyStart));
01616:
01617: return yyResult.createValue(yyValue,
01618: yyError);
01619: }
01620: }
01621: } else {
01622: yyError = yyError.select("\"interface\" expected",
01623: yyBase);
01624: }
01625: } else {
01626: yyError = yyError.select("\"@\" expected", yyBase);
01627: }
01628:
01629: // Nested alternative 6.
01630:
01631: yyBase = yyChoice1;
01632: yyResult = pWord(yyBase);
01633: yyError = yyResult.select(yyError);
01634: if (yyResult.hasValue("enum")) {
01635:
01636: yyResult = pIdentifier(yyResult.index);
01637: yyError = yyResult.select(yyError);
01638: if (yyResult.hasValue()) {
01639: final String v$g$2 = yyResult.semanticValue();
01640:
01641: yyOption1 = yyResult.index;
01642: yyOpValue1 = null;
01643:
01644: yyResult = pImplementation(yyOption1);
01645: yyError = yyResult.select(yyError);
01646: if (yyResult.hasValue()) {
01647: final Node v$el$1 = yyResult.semanticValue();
01648:
01649: yyOption1 = yyResult.index;
01650: yyOpValue1 = v$el$1;
01651: }
01652: { // Start scope for v$g$3.
01653: final Node v$g$3 = cast(yyOpValue1);
01654:
01655: yyBase = yyOption1;
01656: yyResult = pSymbol(yyBase);
01657: yyError = yyResult.select(yyError);
01658: if (yyResult.hasValue("{")) {
01659:
01660: yyOption1 = yyResult.index;
01661: yyOpValue1 = null;
01662:
01663: yyResult = pEnumConstants(yyOption1);
01664: yyError = yyResult.select(yyError);
01665: if (yyResult.hasValue()) {
01666: final Node v$el$2 = yyResult
01667: .semanticValue();
01668:
01669: yyOption1 = yyResult.index;
01670: yyOpValue1 = v$el$2;
01671: }
01672: { // Start scope for v$g$4.
01673: final Node v$g$4 = cast(yyOpValue1);
01674:
01675: yyBase = yyOption1;
01676: yyResult = pSymbol(yyBase);
01677: yyError = yyResult.select(yyError);
01678: if (yyResult.hasValue(",")) {
01679:
01680: yyOption1 = yyResult.index;
01681: } else {
01682: yyError = yyError.select(
01683: "\",\" expected", yyBase);
01684: }
01685:
01686: yyOpValue1 = null;
01687:
01688: yyResult = pEnumMembers(yyOption1);
01689: yyError = yyResult.select(yyError);
01690: if (yyResult.hasValue()) {
01691: final Node v$el$3 = yyResult
01692: .semanticValue();
01693:
01694: yyOption1 = yyResult.index;
01695: yyOpValue1 = v$el$3;
01696: }
01697: { // Start scope for v$g$5.
01698: final Node v$g$5 = cast(yyOpValue1);
01699:
01700: yyBase = yyOption1;
01701: yyResult = pSymbol(yyBase);
01702: yyError = yyResult.select(yyError);
01703: if (yyResult.hasValue("}")) {
01704:
01705: yyValue = GNode.create(
01706: "EnumDeclaration",
01707: v$g$1, v$g$2, v$g$3,
01708: v$g$4, v$g$5);
01709: yyValue
01710: .setLocation(location(yyStart));
01711:
01712: return yyResult.createValue(
01713: yyValue, yyError);
01714: } else {
01715: yyError = yyError.select(
01716: "\"}\" expected",
01717: yyBase);
01718: }
01719: } // End scope for v$g$5.
01720: } // End scope for v$g$4.
01721: } else {
01722: yyError = yyError.select("\"{\" expected",
01723: yyBase);
01724: }
01725: } // End scope for v$g$3.
01726: }
01727: } else {
01728: yyError = yyError.select("\"enum\" expected", yyBase);
01729: }
01730: }
01731:
01732: // Alternative 2.
01733:
01734: yyOption1 = yyStart;
01735: yyOpValue1 = null;
01736:
01737: yyBase = yyOption1;
01738: yyResult = pWord(yyBase);
01739: yyError = yyResult.select(yyError);
01740: if (yyResult.hasValue("static")) {
01741: final String v$el$1 = "static";
01742:
01743: yyOption1 = yyResult.index;
01744: yyOpValue1 = v$el$1;
01745: } else {
01746: yyError = yyError.select("\"static\" expected", yyBase);
01747: }
01748: { // Start scope for v$g$1.
01749: final String v$g$1 = cast(yyOpValue1);
01750:
01751: yyResult = pBlock(yyOption1);
01752: yyError = yyResult.select(yyError);
01753: if (yyResult.hasValue()) {
01754: final Node v$g$2 = yyResult.semanticValue();
01755:
01756: yyValue = GNode
01757: .create("BlockDeclaration", v$g$1, v$g$2);
01758: yyValue.setLocation(location(yyStart));
01759:
01760: return yyResult.createValue(yyValue, yyError);
01761: }
01762: } // End scope for v$g$1.
01763:
01764: // Alternative 3.
01765:
01766: yyResult = pSymbol(yyStart);
01767: yyError = yyResult.select(yyError);
01768: if (yyResult.hasValue(";")) {
01769:
01770: yyValue = GNode.create("EmptyDeclaration", false);
01771: yyValue.setLocation(location(yyStart));
01772:
01773: return yyResult.createValue(yyValue, yyError);
01774: }
01775:
01776: // Done.
01777: yyError = yyError.select("declaration expected", yyStart);
01778: return yyError;
01779: }
01780:
01781: // =========================================================================
01782:
01783: /**
01784: * Parse nonterminal xtc.lang.JavaFive.ThrowsClause.
01785: *
01786: * @param yyStart The index.
01787: * @return The result.
01788: * @throws IOException Signals an I/O error.
01789: */
01790: private Result pThrowsClause(final int yyStart) throws IOException {
01791: Result yyResult;
01792: int yyBase;
01793: int yyRepetition1;
01794: Pair<Node> yyRepValue1;
01795: Node yyValue;
01796: ParseError yyError = ParseError.DUMMY;
01797:
01798: // Alternative 1.
01799:
01800: yyResult = pWord(yyStart);
01801: yyError = yyResult.select(yyError);
01802: if (yyResult.hasValue("throws")) {
01803:
01804: yyResult = pQualifiedIdentifier(yyResult.index);
01805: yyError = yyResult.select(yyError);
01806: if (yyResult.hasValue()) {
01807: final Node v$g$1 = yyResult.semanticValue();
01808:
01809: yyRepetition1 = yyResult.index;
01810: yyRepValue1 = Pair.empty();
01811: while (true) {
01812:
01813: yyBase = yyRepetition1;
01814: yyResult = pSymbol(yyBase);
01815: yyError = yyResult.select(yyError);
01816: if (yyResult.hasValue(",")) {
01817:
01818: yyResult = pQualifiedIdentifier(yyResult.index);
01819: yyError = yyResult.select(yyError);
01820: if (yyResult.hasValue()) {
01821: final Node v$el$1 = yyResult
01822: .semanticValue();
01823:
01824: yyRepetition1 = yyResult.index;
01825: yyRepValue1 = new Pair<Node>(v$el$1,
01826: yyRepValue1);
01827: continue;
01828: }
01829: } else {
01830: yyError = yyError.select("\",\" expected",
01831: yyBase);
01832: }
01833: break;
01834: }
01835: { // Start scope for v$g$2.
01836: final Pair<Node> v$g$2 = yyRepValue1.reverse();
01837:
01838: yyValue = GNode.createFromPair("ThrowsClause",
01839: v$g$1, v$g$2);
01840: yyValue.setLocation(location(yyStart));
01841:
01842: return new SemanticValue(yyValue, yyRepetition1,
01843: yyError);
01844: } // End scope for v$g$2.
01845: }
01846: }
01847:
01848: // Done.
01849: yyError = yyError.select("throws clause expected", yyStart);
01850: return yyError;
01851: }
01852:
01853: // =========================================================================
01854:
01855: /**
01856: * Parse nonterminal xtc.lang.JavaFive.Extension.
01857: *
01858: * @param yyStart The index.
01859: * @return The result.
01860: * @throws IOException Signals an I/O error.
01861: */
01862: private Result pExtension(final int yyStart) throws IOException {
01863: Result yyResult;
01864: int yyBase;
01865: int yyRepetition1;
01866: Pair<Node> yyRepValue1;
01867: Node yyValue;
01868: ParseError yyError = ParseError.DUMMY;
01869:
01870: // Alternative 1.
01871:
01872: yyResult = pWord(yyStart);
01873: yyError = yyResult.select(yyError);
01874: if (yyResult.hasValue("extends")) {
01875:
01876: yyResult = pType(yyResult.index);
01877: yyError = yyResult.select(yyError);
01878: if (yyResult.hasValue()) {
01879: final Node v$g$1 = yyResult.semanticValue();
01880:
01881: yyRepetition1 = yyResult.index;
01882: yyRepValue1 = Pair.empty();
01883: while (true) {
01884:
01885: yyBase = yyRepetition1;
01886: yyResult = pSymbol(yyBase);
01887: yyError = yyResult.select(yyError);
01888: if (yyResult.hasValue(",")) {
01889:
01890: yyResult = pType(yyResult.index);
01891: yyError = yyResult.select(yyError);
01892: if (yyResult.hasValue()) {
01893: final Node v$el$1 = yyResult
01894: .semanticValue();
01895:
01896: yyRepetition1 = yyResult.index;
01897: yyRepValue1 = new Pair<Node>(v$el$1,
01898: yyRepValue1);
01899: continue;
01900: }
01901: } else {
01902: yyError = yyError.select("\",\" expected",
01903: yyBase);
01904: }
01905: break;
01906: }
01907: { // Start scope for v$g$2.
01908: final Pair<Node> v$g$2 = yyRepValue1.reverse();
01909:
01910: yyValue = GNode.createFromPair("Extension", v$g$1,
01911: v$g$2);
01912: yyValue.setLocation(location(yyStart));
01913:
01914: return new SemanticValue(yyValue, yyRepetition1,
01915: yyError);
01916: } // End scope for v$g$2.
01917: }
01918: }
01919:
01920: // Done.
01921: yyError = yyError.select("extension expected", yyStart);
01922: return yyError;
01923: }
01924:
01925: // =========================================================================
01926:
01927: /**
01928: * Parse nonterminal xtc.lang.JavaFive.Implementation.
01929: *
01930: * @param yyStart The index.
01931: * @return The result.
01932: * @throws IOException Signals an I/O error.
01933: */
01934: private Result pImplementation(final int yyStart)
01935: throws IOException {
01936: JavaFiveParserColumn yyColumn = (JavaFiveParserColumn) column(yyStart);
01937: if (null == yyColumn.chunk1)
01938: yyColumn.chunk1 = new Chunk1();
01939: if (null == yyColumn.chunk1.fImplementation)
01940: yyColumn.chunk1.fImplementation = pImplementation$1(yyStart);
01941: return yyColumn.chunk1.fImplementation;
01942: }
01943:
01944: /** Actually parse xtc.lang.JavaFive.Implementation. */
01945: private Result pImplementation$1(final int yyStart)
01946: throws IOException {
01947: Result yyResult;
01948: Node yyValue;
01949: ParseError yyError = ParseError.DUMMY;
01950:
01951: // Alternative 1.
01952:
01953: yyResult = pWord(yyStart);
01954: yyError = yyResult.select(yyError);
01955: if (yyResult.hasValue("implements")) {
01956:
01957: yyResult = pType(yyResult.index);
01958: yyError = yyResult.select(yyError);
01959: if (yyResult.hasValue()) {
01960: final Node v$g$1 = yyResult.semanticValue();
01961:
01962: yyResult = pImplementation$$Star1(yyResult.index);
01963: yyError = yyResult.select(yyError);
01964: if (yyResult.hasValue()) {
01965: final Pair<Node> v$g$2 = yyResult.semanticValue();
01966:
01967: yyValue = GNode.createFromPair("Implementation",
01968: v$g$1, v$g$2);
01969: yyValue.setLocation(location(yyStart));
01970:
01971: return yyResult.createValue(yyValue, yyError);
01972: }
01973: }
01974: }
01975:
01976: // Done.
01977: yyError = yyError.select("implementation expected", yyStart);
01978: return yyError;
01979: }
01980:
01981: // =========================================================================
01982:
01983: /**
01984: * Parse synthetic nonterminal xtc.lang.JavaFive.Implementation$$Star1.
01985: *
01986: * @param yyStart The index.
01987: * @return The result.
01988: * @throws IOException Signals an I/O error.
01989: */
01990: private Result pImplementation$$Star1(final int yyStart)
01991: throws IOException {
01992:
01993: JavaFiveParserColumn yyColumn = (JavaFiveParserColumn) column(yyStart);
01994: if (null == yyColumn.chunk1)
01995: yyColumn.chunk1 = new Chunk1();
01996: if (null == yyColumn.chunk1.fImplementation$$Star1)
01997: yyColumn.chunk1.fImplementation$$Star1 = pImplementation$$Star1$1(yyStart);
01998: return yyColumn.chunk1.fImplementation$$Star1;
01999: }
02000:
02001: /** Actually parse xtc.lang.JavaFive.Implementation$$Star1. */
02002: private Result pImplementation$$Star1$1(final int yyStart)
02003: throws IOException {
02004:
02005: Result yyResult;
02006: Pair<Node> yyValue;
02007: ParseError yyError = ParseError.DUMMY;
02008:
02009: // Alternative 1.
02010:
02011: yyResult = pSymbol(yyStart);
02012: yyError = yyResult.select(yyError);
02013: if (yyResult.hasValue(",")) {
02014:
02015: yyResult = pType(yyResult.index);
02016: yyError = yyResult.select(yyError);
02017: if (yyResult.hasValue()) {
02018: final Node v$el$1 = yyResult.semanticValue();
02019:
02020: yyResult = pImplementation$$Star1(yyResult.index);
02021: yyError = yyResult.select(yyError);
02022: if (yyResult.hasValue()) {
02023: final Pair<Node> v$2 = yyResult.semanticValue();
02024:
02025: yyValue = new Pair<Node>(v$el$1, v$2);
02026:
02027: return yyResult.createValue(yyValue, yyError);
02028: }
02029: }
02030: }
02031:
02032: // Alternative 2.
02033:
02034: yyValue = Pair.empty();
02035:
02036: return new SemanticValue(yyValue, yyStart, yyError);
02037: }
02038:
02039: // =========================================================================
02040:
02041: /**
02042: * Parse nonterminal xtc.lang.JavaFive.Block.
02043: *
02044: * @param yyStart The index.
02045: * @return The result.
02046: * @throws IOException Signals an I/O error.
02047: */
02048: private Result pBlock(final int yyStart) throws IOException {
02049: JavaFiveParserColumn yyColumn = (JavaFiveParserColumn) column(yyStart);
02050: if (null == yyColumn.chunk1)
02051: yyColumn.chunk1 = new Chunk1();
02052: if (null == yyColumn.chunk1.fBlock)
02053: yyColumn.chunk1.fBlock = pBlock$1(yyStart);
02054: return yyColumn.chunk1.fBlock;
02055: }
02056:
02057: /** Actually parse xtc.lang.JavaFive.Block. */
02058: private Result pBlock$1(final int yyStart) throws IOException {
02059: Result yyResult;
02060: int yyBase;
02061: Node yyValue;
02062: ParseError yyError = ParseError.DUMMY;
02063:
02064: // Alternative <Block>.
02065:
02066: yyResult = pSymbol(yyStart);
02067: yyError = yyResult.select(yyError);
02068: if (yyResult.hasValue("{")) {
02069:
02070: yyResult = pBlock$$Star1(yyResult.index);
02071: yyError = yyResult.select(yyError);
02072: if (yyResult.hasValue()) {
02073: final Pair<Node> v$g$1 = yyResult.semanticValue();
02074:
02075: yyBase = yyResult.index;
02076: yyResult = pSymbol(yyBase);
02077: yyError = yyResult.select(yyError);
02078: if (yyResult.hasValue("}")) {
02079:
02080: yyValue = GNode.createFromPair("Block", v$g$1);
02081: yyValue.setLocation(location(yyStart));
02082:
02083: return yyResult.createValue(yyValue, yyError);
02084: } else {
02085: yyError = yyError.select("\"}\" expected", yyBase);
02086: }
02087: }
02088: }
02089:
02090: // Done.
02091: yyError = yyError.select("block expected", yyStart);
02092: return yyError;
02093: }
02094:
02095: // =========================================================================
02096:
02097: /**
02098: * Parse synthetic nonterminal xtc.lang.JavaFive.Block$$Star1.
02099: *
02100: * @param yyStart The index.
02101: * @return The result.
02102: * @throws IOException Signals an I/O error.
02103: */
02104: private Result pBlock$$Star1(final int yyStart) throws IOException {
02105: JavaFiveParserColumn yyColumn = (JavaFiveParserColumn) column(yyStart);
02106: if (null == yyColumn.chunk1)
02107: yyColumn.chunk1 = new Chunk1();
02108: if (null == yyColumn.chunk1.fBlock$$Star1)
02109: yyColumn.chunk1.fBlock$$Star1 = pBlock$$Star1$1(yyStart);
02110: return yyColumn.chunk1.fBlock$$Star1;
02111: }
02112:
02113: /** Actually parse xtc.lang.JavaFive.Block$$Star1. */
02114: private Result pBlock$$Star1$1(final int yyStart)
02115: throws IOException {
02116: Result yyResult;
02117: Pair<Node> yyValue;
02118: ParseError yyError = ParseError.DUMMY;
02119:
02120: // Alternative 1.
02121:
02122: yyResult = pDeclarationOrStatement(yyStart);
02123: yyError = yyResult.select(yyError);
02124: if (yyResult.hasValue()) {
02125: final Node v$el$1 = yyResult.semanticValue();
02126:
02127: yyResult = pBlock$$Star1(yyResult.index);
02128: yyError = yyResult.select(yyError);
02129: if (yyResult.hasValue()) {
02130: final Pair<Node> v$2 = yyResult.semanticValue();
02131:
02132: yyValue = new Pair<Node>(v$el$1, v$2);
02133:
02134: return yyResult.createValue(yyValue, yyError);
02135: }
02136: }
02137:
02138: // Alternative 2.
02139:
02140: yyValue = Pair.empty();
02141:
02142: return new SemanticValue(yyValue, yyStart, yyError);
02143: }
02144:
02145: // =========================================================================
02146:
02147: /**
02148: * Parse nonterminal xtc.lang.JavaFive.DeclarationOrStatement.
02149: *
02150: * @param yyStart The index.
02151: * @return The result.
02152: * @throws IOException Signals an I/O error.
02153: */
02154: private Result pDeclarationOrStatement(final int yyStart)
02155: throws IOException {
02156:
02157: Result yyResult;
02158: Node yyValue;
02159: ParseError yyError = ParseError.DUMMY;
02160:
02161: // Alternative <Declaration>.
02162:
02163: yyResult = pInBlockDeclaration(yyStart);
02164: yyError = yyResult.select(yyError);
02165: if (yyResult.hasValue()) {
02166: yyValue = yyResult.semanticValue();
02167:
02168: return yyResult.createValue(yyValue, yyError);
02169: }
02170:
02171: // Alternative <Statement>.
02172:
02173: yyResult = pStatement(yyStart);
02174: yyError = yyResult.select(yyError);
02175: if (yyResult.hasValue()) {
02176: yyValue = yyResult.semanticValue();
02177:
02178: return yyResult.createValue(yyValue, yyError);
02179: }
02180:
02181: // Done.
02182: return yyError;
02183: }
02184:
02185: // =========================================================================
02186:
02187: /**
02188: * Parse nonterminal xtc.lang.JavaFive.InBlockDeclaration.
02189: *
02190: * @param yyStart The index.
02191: * @return The result.
02192: * @throws IOException Signals an I/O error.
02193: */
02194: private Result pInBlockDeclaration(final int yyStart)
02195: throws IOException {
02196: Result yyResult;
02197: int yyBase;
02198: int yyOption1;
02199: Node yyOpValue1;
02200: Node yyValue;
02201: ParseError yyError = ParseError.DUMMY;
02202:
02203: // Alternative <Variable>.
02204:
02205: yyResult = pVariableDeclaration(yyStart);
02206: yyError = yyResult.select(yyError);
02207: if (yyResult.hasValue()) {
02208: yyValue = yyResult.semanticValue();
02209:
02210: return yyResult.createValue(yyValue, yyError);
02211: }
02212:
02213: // Alternative 2.
02214:
02215: yyResult = pModifiers(yyStart);
02216: yyError = yyResult.select(yyError);
02217: if (yyResult.hasValue()) {
02218: final Node v$g$1 = yyResult.semanticValue();
02219:
02220: final int yyChoice1 = yyResult.index;
02221:
02222: // Nested alternative 1.
02223:
02224: yyBase = yyChoice1;
02225: yyResult = pWord(yyBase);
02226: yyError = yyResult.select(yyError);
02227: if (yyResult.hasValue("class")) {
02228:
02229: yyResult = pIdentifier(yyResult.index);
02230: yyError = yyResult.select(yyError);
02231: if (yyResult.hasValue()) {
02232: final String v$g$2 = yyResult.semanticValue();
02233:
02234: yyOption1 = yyResult.index;
02235: yyOpValue1 = null;
02236:
02237: yyResult = pTypeParameters(yyOption1);
02238: yyError = yyResult.select(yyError);
02239: if (yyResult.hasValue()) {
02240: final Node v$el$1 = yyResult.semanticValue();
02241:
02242: yyOption1 = yyResult.index;
02243: yyOpValue1 = v$el$1;
02244: }
02245: { // Start scope for v$g$3.
02246: final Node v$g$3 = yyOpValue1;
02247:
02248: yyOpValue1 = null;
02249:
02250: yyResult = pExtension(yyOption1);
02251: yyError = yyResult.select(yyError);
02252: if (yyResult.hasValue()) {
02253: final Node v$el$2 = yyResult
02254: .semanticValue();
02255:
02256: yyOption1 = yyResult.index;
02257: yyOpValue1 = v$el$2;
02258: }
02259: { // Start scope for v$g$4.
02260: final Node v$g$4 = yyOpValue1;
02261:
02262: yyOpValue1 = null;
02263:
02264: yyResult = pImplementation(yyOption1);
02265: yyError = yyResult.select(yyError);
02266: if (yyResult.hasValue()) {
02267: final Node v$el$3 = yyResult
02268: .semanticValue();
02269:
02270: yyOption1 = yyResult.index;
02271: yyOpValue1 = v$el$3;
02272: }
02273: { // Start scope for v$g$5.
02274: final Node v$g$5 = yyOpValue1;
02275:
02276: yyResult = pClassBody(yyOption1);
02277: yyError = yyResult.select(yyError);
02278: if (yyResult.hasValue()) {
02279: final Node v$g$6 = yyResult
02280: .semanticValue();
02281:
02282: yyValue = GNode.create(
02283: "ClassDeclaration", v$g$1,
02284: v$g$2, v$g$3, v$g$4, v$g$5,
02285: v$g$6);
02286: yyValue
02287: .setLocation(location(yyStart));
02288:
02289: return yyResult.createValue(
02290: yyValue, yyError);
02291: }
02292: } // End scope for v$g$5.
02293: } // End scope for v$g$4.
02294: } // End scope for v$g$3.
02295: }
02296: } else {
02297: yyError = yyError.select("\"class\" expected", yyBase);
02298: }
02299:
02300: // Nested alternative 2.
02301:
02302: yyBase = yyChoice1;
02303: yyResult = pWord(yyBase);
02304: yyError = yyResult.select(yyError);
02305: if (yyResult.hasValue("interface")) {
02306:
02307: yyResult = pIdentifier(yyResult.index);
02308: yyError = yyResult.select(yyError);
02309: if (yyResult.hasValue()) {
02310: final String v$g$2 = yyResult.semanticValue();
02311:
02312: yyOption1 = yyResult.index;
02313: yyOpValue1 = null;
02314:
02315: yyResult = pTypeParameters(yyOption1);
02316: yyError = yyResult.select(yyError);
02317: if (yyResult.hasValue()) {
02318: final Node v$el$1 = yyResult.semanticValue();
02319:
02320: yyOption1 = yyResult.index;
02321: yyOpValue1 = v$el$1;
02322: }
02323: { // Start scope for v$g$3.
02324: final Node v$g$3 = yyOpValue1;
02325:
02326: yyOpValue1 = null;
02327:
02328: yyResult = pExtension(yyOption1);
02329: yyError = yyResult.select(yyError);
02330: if (yyResult.hasValue()) {
02331: final Node v$el$2 = yyResult
02332: .semanticValue();
02333:
02334: yyOption1 = yyResult.index;
02335: yyOpValue1 = v$el$2;
02336: }
02337: { // Start scope for v$g$4.
02338: final Node v$g$4 = yyOpValue1;
02339:
02340: yyResult = pClassBody(yyOption1);
02341: yyError = yyResult.select(yyError);
02342: if (yyResult.hasValue()) {
02343: final Node v$g$5 = yyResult
02344: .semanticValue();
02345:
02346: yyValue = GNode.create(
02347: "InterfaceDeclaration", v$g$1,
02348: v$g$2, v$g$3, v$g$4, v$g$5);
02349: yyValue.setLocation(location(yyStart));
02350:
02351: return yyResult.createValue(yyValue,
02352: yyError);
02353: }
02354: } // End scope for v$g$4.
02355: } // End scope for v$g$3.
02356: }
02357: } else {
02358: yyError = yyError.select("\"interface\" expected",
02359: yyBase);
02360: }
02361: }
02362:
02363: // Done.
02364: return yyError;
02365: }
02366:
02367: // =========================================================================
02368:
02369: /**
02370: * Parse nonterminal xtc.lang.JavaFive.VariableDeclaration.
02371: *
02372: * @param yyStart The index.
02373: * @return The result.
02374: * @throws IOException Signals an I/O error.
02375: */
02376: private Result pVariableDeclaration(final int yyStart)
02377: throws IOException {
02378: Result yyResult;
02379: int yyBase;
02380: Node yyValue;
02381: ParseError yyError = ParseError.DUMMY;
02382:
02383: // Alternative <Declaration>.
02384:
02385: yyResult = pVariableModifiers(yyStart);
02386: yyError = yyResult.select(yyError);
02387: if (yyResult.hasValue()) {
02388: final Node v$g$1 = yyResult.semanticValue();
02389:
02390: yyResult = pType(yyResult.index);
02391: yyError = yyResult.select(yyError);
02392: if (yyResult.hasValue()) {
02393: final Node v$g$2 = yyResult.semanticValue();
02394:
02395: yyResult = pDeclarators(yyResult.index);
02396: yyError = yyResult.select(yyError);
02397: if (yyResult.hasValue()) {
02398: final Node v$g$3 = yyResult.semanticValue();
02399:
02400: yyBase = yyResult.index;
02401: yyResult = pSymbol(yyBase);
02402: yyError = yyResult.select(yyError);
02403: if (yyResult.hasValue(";")) {
02404:
02405: yyValue = GNode.create("FieldDeclaration",
02406: v$g$1, v$g$2, v$g$3);
02407: yyValue.setLocation(location(yyStart));
02408:
02409: return yyResult.createValue(yyValue, yyError);
02410: } else {
02411: yyError = yyError.select("\";\" expected",
02412: yyBase);
02413: }
02414: }
02415: }
02416: }
02417:
02418: // Done.
02419: return yyError;
02420: }
02421:
02422: // =========================================================================
02423:
02424: /**
02425: * Parse nonterminal xtc.lang.JavaFive.Statement.
02426: *
02427: * @param yyStart The index.
02428: * @return The result.
02429: * @throws IOException Signals an I/O error.
02430: */
02431: private Result pStatement(final int yyStart) throws IOException {
02432: Result yyResult;
02433: int yyBase;
02434: int yyRepetition1;
02435: boolean yyRepeated1;
02436: Pair<Node> yyRepValue1;
02437: int yyOption1;
02438: Object yyOpValue1;
02439: Node yyValue;
02440: ParseError yyError = ParseError.DUMMY;
02441:
02442: // Alternative <Block>.
02443:
02444: yyResult = pBlock(yyStart);
02445: yyError = yyResult.select(yyError);
02446: if (yyResult.hasValue()) {
02447: yyValue = yyResult.semanticValue();
02448:
02449: return yyResult.createValue(yyValue, yyError);
02450: }
02451:
02452: // Alternative 2.
02453:
02454: yyResult = pWord(yyStart);
02455: yyError = yyResult.select(yyError);
02456: if (yyResult.hasValue("if")) {
02457:
02458: yyResult = pParExpression(yyResult.index);
02459: yyError = yyResult.select(yyError);
02460: if (yyResult.hasValue()) {
02461: final Node v$g$1 = yyResult.semanticValue();
02462:
02463: yyResult = pStatement(yyResult.index);
02464: yyError = yyResult.select(yyError);
02465: if (yyResult.hasValue()) {
02466: final Node v$g$2 = yyResult.semanticValue();
02467:
02468: final int yyChoice1 = yyResult.index;
02469:
02470: // Nested alternative 1.
02471:
02472: yyBase = yyChoice1;
02473: yyResult = pWord(yyBase);
02474: yyError = yyResult.select(yyError);
02475: if (yyResult.hasValue("else")) {
02476:
02477: yyResult = pStatement(yyResult.index);
02478: yyError = yyResult.select(yyError);
02479: if (yyResult.hasValue()) {
02480: final Node v$g$3 = yyResult.semanticValue();
02481:
02482: yyValue = GNode.create(
02483: "ConditionalStatement", v$g$1,
02484: v$g$2, v$g$3);
02485: yyValue.setLocation(location(yyStart));
02486:
02487: return yyResult.createValue(yyValue,
02488: yyError);
02489: }
02490: } else {
02491: yyError = yyError.select("\"else\" expected",
02492: yyBase);
02493: }
02494:
02495: // Nested alternative 2.
02496:
02497: yyValue = GNode.create("ConditionalStatement",
02498: v$g$1, v$g$2, null);
02499: yyValue.setLocation(location(yyStart));
02500:
02501: return new SemanticValue(yyValue, yyChoice1,
02502: yyError);
02503: }
02504: }
02505: }
02506:
02507: // Alternative 3.
02508:
02509: yyResult = pWord(yyStart);
02510: yyError = yyResult.select(yyError);
02511: if (yyResult.hasValue("for")) {
02512:
02513: yyBase = yyResult.index;
02514: yyResult = pSymbol(yyBase);
02515: yyError = yyResult.select(yyError);
02516: if (yyResult.hasValue("(")) {
02517:
02518: yyResult = pForControl(yyResult.index);
02519: yyError = yyResult.select(yyError);
02520: if (yyResult.hasValue()) {
02521: final Node v$g$1 = yyResult.semanticValue();
02522:
02523: yyBase = yyResult.index;
02524: yyResult = pSymbol(yyBase);
02525: yyError = yyResult.select(yyError);
02526: if (yyResult.hasValue(")")) {
02527:
02528: yyResult = pStatement(yyResult.index);
02529: yyError = yyResult.select(yyError);
02530: if (yyResult.hasValue()) {
02531: final Node v$g$2 = yyResult.semanticValue();
02532:
02533: yyValue = GNode.create("ForStatement",
02534: v$g$1, v$g$2);
02535: yyValue.setLocation(location(yyStart));
02536:
02537: return yyResult.createValue(yyValue,
02538: yyError);
02539: }
02540: } else {
02541: yyError = yyError.select("\")\" expected",
02542: yyBase);
02543: }
02544: }
02545: } else {
02546: yyError = yyError.select("\"(\" expected", yyBase);
02547: }
02548: }
02549:
02550: // Alternative 4.
02551:
02552: yyResult = pWord(yyStart);
02553: yyError = yyResult.select(yyError);
02554: if (yyResult.hasValue("while")) {
02555:
02556: yyResult = pParExpression(yyResult.index);
02557: yyError = yyResult.select(yyError);
02558: if (yyResult.hasValue()) {
02559: final Node v$g$1 = yyResult.semanticValue();
02560:
02561: yyResult = pStatement(yyResult.index);
02562: yyError = yyResult.select(yyError);
02563: if (yyResult.hasValue()) {
02564: final Node v$g$2 = yyResult.semanticValue();
02565:
02566: yyValue = GNode.create("WhileStatement", v$g$1,
02567: v$g$2);
02568: yyValue.setLocation(location(yyStart));
02569:
02570: return yyResult.createValue(yyValue, yyError);
02571: }
02572: }
02573: }
02574:
02575: // Alternative 5.
02576:
02577: yyResult = pWord(yyStart);
02578: yyError = yyResult.select(yyError);
02579: if (yyResult.hasValue("do")) {
02580:
02581: yyResult = pStatement(yyResult.index);
02582: yyError = yyResult.select(yyError);
02583: if (yyResult.hasValue()) {
02584: final Node v$g$1 = yyResult.semanticValue();
02585:
02586: yyBase = yyResult.index;
02587: yyResult = pWord(yyBase);
02588: yyError = yyResult.select(yyError);
02589: if (yyResult.hasValue("while")) {
02590:
02591: yyResult = pParExpression(yyResult.index);
02592: yyError = yyResult.select(yyError);
02593: if (yyResult.hasValue()) {
02594: final Node v$g$2 = yyResult.semanticValue();
02595:
02596: yyBase = yyResult.index;
02597: yyResult = pSymbol(yyBase);
02598: yyError = yyResult.select(yyError);
02599: if (yyResult.hasValue(";")) {
02600:
02601: yyValue = GNode.create("DoWhileStatement",
02602: v$g$1, v$g$2);
02603: yyValue.setLocation(location(yyStart));
02604:
02605: return yyResult.createValue(yyValue,
02606: yyError);
02607: } else {
02608: yyError = yyError.select("\";\" expected",
02609: yyBase);
02610: }
02611: }
02612: } else {
02613: yyError = yyError.select("\"while\" expected",
02614: yyBase);
02615: }
02616: }
02617: }
02618:
02619: // Alternative 6.
02620:
02621: yyResult = pWord(yyStart);
02622: yyError = yyResult.select(yyError);
02623: if (yyResult.hasValue("try")) {
02624:
02625: yyResult = pBlock(yyResult.index);
02626: yyError = yyResult.select(yyError);
02627: if (yyResult.hasValue()) {
02628: final Node v$g$1 = yyResult.semanticValue();
02629:
02630: final int yyChoice1 = yyResult.index;
02631:
02632: // Nested alternative 1.
02633:
02634: yyRepetition1 = yyChoice1;
02635: yyRepValue1 = Pair.empty();
02636: while (true) {
02637:
02638: yyResult = pCatchClause(yyRepetition1);
02639: yyError = yyResult.select(yyError);
02640: if (yyResult.hasValue()) {
02641: final Node v$el$1 = yyResult.semanticValue();
02642:
02643: yyRepetition1 = yyResult.index;
02644: yyRepValue1 = new Pair<Node>(v$el$1,
02645: yyRepValue1);
02646: continue;
02647: }
02648: break;
02649: }
02650: { // Start scope for v$g$2.
02651: final Pair<Node> v$g$2 = yyRepValue1.reverse();
02652:
02653: yyBase = yyRepetition1;
02654: yyResult = pWord(yyBase);
02655: yyError = yyResult.select(yyError);
02656: if (yyResult.hasValue("finally")) {
02657:
02658: yyResult = pBlock(yyResult.index);
02659: yyError = yyResult.select(yyError);
02660: if (yyResult.hasValue()) {
02661: final Node v$g$3 = yyResult.semanticValue();
02662:
02663: yyValue = GNode.create(
02664: "TryCatchFinallyStatement",
02665: v$g$2.size() + 2).add(v$g$1)
02666: .addAll(v$g$2).add(v$g$3);
02667: yyValue.setLocation(location(yyStart));
02668:
02669: return yyResult.createValue(yyValue,
02670: yyError);
02671: }
02672: } else {
02673: yyError = yyError.select(
02674: "\"finally\" expected", yyBase);
02675: }
02676: } // End scope for v$g$2.
02677:
02678: // Nested alternative 2.
02679:
02680: yyRepetition1 = yyChoice1;
02681: yyRepeated1 = false;
02682: yyRepValue1 = Pair.empty();
02683: while (true) {
02684:
02685: yyResult = pCatchClause(yyRepetition1);
02686: yyError = yyResult.select(yyError);
02687: if (yyResult.hasValue()) {
02688: final Node v$el$2 = yyResult.semanticValue();
02689:
02690: yyRepetition1 = yyResult.index;
02691: yyRepeated1 = true;
02692: yyRepValue1 = new Pair<Node>(v$el$2,
02693: yyRepValue1);
02694: continue;
02695: }
02696: break;
02697: }
02698:
02699: if (yyRepeated1) {
02700: final Pair<Node> v$g$4 = yyRepValue1.reverse();
02701:
02702: yyValue = GNode.create("TryCatchFinallyStatement",
02703: v$g$4.size() + 2).add(v$g$1).addAll(v$g$4)
02704: .add(null);
02705: yyValue.setLocation(location(yyStart));
02706:
02707: return new SemanticValue(yyValue, yyRepetition1,
02708: yyError);
02709: }
02710: }
02711: }
02712:
02713: // Alternative 7.
02714:
02715: yyResult = pWord(yyStart);
02716: yyError = yyResult.select(yyError);
02717: if (yyResult.hasValue("switch")) {
02718:
02719: yyResult = pParExpression(yyResult.index);
02720: yyError = yyResult.select(yyError);
02721: if (yyResult.hasValue()) {
02722: final Node v$g$1 = yyResult.semanticValue();
02723:
02724: yyBase = yyResult.index;
02725: yyResult = pSymbol(yyBase);
02726: yyError = yyResult.select(yyError);
02727: if (yyResult.hasValue("{")) {
02728:
02729: yyRepetition1 = yyResult.index;
02730: yyRepValue1 = Pair.empty();
02731: while (true) {
02732:
02733: yyResult = pSwitchClause(yyRepetition1);
02734: yyError = yyResult.select(yyError);
02735: if (yyResult.hasValue()) {
02736: final Node v$el$1 = yyResult
02737: .semanticValue();
02738:
02739: yyRepetition1 = yyResult.index;
02740: yyRepValue1 = new Pair<Node>(v$el$1,
02741: yyRepValue1);
02742: continue;
02743: }
02744: break;
02745: }
02746: { // Start scope for v$g$2.
02747: final Pair<Node> v$g$2 = yyRepValue1.reverse();
02748:
02749: yyBase = yyRepetition1;
02750: yyResult = pSymbol(yyBase);
02751: yyError = yyResult.select(yyError);
02752: if (yyResult.hasValue("}")) {
02753:
02754: yyValue = GNode.createFromPair(
02755: "SwitchStatement", v$g$1, v$g$2);
02756: yyValue.setLocation(location(yyStart));
02757:
02758: return yyResult.createValue(yyValue,
02759: yyError);
02760: } else {
02761: yyError = yyError.select("\"}\" expected",
02762: yyBase);
02763: }
02764: } // End scope for v$g$2.
02765: } else {
02766: yyError = yyError.select("\"{\" expected", yyBase);
02767: }
02768: }
02769: }
02770:
02771: // Alternative 8.
02772:
02773: yyResult = pWord(yyStart);
02774: yyError = yyResult.select(yyError);
02775: if (yyResult.hasValue("synchronized")) {
02776:
02777: yyResult = pParExpression(yyResult.index);
02778: yyError = yyResult.select(yyError);
02779: if (yyResult.hasValue()) {
02780: final Node v$g$1 = yyResult.semanticValue();
02781:
02782: yyResult = pBlock(yyResult.index);
02783: yyError = yyResult.select(yyError);
02784: if (yyResult.hasValue()) {
02785: final Node v$g$2 = yyResult.semanticValue();
02786:
02787: yyValue = GNode.create("SynchronizedStatement",
02788: v$g$1, v$g$2);
02789: yyValue.setLocation(location(yyStart));
02790:
02791: return yyResult.createValue(yyValue, yyError);
02792: }
02793: }
02794: }
02795:
02796: // Alternative 9.
02797:
02798: yyResult = pWord(yyStart);
02799: yyError = yyResult.select(yyError);
02800: if (yyResult.hasValue("return")) {
02801:
02802: yyOption1 = yyResult.index;
02803: yyOpValue1 = null;
02804:
02805: yyResult = pExpression(yyOption1);
02806: yyError = yyResult.select(yyError);
02807: if (yyResult.hasValue()) {
02808: final Node v$el$1 = yyResult.semanticValue();
02809:
02810: yyOption1 = yyResult.index;
02811: yyOpValue1 = v$el$1;
02812: }
02813: { // Start scope for v$g$1.
02814: final Node v$g$1 = cast(yyOpValue1);
02815:
02816: yyBase = yyOption1;
02817: yyResult = pSymbol(yyBase);
02818: yyError = yyResult.select(yyError);
02819: if (yyResult.hasValue(";")) {
02820:
02821: yyValue = GNode.create("ReturnStatement", v$g$1);
02822: yyValue.setLocation(location(yyStart));
02823:
02824: return yyResult.createValue(yyValue, yyError);
02825: } else {
02826: yyError = yyError.select("\";\" expected", yyBase);
02827: }
02828: } // End scope for v$g$1.
02829: }
02830:
02831: // Alternative 10.
02832:
02833: yyResult = pWord(yyStart);
02834: yyError = yyResult.select(yyError);
02835: if (yyResult.hasValue("throw")) {
02836:
02837: yyResult = pExpression(yyResult.index);
02838: yyError = yyResult.select(yyError);
02839: if (yyResult.hasValue()) {
02840: final Node v$g$1 = yyResult.semanticValue();
02841:
02842: yyBase = yyResult.index;
02843: yyResult = pSymbol(yyBase);
02844: yyError = yyResult.select(yyError);
02845: if (yyResult.hasValue(";")) {
02846:
02847: yyValue = GNode.create("ThrowStatement", v$g$1);
02848: yyValue.setLocation(location(yyStart));
02849:
02850: return yyResult.createValue(yyValue, yyError);
02851: } else {
02852: yyError = yyError.select("\";\" expected", yyBase);
02853: }
02854: }
02855: }
02856:
02857: // Alternative 11.
02858:
02859: yyResult = pWord(yyStart);
02860: yyError = yyResult.select(yyError);
02861: if (yyResult.hasValue("break")) {
02862:
02863: yyOption1 = yyResult.index;
02864: yyOpValue1 = null;
02865:
02866: yyResult = pIdentifier(yyOption1);
02867: yyError = yyResult.select(yyError);
02868: if (yyResult.hasValue()) {
02869: final String v$el$1 = yyResult.semanticValue();
02870:
02871: yyOption1 = yyResult.index;
02872: yyOpValue1 = v$el$1;
02873: }
02874: { // Start scope for v$g$1.
02875: final String v$g$1 = cast(yyOpValue1);
02876:
02877: yyBase = yyOption1;
02878: yyResult = pSymbol(yyBase);
02879: yyError = yyResult.select(yyError);
02880: if (yyResult.hasValue(";")) {
02881:
02882: yyValue = GNode.create("BreakStatement", v$g$1);
02883: yyValue.setLocation(location(yyStart));
02884:
02885: return yyResult.createValue(yyValue, yyError);
02886: } else {
02887: yyError = yyError.select("\";\" expected", yyBase);
02888: }
02889: } // End scope for v$g$1.
02890: }
02891:
02892: // Alternative 12.
02893:
02894: yyResult = pWord(yyStart);
02895: yyError = yyResult.select(yyError);
02896: if (yyResult.hasValue("continue")) {
02897:
02898: yyOption1 = yyResult.index;
02899: yyOpValue1 = null;
02900:
02901: yyResult = pIdentifier(yyOption1);
02902: yyError = yyResult.select(yyError);
02903: if (yyResult.hasValue()) {
02904: final String v$el$1 = yyResult.semanticValue();
02905:
02906: yyOption1 = yyResult.index;
02907: yyOpValue1 = v$el$1;
02908: }
02909: { // Start scope for v$g$1.
02910: final String v$g$1 = cast(yyOpValue1);
02911:
02912: yyBase = yyOption1;
02913: yyResult = pSymbol(yyBase);
02914: yyError = yyResult.select(yyError);
02915: if (yyResult.hasValue(";")) {
02916:
02917: yyValue = GNode.create("ContinueStatement", v$g$1);
02918: yyValue.setLocation(location(yyStart));
02919:
02920: return yyResult.createValue(yyValue, yyError);
02921: } else {
02922: yyError = yyError.select("\";\" expected", yyBase);
02923: }
02924: } // End scope for v$g$1.
02925: }
02926:
02927: // Alternative 13.
02928:
02929: yyResult = pIdentifier(yyStart);
02930: yyError = yyResult.select(yyError);
02931: if (yyResult.hasValue()) {
02932: final String v$g$1 = yyResult.semanticValue();
02933:
02934: yyBase = yyResult.index;
02935: yyResult = pSymbol(yyBase);
02936: yyError = yyResult.select(yyError);
02937: if (yyResult.hasValue(":")) {
02938:
02939: yyResult = pStatement(yyResult.index);
02940: yyError = yyResult.select(yyError);
02941: if (yyResult.hasValue()) {
02942: final Node v$g$2 = yyResult.semanticValue();
02943:
02944: yyValue = GNode.create("LabeledStatement", v$g$1,
02945: v$g$2);
02946: yyValue.setLocation(location(yyStart));
02947:
02948: return yyResult.createValue(yyValue, yyError);
02949: }
02950: } else {
02951: yyError = yyError.select("\":\" expected", yyBase);
02952: }
02953: }
02954:
02955: // Alternative 14.
02956:
02957: yyResult = pExpression(yyStart);
02958: yyError = yyResult.select(yyError);
02959: if (yyResult.hasValue()) {
02960: final Node v$g$1 = yyResult.semanticValue();
02961:
02962: yyBase = yyResult.index;
02963: yyResult = pSymbol(yyBase);
02964: yyError = yyResult.select(yyError);
02965: if (yyResult.hasValue(";")) {
02966:
02967: yyValue = GNode.create("ExpressionStatement", v$g$1);
02968: yyValue.setLocation(location(yyStart));
02969:
02970: return yyResult.createValue(yyValue, yyError);
02971: } else {
02972: yyError = yyError.select("\";\" expected", yyBase);
02973: }
02974: }
02975:
02976: // Alternative 15.
02977:
02978: yyResult = pWord(yyStart);
02979: yyError = yyResult.select(yyError);
02980: if (yyResult.hasValue("assert")) {
02981:
02982: yyResult = pExpression(yyResult.index);
02983: yyError = yyResult.select(yyError);
02984: if (yyResult.hasValue()) {
02985: final Node v$g$1 = yyResult.semanticValue();
02986:
02987: yyOption1 = yyResult.index;
02988: yyOpValue1 = null;
02989:
02990: yyBase = yyOption1;
02991: yyResult = pSymbol(yyBase);
02992: yyError = yyResult.select(yyError);
02993: if (yyResult.hasValue(":")) {
02994:
02995: yyResult = pExpression(yyResult.index);
02996: yyError = yyResult.select(yyError);
02997: if (yyResult.hasValue()) {
02998: final Node v$el$1 = yyResult.semanticValue();
02999:
03000: yyOption1 = yyResult.index;
03001: yyOpValue1 = v$el$1;
03002: }
03003: } else {
03004: yyError = yyError.select("\":\" expected", yyBase);
03005: }
03006: { // Start scope for v$g$2.
03007: final Node v$g$2 = cast(yyOpValue1);
03008:
03009: yyBase = yyOption1;
03010: yyResult = pSymbol(yyBase);
03011: yyError = yyResult.select(yyError);
03012: if (yyResult.hasValue(";")) {
03013:
03014: yyValue = GNode.create("AssertStatement",
03015: v$g$1, v$g$2);
03016: yyValue.setLocation(location(yyStart));
03017:
03018: return yyResult.createValue(yyValue, yyError);
03019: } else {
03020: yyError = yyError.select("\";\" expected",
03021: yyBase);
03022: }
03023: } // End scope for v$g$2.
03024: }
03025: }
03026:
03027: // Alternative 16.
03028:
03029: yyResult = pSymbol(yyStart);
03030: yyError = yyResult.select(yyError);
03031: if (yyResult.hasValue(";")) {
03032:
03033: yyValue = GNode.create("EmptyStatement", false);
03034: yyValue.setLocation(location(yyStart));
03035:
03036: return yyResult.createValue(yyValue, yyError);
03037: }
03038:
03039: // Done.
03040: yyError = yyError.select("statement expected", yyStart);
03041: return yyError;
03042: }
03043:
03044: // =========================================================================
03045:
03046: /**
03047: * Parse nonterminal xtc.lang.JavaFive.ForControl.
03048: *
03049: * @param yyStart The index.
03050: * @return The result.
03051: * @throws IOException Signals an I/O error.
03052: */
03053: private Result pForControl(final int yyStart) throws IOException {
03054: Result yyResult;
03055: int yyBase;
03056: int yyOption1;
03057: Node yyOpValue1;
03058: Node yyValue;
03059: ParseError yyError = ParseError.DUMMY;
03060:
03061: // Alternative 1.
03062:
03063: yyResult = pVariableModifiers(yyStart);
03064: yyError = yyResult.select(yyError);
03065: if (yyResult.hasValue()) {
03066: final Node v$g$1 = yyResult.semanticValue();
03067:
03068: yyResult = pType(yyResult.index);
03069: yyError = yyResult.select(yyError);
03070: if (yyResult.hasValue()) {
03071: final Node v$g$2 = yyResult.semanticValue();
03072:
03073: final int yyChoice1 = yyResult.index;
03074:
03075: // Nested alternative 1.
03076:
03077: yyResult = pIdentifier(yyChoice1);
03078: yyError = yyResult.select(yyError);
03079: if (yyResult.hasValue()) {
03080: final String v$g$3 = yyResult.semanticValue();
03081:
03082: yyBase = yyResult.index;
03083: yyResult = pSymbol(yyBase);
03084: yyError = yyResult.select(yyError);
03085: if (yyResult.hasValue(":")) {
03086:
03087: yyResult = pExpression(yyResult.index);
03088: yyError = yyResult.select(yyError);
03089: if (yyResult.hasValue()) {
03090: final Node v$g$4 = yyResult.semanticValue();
03091:
03092: yyValue = GNode.create(
03093: "EnhancedForControl", v$g$1, v$g$2,
03094: v$g$3, v$g$4);
03095: yyValue.setLocation(location(yyStart));
03096:
03097: return yyResult.createValue(yyValue,
03098: yyError);
03099: }
03100: } else {
03101: yyError = yyError.select("\":\" expected",
03102: yyBase);
03103: }
03104: }
03105:
03106: // Nested alternative 2.
03107:
03108: yyResult = pDeclarators(yyChoice1);
03109: yyError = yyResult.select(yyError);
03110: if (yyResult.hasValue()) {
03111: final Node v$g$3 = yyResult.semanticValue();
03112:
03113: yyBase = yyResult.index;
03114: yyResult = pSymbol(yyBase);
03115: yyError = yyResult.select(yyError);
03116: if (yyResult.hasValue(";")) {
03117:
03118: yyOption1 = yyResult.index;
03119: yyOpValue1 = null;
03120:
03121: yyResult = pExpression(yyOption1);
03122: yyError = yyResult.select(yyError);
03123: if (yyResult.hasValue()) {
03124: final Node v$el$1 = yyResult
03125: .semanticValue();
03126:
03127: yyOption1 = yyResult.index;
03128: yyOpValue1 = v$el$1;
03129: }
03130: { // Start scope for v$g$4.
03131: final Node v$g$4 = yyOpValue1;
03132:
03133: yyBase = yyOption1;
03134: yyResult = pSymbol(yyBase);
03135: yyError = yyResult.select(yyError);
03136: if (yyResult.hasValue(";")) {
03137:
03138: yyOption1 = yyResult.index;
03139: yyOpValue1 = null;
03140:
03141: yyResult = pExpressionList(yyOption1);
03142: yyError = yyResult.select(yyError);
03143: if (yyResult.hasValue()) {
03144: final Node v$el$2 = yyResult
03145: .semanticValue();
03146:
03147: yyOption1 = yyResult.index;
03148: yyOpValue1 = v$el$2;
03149: }
03150: { // Start scope for v$g$5.
03151: final Node v$g$5 = yyOpValue1;
03152:
03153: yyValue = GNode.create(
03154: "BasicForControl", v$g$1,
03155: v$g$2, v$g$3, v$g$4, v$g$5);
03156: yyValue
03157: .setLocation(location(yyStart));
03158:
03159: return new SemanticValue(yyValue,
03160: yyOption1, yyError);
03161: } // End scope for v$g$5.
03162: } else {
03163: yyError = yyError.select(
03164: "\";\" expected", yyBase);
03165: }
03166: } // End scope for v$g$4.
03167: } else {
03168: yyError = yyError.select("\";\" expected",
03169: yyBase);
03170: }
03171: }
03172: }
03173: }
03174:
03175: // Alternative <Initialization>.
03176:
03177: yyOption1 = yyStart;
03178: yyOpValue1 = null;
03179:
03180: yyResult = pExpressionList(yyOption1);
03181: yyError = yyResult.select(yyError);
03182: if (yyResult.hasValue()) {
03183: final Node v$el$3 = yyResult.semanticValue();
03184:
03185: yyOption1 = yyResult.index;
03186: yyOpValue1 = v$el$3;
03187: }
03188: { // Start scope for v$g$8.
03189: final Node v$g$8 = yyOpValue1;
03190:
03191: yyBase = yyOption1;
03192: yyResult = pSymbol(yyBase);
03193: yyError = yyResult.select(yyError);
03194: if (yyResult.hasValue(";")) {
03195:
03196: yyOption1 = yyResult.index;
03197: yyOpValue1 = null;
03198:
03199: yyResult = pExpression(yyOption1);
03200: yyError = yyResult.select(yyError);
03201: if (yyResult.hasValue()) {
03202: final Node v$el$4 = yyResult.semanticValue();
03203:
03204: yyOption1 = yyResult.index;
03205: yyOpValue1 = v$el$4;
03206: }
03207: { // Start scope for v$g$9.
03208: final Node v$g$9 = yyOpValue1;
03209:
03210: yyBase = yyOption1;
03211: yyResult = pSymbol(yyBase);
03212: yyError = yyResult.select(yyError);
03213: if (yyResult.hasValue(";")) {
03214:
03215: yyOption1 = yyResult.index;
03216: yyOpValue1 = null;
03217:
03218: yyResult = pExpressionList(yyOption1);
03219: yyError = yyResult.select(yyError);
03220: if (yyResult.hasValue()) {
03221: final Node v$el$5 = yyResult
03222: .semanticValue();
03223:
03224: yyOption1 = yyResult.index;
03225: yyOpValue1 = v$el$5;
03226: }
03227: { // Start scope for v$g$10.
03228: final Node v$g$10 = yyOpValue1;
03229:
03230: yyValue = GNode.create("BasicForControl",
03231: null, null, v$g$8, v$g$9, v$g$10);
03232: yyValue.setLocation(location(yyStart));
03233:
03234: return new SemanticValue(yyValue,
03235: yyOption1, yyError);
03236: } // End scope for v$g$10.
03237: } else {
03238: yyError = yyError.select("\";\" expected",
03239: yyBase);
03240: }
03241: } // End scope for v$g$9.
03242: } else {
03243: yyError = yyError.select("\";\" expected", yyBase);
03244: }
03245: } // End scope for v$g$8.
03246:
03247: // Done.
03248: return yyError;
03249: }
03250:
03251: // =========================================================================
03252:
03253: /**
03254: * Parse nonterminal xtc.lang.JavaFive.ParExpression.
03255: *
03256: * @param yyStart The index.
03257: * @return The result.
03258: * @throws IOException Signals an I/O error.
03259: */
03260: private Result pParExpression(final int yyStart) throws IOException {
03261: JavaFiveParserColumn yyColumn = (JavaFiveParserColumn) column(yyStart);
03262: if (null == yyColumn.chunk1)
03263: yyColumn.chunk1 = new Chunk1();
03264: if (null == yyColumn.chunk1.fParExpression)
03265: yyColumn.chunk1.fParExpression = pParExpression$1(yyStart);
03266: return yyColumn.chunk1.fParExpression;
03267: }
03268:
03269: /** Actually parse xtc.lang.JavaFive.ParExpression. */
03270: private Result pParExpression$1(final int yyStart)
03271: throws IOException {
03272: Result yyResult;
03273: int yyBase;
03274: Node yyValue;
03275: ParseError yyError = ParseError.DUMMY;
03276:
03277: // Alternative 1.
03278:
03279: yyResult = pSymbol(yyStart);
03280: yyError = yyResult.select(yyError);
03281: if (yyResult.hasValue("(")) {
03282:
03283: yyResult = pExpression(yyResult.index);
03284: yyError = yyResult.select(yyError);
03285: if (yyResult.hasValue()) {
03286: yyValue = yyResult.semanticValue();
03287:
03288: yyBase = yyResult.index;
03289: yyResult = pSymbol(yyBase);
03290: yyError = yyResult.select(yyError);
03291: if (yyResult.hasValue(")")) {
03292:
03293: return yyResult.createValue(yyValue, yyError);
03294: } else {
03295: yyError = yyError.select("\")\" expected", yyBase);
03296: }
03297: }
03298: }
03299:
03300: // Done.
03301: yyError = yyError.select("par expression expected", yyStart);
03302: return yyError;
03303: }
03304:
03305: // =========================================================================
03306:
03307: /**
03308: * Parse nonterminal xtc.lang.JavaFive.CatchClause.
03309: *
03310: * @param yyStart The index.
03311: * @return The result.
03312: * @throws IOException Signals an I/O error.
03313: */
03314: private Result pCatchClause(final int yyStart) throws IOException {
03315: JavaFiveParserColumn yyColumn = (JavaFiveParserColumn) column(yyStart);
03316: if (null == yyColumn.chunk2)
03317: yyColumn.chunk2 = new Chunk2();
03318: if (null == yyColumn.chunk2.fCatchClause)
03319: yyColumn.chunk2.fCatchClause = pCatchClause$1(yyStart);
03320: return yyColumn.chunk2.fCatchClause;
03321: }
03322:
03323: /** Actually parse xtc.lang.JavaFive.CatchClause. */
03324: private Result pCatchClause$1(final int yyStart) throws IOException {
03325: Result yyResult;
03326: int yyBase;
03327: Node yyValue;
03328: ParseError yyError = ParseError.DUMMY;
03329:
03330: // Alternative 1.
03331:
03332: yyResult = pWord(yyStart);
03333: yyError = yyResult.select(yyError);
03334: if (yyResult.hasValue("catch")) {
03335:
03336: yyBase = yyResult.index;
03337: yyResult = pSymbol(yyBase);
03338: yyError = yyResult.select(yyError);
03339: if (yyResult.hasValue("(")) {
03340:
03341: yyResult = pFormalParameter(yyResult.index);
03342: yyError = yyResult.select(yyError);
03343: if (yyResult.hasValue()) {
03344: final Node v$g$1 = yyResult.semanticValue();
03345:
03346: yyBase = yyResult.index;
03347: yyResult = pSymbol(yyBase);
03348: yyError = yyResult.select(yyError);
03349: if (yyResult.hasValue(")")) {
03350:
03351: yyResult = pBlock(yyResult.index);
03352: yyError = yyResult.select(yyError);
03353: if (yyResult.hasValue()) {
03354: final Node v$g$2 = yyResult.semanticValue();
03355:
03356: yyValue = GNode.create("CatchClause",
03357: v$g$1, v$g$2);
03358: yyValue.setLocation(location(yyStart));
03359:
03360: return yyResult.createValue(yyValue,
03361: yyError);
03362: }
03363: } else {
03364: yyError = yyError.select("\")\" expected",
03365: yyBase);
03366: }
03367: }
03368: } else {
03369: yyError = yyError.select("\"(\" expected", yyBase);
03370: }
03371: }
03372:
03373: // Done.
03374: yyError = yyError.select("catch clause expected", yyStart);
03375: return yyError;
03376: }
03377:
03378: // =========================================================================
03379:
03380: /**
03381: * Parse nonterminal xtc.lang.JavaFive.SwitchClause.
03382: *
03383: * @param yyStart The index.
03384: * @return The result.
03385: * @throws IOException Signals an I/O error.
03386: */
03387: private Result pSwitchClause(final int yyStart) throws IOException {
03388: Result yyResult;
03389: int yyBase;
03390: int yyRepetition1;
03391: Pair<Node> yyRepValue1;
03392: Node yyValue;
03393: ParseError yyError = ParseError.DUMMY;
03394:
03395: // Alternative 1.
03396:
03397: yyResult = pWord(yyStart);
03398: yyError = yyResult.select(yyError);
03399: if (yyResult.hasValue("case")) {
03400:
03401: yyResult = pExpression(yyResult.index);
03402: yyError = yyResult.select(yyError);
03403: if (yyResult.hasValue()) {
03404: final Node v$g$1 = yyResult.semanticValue();
03405:
03406: yyBase = yyResult.index;
03407: yyResult = pSymbol(yyBase);
03408: yyError = yyResult.select(yyError);
03409: if (yyResult.hasValue(":")) {
03410:
03411: yyRepetition1 = yyResult.index;
03412: yyRepValue1 = Pair.empty();
03413: while (true) {
03414:
03415: yyResult = pDeclarationOrStatement(yyRepetition1);
03416: yyError = yyResult.select(yyError);
03417: if (yyResult.hasValue()) {
03418: final Node v$el$1 = yyResult
03419: .semanticValue();
03420:
03421: yyRepetition1 = yyResult.index;
03422: yyRepValue1 = new Pair<Node>(v$el$1,
03423: yyRepValue1);
03424: continue;
03425: }
03426: break;
03427: }
03428: { // Start scope for v$g$2.
03429: final Pair<Node> v$g$2 = yyRepValue1.reverse();
03430:
03431: yyValue = GNode.createFromPair("CaseClause",
03432: v$g$1, v$g$2);
03433: yyValue.setLocation(location(yyStart));
03434:
03435: return new SemanticValue(yyValue,
03436: yyRepetition1, yyError);
03437: } // End scope for v$g$2.
03438: } else {
03439: yyError = yyError.select("\":\" expected", yyBase);
03440: }
03441: }
03442: }
03443:
03444: // Alternative 2.
03445:
03446: yyResult = pWord(yyStart);
03447: yyError = yyResult.select(yyError);
03448: if (yyResult.hasValue("default")) {
03449:
03450: yyBase = yyResult.index;
03451: yyResult = pSymbol(yyBase);
03452: yyError = yyResult.select(yyError);
03453: if (yyResult.hasValue(":")) {
03454:
03455: yyRepetition1 = yyResult.index;
03456: yyRepValue1 = Pair.empty();
03457: while (true) {
03458:
03459: yyResult = pDeclarationOrStatement(yyRepetition1);
03460: yyError = yyResult.select(yyError);
03461: if (yyResult.hasValue()) {
03462: final Node v$el$1 = yyResult.semanticValue();
03463:
03464: yyRepetition1 = yyResult.index;
03465: yyRepValue1 = new Pair<Node>(v$el$1,
03466: yyRepValue1);
03467: continue;
03468: }
03469: break;
03470: }
03471: { // Start scope for v$g$1.
03472: final Pair<Node> v$g$1 = yyRepValue1.reverse();
03473:
03474: yyValue = GNode.createFromPair("DefaultClause",
03475: v$g$1);
03476: yyValue.setLocation(location(yyStart));
03477:
03478: return new SemanticValue(yyValue, yyRepetition1,
03479: yyError);
03480: } // End scope for v$g$1.
03481: } else {
03482: yyError = yyError.select("\":\" expected", yyBase);
03483: }
03484: }
03485:
03486: // Done.
03487: yyError = yyError.select("switch clause expected", yyStart);
03488: return yyError;
03489: }
03490:
03491: // =========================================================================
03492:
03493: /**
03494: * Parse nonterminal xtc.lang.JavaFive.ExpressionList.
03495: *
03496: * @param yyStart The index.
03497: * @return The result.
03498: * @throws IOException Signals an I/O error.
03499: */
03500: private Result pExpressionList(final int yyStart)
03501: throws IOException {
03502: Result yyResult;
03503: int yyBase;
03504: int yyRepetition1;
03505: Pair<Node> yyRepValue1;
03506: Node yyValue;
03507: ParseError yyError = ParseError.DUMMY;
03508:
03509: // Alternative 1.
03510:
03511: yyResult = pExpression(yyStart);
03512: yyError = yyResult.select(yyError);
03513: if (yyResult.hasValue()) {
03514: final Node v$g$1 = yyResult.semanticValue();
03515:
03516: yyRepetition1 = yyResult.index;
03517: yyRepValue1 = Pair.empty();
03518: while (true) {
03519:
03520: yyBase = yyRepetition1;
03521: yyResult = pSymbol(yyBase);
03522: yyError = yyResult.select(yyError);
03523: if (yyResult.hasValue(",")) {
03524:
03525: yyResult = pExpression(yyResult.index);
03526: yyError = yyResult.select(yyError);
03527: if (yyResult.hasValue()) {
03528: final Node v$el$1 = yyResult.semanticValue();
03529:
03530: yyRepetition1 = yyResult.index;
03531: yyRepValue1 = new Pair<Node>(v$el$1,
03532: yyRepValue1);
03533: continue;
03534: }
03535: } else {
03536: yyError = yyError.select("\",\" expected", yyBase);
03537: }
03538: break;
03539: }
03540: { // Start scope for v$g$2.
03541: final Pair<Node> v$g$2 = yyRepValue1.reverse();
03542:
03543: yyValue = GNode.createFromPair("ExpressionList", v$g$1,
03544: v$g$2);
03545: yyValue.setLocation(location(yyStart));
03546:
03547: return new SemanticValue(yyValue, yyRepetition1,
03548: yyError);
03549: } // End scope for v$g$2.
03550: }
03551:
03552: // Done.
03553: return yyError;
03554: }
03555:
03556: // =========================================================================
03557:
03558: /**
03559: * Parse nonterminal xtc.lang.JavaFive.Expression.
03560: *
03561: * @param yyStart The index.
03562: * @return The result.
03563: * @throws IOException Signals an I/O error.
03564: */
03565: private Result pExpression(final int yyStart) throws IOException {
03566: JavaFiveParserColumn yyColumn = (JavaFiveParserColumn) column(yyStart);
03567: if (null == yyColumn.chunk2)
03568: yyColumn.chunk2 = new Chunk2();
03569: if (null == yyColumn.chunk2.fExpression)
03570: yyColumn.chunk2.fExpression = pExpression$1(yyStart);
03571: return yyColumn.chunk2.fExpression;
03572: }
03573:
03574: /** Actually parse xtc.lang.JavaFive.Expression. */
03575: private Result pExpression$1(final int yyStart) throws IOException {
03576: Result yyResult;
03577: Node yyValue;
03578: ParseError yyError = ParseError.DUMMY;
03579:
03580: // Alternative <Assignment>.
03581:
03582: yyResult = pConditionalExpression(yyStart);
03583: yyError = yyResult.select(yyError);
03584: if (yyResult.hasValue()) {
03585: final Node v$g$1 = yyResult.semanticValue();
03586:
03587: yyResult = pAssignmentOperator(yyResult.index);
03588: yyError = yyResult.select(yyError);
03589: if (yyResult.hasValue()) {
03590: final String v$g$2 = yyResult.semanticValue();
03591:
03592: yyResult = pExpression(yyResult.index);
03593: yyError = yyResult.select(yyError);
03594: if (yyResult.hasValue()) {
03595: final Node v$g$3 = yyResult.semanticValue();
03596:
03597: yyValue = GNode.create("Expression", v$g$1, v$g$2,
03598: v$g$3);
03599: yyValue.setLocation(location(yyStart));
03600:
03601: return yyResult.createValue(yyValue, yyError);
03602: }
03603: }
03604: }
03605:
03606: // Alternative <Base>.
03607:
03608: yyResult = pConditionalExpression(yyStart);
03609: yyError = yyResult.select(yyError);
03610: if (yyResult.hasValue()) {
03611: yyValue = yyResult.semanticValue();
03612:
03613: return yyResult.createValue(yyValue, yyError);
03614: }
03615:
03616: // Done.
03617: return yyError;
03618: }
03619:
03620: // =========================================================================
03621:
03622: /**
03623: * Parse nonterminal xtc.lang.JavaFive.AssignmentOperator.
03624: *
03625: * @param yyStart The index.
03626: * @return The result.
03627: * @throws IOException Signals an I/O error.
03628: */
03629: private Result pAssignmentOperator(final int yyStart)
03630: throws IOException {
03631: Result yyResult;
03632: String yyValue;
03633: ParseError yyError = ParseError.DUMMY;
03634:
03635: // Alternative <Equal>.
03636:
03637: yyResult = pSymbol(yyStart);
03638: yyError = yyResult.select(yyError);
03639: if (yyResult.hasValue("=")) {
03640: yyValue = "=";
03641:
03642: return yyResult.createValue(yyValue, yyError);
03643: }
03644:
03645: // Alternative <PlusEqual>.
03646:
03647: yyResult = pSymbol(yyStart);
03648: yyError = yyResult.select(yyError);
03649: if (yyResult.hasValue("+=")) {
03650: yyValue = "+=";
03651:
03652: return yyResult.createValue(yyValue, yyError);
03653: }
03654:
03655: // Alternative <MinusEqual>.
03656:
03657: yyResult = pSymbol(yyStart);
03658: yyError = yyResult.select(yyError);
03659: if (yyResult.hasValue("-=")) {
03660: yyValue = "-=";
03661:
03662: return yyResult.createValue(yyValue, yyError);
03663: }
03664:
03665: // Alternative <StarEqual>.
03666:
03667: yyResult = pSymbol(yyStart);
03668: yyError = yyResult.select(yyError);
03669: if (yyResult.hasValue("*=")) {
03670: yyValue = "*=";
03671:
03672: return yyResult.createValue(yyValue, yyError);
03673: }
03674:
03675: // Alternative <SlashEqual>.
03676:
03677: yyResult = pSymbol(yyStart);
03678: yyError = yyResult.select(yyError);
03679: if (yyResult.hasValue("/=")) {
03680: yyValue = "/=";
03681:
03682: return yyResult.createValue(yyValue, yyError);
03683: }
03684:
03685: // Alternative <AmpersandEqual>.
03686:
03687: yyResult = pSymbol(yyStart);
03688: yyError = yyResult.select(yyError);
03689: if (yyResult.hasValue("&=")) {
03690: yyValue = "&=";
03691:
03692: return yyResult.createValue(yyValue, yyError);
03693: }
03694:
03695: // Alternative <BarEqual>.
03696:
03697: yyResult = pSymbol(yyStart);
03698: yyError = yyResult.select(yyError);
03699: if (yyResult.hasValue("|=")) {
03700: yyValue = "|=";
03701:
03702: return yyResult.createValue(yyValue, yyError);
03703: }
03704:
03705: // Alternative <CaretEqual>.
03706:
03707: yyResult = pSymbol(yyStart);
03708: yyError = yyResult.select(yyError);
03709: if (yyResult.hasValue("^=")) {
03710: yyValue = "^=";
03711:
03712: return yyResult.createValue(yyValue, yyError);
03713: }
03714:
03715: // Alternative <PercentEqual>.
03716:
03717: yyResult = pSymbol(yyStart);
03718: yyError = yyResult.select(yyError);
03719: if (yyResult.hasValue("%=")) {
03720: yyValue = "%=";
03721:
03722: return yyResult.createValue(yyValue, yyError);
03723: }
03724:
03725: // Alternative <DoubleLessEqual>.
03726:
03727: yyResult = pSymbol(yyStart);
03728: yyError = yyResult.select(yyError);
03729: if (yyResult.hasValue("<<=")) {
03730: yyValue = "<<=";
03731:
03732: return yyResult.createValue(yyValue, yyError);
03733: }
03734:
03735: // Alternative <DoubleGreaterEqual>.
03736:
03737: yyResult = pSymbol(yyStart);
03738: yyError = yyResult.select(yyError);
03739: if (yyResult.hasValue(">>=")) {
03740: yyValue = ">>=";
03741:
03742: return yyResult.createValue(yyValue, yyError);
03743: }
03744:
03745: // Alternative <TripleGreaterEqual>.
03746:
03747: yyResult = pSymbol(yyStart);
03748: yyError = yyResult.select(yyError);
03749: if (yyResult.hasValue(">>>=")) {
03750: yyValue = ">>>=";
03751:
03752: return yyResult.createValue(yyValue, yyError);
03753: }
03754:
03755: // Done.
03756: yyError = yyError.select("assignment operator expected",
03757: yyStart);
03758: return yyError;
03759: }
03760:
03761: // =========================================================================
03762:
03763: /**
03764: * Parse nonterminal xtc.lang.JavaFive.ConditionalExpression.
03765: *
03766: * @param yyStart The index.
03767: * @return The result.
03768: * @throws IOException Signals an I/O error.
03769: */
03770: private Result pConditionalExpression(final int yyStart)
03771: throws IOException {
03772:
03773: JavaFiveParserColumn yyColumn = (JavaFiveParserColumn) column(yyStart);
03774: if (null == yyColumn.chunk2)
03775: yyColumn.chunk2 = new Chunk2();
03776: if (null == yyColumn.chunk2.fConditionalExpression)
03777: yyColumn.chunk2.fConditionalExpression = pConditionalExpression$1(yyStart);
03778: return yyColumn.chunk2.fConditionalExpression;
03779: }
03780:
03781: /** Actually parse xtc.lang.JavaFive.ConditionalExpression. */
03782: private Result pConditionalExpression$1(final int yyStart)
03783: throws IOException {
03784:
03785: Result yyResult;
03786: int yyBase;
03787: Node yyValue;
03788: ParseError yyError = ParseError.DUMMY;
03789:
03790: // Alternative <Conditional>.
03791:
03792: yyResult = pLogicalOrExpression(yyStart);
03793: yyError = yyResult.select(yyError);
03794: if (yyResult.hasValue()) {
03795: final Node v$g$1 = yyResult.semanticValue();
03796:
03797: yyBase = yyResult.index;
03798: yyResult = pSymbol(yyBase);
03799: yyError = yyResult.select(yyError);
03800: if (yyResult.hasValue("?")) {
03801:
03802: yyResult = pExpression(yyResult.index);
03803: yyError = yyResult.select(yyError);
03804: if (yyResult.hasValue()) {
03805: final Node v$g$2 = yyResult.semanticValue();
03806:
03807: yyBase = yyResult.index;
03808: yyResult = pSymbol(yyBase);
03809: yyError = yyResult.select(yyError);
03810: if (yyResult.hasValue(":")) {
03811:
03812: yyResult = pConditionalExpression(yyResult.index);
03813: yyError = yyResult.select(yyError);
03814: if (yyResult.hasValue()) {
03815: final Node v$g$3 = yyResult.semanticValue();
03816:
03817: yyValue = GNode.create(
03818: "ConditionalExpression", v$g$1,
03819: v$g$2, v$g$3);
03820: yyValue.setLocation(location(yyStart));
03821:
03822: return yyResult.createValue(yyValue,
03823: yyError);
03824: }
03825: } else {
03826: yyError = yyError.select("\":\" expected",
03827: yyBase);
03828: }
03829: }
03830: } else {
03831: yyError = yyError.select("\"?\" expected", yyBase);
03832: }
03833: }
03834:
03835: // Alternative <Base>.
03836:
03837: yyResult = pLogicalOrExpression(yyStart);
03838: yyError = yyResult.select(yyError);
03839: if (yyResult.hasValue()) {
03840: yyValue = yyResult.semanticValue();
03841:
03842: return yyResult.createValue(yyValue, yyError);
03843: }
03844:
03845: // Done.
03846: return yyError;
03847: }
03848:
03849: // =========================================================================
03850:
03851: /**
03852: * Parse nonterminal xtc.lang.JavaFive.LogicalOrExpression.
03853: *
03854: * @param yyStart The index.
03855: * @return The result.
03856: * @throws IOException Signals an I/O error.
03857: */
03858: private Result pLogicalOrExpression(final int yyStart)
03859: throws IOException {
03860: JavaFiveParserColumn yyColumn = (JavaFiveParserColumn) column(yyStart);
03861: if (null == yyColumn.chunk2)
03862: yyColumn.chunk2 = new Chunk2();
03863: if (null == yyColumn.chunk2.fLogicalOrExpression)
03864: yyColumn.chunk2.fLogicalOrExpression = pLogicalOrExpression$1(yyStart);
03865: return yyColumn.chunk2.fLogicalOrExpression;
03866: }
03867:
03868: /** Actually parse xtc.lang.JavaFive.LogicalOrExpression. */
03869: private Result pLogicalOrExpression$1(final int yyStart)
03870: throws IOException {
03871:
03872: Result yyResult;
03873: int yyRepetition1;
03874: Pair<Action<Node>> yyRepValue1;
03875: Node yyValue;
03876: ParseError yyError = ParseError.DUMMY;
03877:
03878: // Alternative <Base>.
03879:
03880: yyResult = pLogicalAndExpression(yyStart);
03881: yyError = yyResult.select(yyError);
03882: if (yyResult.hasValue()) {
03883: final Node v$3 = yyResult.semanticValue();
03884:
03885: yyRepetition1 = yyResult.index;
03886: yyRepValue1 = Pair.empty();
03887: while (true) {
03888:
03889: yyResult = pLogicalOrExpression$$Tail1(yyRepetition1);
03890: yyError = yyResult.select(yyError);
03891: if (yyResult.hasValue()) {
03892: final Action<Node> v$4 = yyResult.semanticValue();
03893:
03894: yyRepetition1 = yyResult.index;
03895: yyRepValue1 = new Pair<Action<Node>>(v$4,
03896: yyRepValue1);
03897: continue;
03898: }
03899: break;
03900: }
03901: { // Start scope for v$5.
03902: final Pair<Action<Node>> v$5 = yyRepValue1.reverse();
03903:
03904: yyValue = apply(v$5, v$3, yyStart);
03905:
03906: return new SemanticValue(yyValue, yyRepetition1,
03907: yyError);
03908: } // End scope for v$5.
03909: }
03910:
03911: // Done.
03912: return yyError;
03913: }
03914:
03915: // =========================================================================
03916:
03917: /**
03918: * Parse synthetic nonterminal xtc.lang.JavaFive.LogicalOrExpression$$Tail1.
03919: *
03920: * @param yyStart The index.
03921: * @return The result.
03922: * @throws IOException Signals an I/O error.
03923: */
03924: private Result pLogicalOrExpression$$Tail1(final int yyStart)
03925: throws IOException {
03926:
03927: Result yyResult;
03928: Action<Node> yyValue;
03929: ParseError yyError = ParseError.DUMMY;
03930:
03931: // Alternative <Or>.
03932:
03933: yyResult = pSymbol(yyStart);
03934: yyError = yyResult.select(yyError);
03935: if (yyResult.hasValue("||")) {
03936:
03937: yyResult = pLogicalAndExpression(yyResult.index);
03938: yyError = yyResult.select(yyError);
03939: if (yyResult.hasValue()) {
03940: final Node v$g$2 = yyResult.semanticValue();
03941:
03942: yyValue = new Action<Node>() {
03943: public Node run(Node v$1) {
03944: return GNode.create("LogicalOrExpression", v$1,
03945: v$g$2);
03946: }
03947: };
03948:
03949: return yyResult.createValue(yyValue, yyError);
03950: }
03951: }
03952:
03953: // Done.
03954: yyError = yyError.select("logical or expression expected",
03955: yyStart);
03956: return yyError;
03957: }
03958:
03959: // =========================================================================
03960:
03961: /**
03962: * Parse nonterminal xtc.lang.JavaFive.LogicalAndExpression.
03963: *
03964: * @param yyStart The index.
03965: * @return The result.
03966: * @throws IOException Signals an I/O error.
03967: */
03968: private Result pLogicalAndExpression(final int yyStart)
03969: throws IOException {
03970: Result yyResult;
03971: int yyRepetition1;
03972: Pair<Action<Node>> yyRepValue1;
03973: Node yyValue;
03974: ParseError yyError = ParseError.DUMMY;
03975:
03976: // Alternative <Base>.
03977:
03978: yyResult = pBitwiseOrExpression(yyStart);
03979: yyError = yyResult.select(yyError);
03980: if (yyResult.hasValue()) {
03981: final Node v$3 = yyResult.semanticValue();
03982:
03983: yyRepetition1 = yyResult.index;
03984: yyRepValue1 = Pair.empty();
03985: while (true) {
03986:
03987: yyResult = pLogicalAndExpression$$Tail1(yyRepetition1);
03988: yyError = yyResult.select(yyError);
03989: if (yyResult.hasValue()) {
03990: final Action<Node> v$4 = yyResult.semanticValue();
03991:
03992: yyRepetition1 = yyResult.index;
03993: yyRepValue1 = new Pair<Action<Node>>(v$4,
03994: yyRepValue1);
03995: continue;
03996: }
03997: break;
03998: }
03999: { // Start scope for v$5.
04000: final Pair<Action<Node>> v$5 = yyRepValue1.reverse();
04001:
04002: yyValue = apply(v$5, v$3, yyStart);
04003:
04004: return new SemanticValue(yyValue, yyRepetition1,
04005: yyError);
04006: } // End scope for v$5.
04007: }
04008:
04009: // Done.
04010: return yyError;
04011: }
04012:
04013: // =========================================================================
04014:
04015: /**
04016: * Parse synthetic nonterminal
04017: * xtc.lang.JavaFive.LogicalAndExpression$$Tail1.
04018: *
04019: * @param yyStart The index.
04020: * @return The result.
04021: * @throws IOException Signals an I/O error.
04022: */
04023: private Result pLogicalAndExpression$$Tail1(final int yyStart)
04024: throws IOException {
04025:
04026: Result yyResult;
04027: Action<Node> yyValue;
04028: ParseError yyError = ParseError.DUMMY;
04029:
04030: // Alternative <And>.
04031:
04032: yyResult = pSymbol(yyStart);
04033: yyError = yyResult.select(yyError);
04034: if (yyResult.hasValue("&&")) {
04035:
04036: yyResult = pBitwiseOrExpression(yyResult.index);
04037: yyError = yyResult.select(yyError);
04038: if (yyResult.hasValue()) {
04039: final Node v$g$2 = yyResult.semanticValue();
04040:
04041: yyValue = new Action<Node>() {
04042: public Node run(Node v$1) {
04043: return GNode.create("LogicalAndExpression",
04044: v$1, v$g$2);
04045: }
04046: };
04047:
04048: return yyResult.createValue(yyValue, yyError);
04049: }
04050: }
04051:
04052: // Done.
04053: yyError = yyError.select("logical and expression expected",
04054: yyStart);
04055: return yyError;
04056: }
04057:
04058: // =========================================================================
04059:
04060: /**
04061: * Parse nonterminal xtc.lang.JavaFive.BitwiseOrExpression.
04062: *
04063: * @param yyStart The index.
04064: * @return The result.
04065: * @throws IOException Signals an I/O error.
04066: */
04067: private Result pBitwiseOrExpression(final int yyStart)
04068: throws IOException {
04069: Result yyResult;
04070: int yyRepetition1;
04071: Pair<Action<Node>> yyRepValue1;
04072: Node yyValue;
04073: ParseError yyError = ParseError.DUMMY;
04074:
04075: // Alternative <Base>.
04076:
04077: yyResult = pBitwiseXorExpression(yyStart);
04078: yyError = yyResult.select(yyError);
04079: if (yyResult.hasValue()) {
04080: final Node v$3 = yyResult.semanticValue();
04081:
04082: yyRepetition1 = yyResult.index;
04083: yyRepValue1 = Pair.empty();
04084: while (true) {
04085:
04086: yyResult = pBitwiseOrExpression$$Tail1(yyRepetition1);
04087: yyError = yyResult.select(yyError);
04088: if (yyResult.hasValue()) {
04089: final Action<Node> v$4 = yyResult.semanticValue();
04090:
04091: yyRepetition1 = yyResult.index;
04092: yyRepValue1 = new Pair<Action<Node>>(v$4,
04093: yyRepValue1);
04094: continue;
04095: }
04096: break;
04097: }
04098: { // Start scope for v$5.
04099: final Pair<Action<Node>> v$5 = yyRepValue1.reverse();
04100:
04101: yyValue = apply(v$5, v$3, yyStart);
04102:
04103: return new SemanticValue(yyValue, yyRepetition1,
04104: yyError);
04105: } // End scope for v$5.
04106: }
04107:
04108: // Done.
04109: return yyError;
04110: }
04111:
04112: // =========================================================================
04113:
04114: /**
04115: * Parse synthetic nonterminal xtc.lang.JavaFive.BitwiseOrExpression$$Tail1.
04116: *
04117: * @param yyStart The index.
04118: * @return The result.
04119: * @throws IOException Signals an I/O error.
04120: */
04121: private Result pBitwiseOrExpression$$Tail1(final int yyStart)
04122: throws IOException {
04123:
04124: Result yyResult;
04125: Action<Node> yyValue;
04126: ParseError yyError = ParseError.DUMMY;
04127:
04128: // Alternative <Or>.
04129:
04130: yyResult = pSymbol(yyStart);
04131: yyError = yyResult.select(yyError);
04132: if (yyResult.hasValue("|")) {
04133:
04134: yyResult = pBitwiseXorExpression(yyResult.index);
04135: yyError = yyResult.select(yyError);
04136: if (yyResult.hasValue()) {
04137: final Node v$g$2 = yyResult.semanticValue();
04138:
04139: yyValue = new Action<Node>() {
04140: public Node run(Node v$1) {
04141: return GNode.create("BitwiseOrExpression", v$1,
04142: v$g$2);
04143: }
04144: };
04145:
04146: return yyResult.createValue(yyValue, yyError);
04147: }
04148: }
04149:
04150: // Done.
04151: yyError = yyError.select("bitwise or expression expected",
04152: yyStart);
04153: return yyError;
04154: }
04155:
04156: // =========================================================================
04157:
04158: /**
04159: * Parse nonterminal xtc.lang.JavaFive.BitwiseXorExpression.
04160: *
04161: * @param yyStart The index.
04162: * @return The result.
04163: * @throws IOException Signals an I/O error.
04164: */
04165: private Result pBitwiseXorExpression(final int yyStart)
04166: throws IOException {
04167: Result yyResult;
04168: int yyRepetition1;
04169: Pair<Action<Node>> yyRepValue1;
04170: Node yyValue;
04171: ParseError yyError = ParseError.DUMMY;
04172:
04173: // Alternative <Base>.
04174:
04175: yyResult = pBitwiseAndExpression(yyStart);
04176: yyError = yyResult.select(yyError);
04177: if (yyResult.hasValue()) {
04178: final Node v$3 = yyResult.semanticValue();
04179:
04180: yyRepetition1 = yyResult.index;
04181: yyRepValue1 = Pair.empty();
04182: while (true) {
04183:
04184: yyResult = pBitwiseXorExpression$$Tail1(yyRepetition1);
04185: yyError = yyResult.select(yyError);
04186: if (yyResult.hasValue()) {
04187: final Action<Node> v$4 = yyResult.semanticValue();
04188:
04189: yyRepetition1 = yyResult.index;
04190: yyRepValue1 = new Pair<Action<Node>>(v$4,
04191: yyRepValue1);
04192: continue;
04193: }
04194: break;
04195: }
04196: { // Start scope for v$5.
04197: final Pair<Action<Node>> v$5 = yyRepValue1.reverse();
04198:
04199: yyValue = apply(v$5, v$3, yyStart);
04200:
04201: return new SemanticValue(yyValue, yyRepetition1,
04202: yyError);
04203: } // End scope for v$5.
04204: }
04205:
04206: // Done.
04207: return yyError;
04208: }
04209:
04210: // =========================================================================
04211:
04212: /**
04213: * Parse synthetic nonterminal
04214: * xtc.lang.JavaFive.BitwiseXorExpression$$Tail1.
04215: *
04216: * @param yyStart The index.
04217: * @return The result.
04218: * @throws IOException Signals an I/O error.
04219: */
04220: private Result pBitwiseXorExpression$$Tail1(final int yyStart)
04221: throws IOException {
04222:
04223: Result yyResult;
04224: Action<Node> yyValue;
04225: ParseError yyError = ParseError.DUMMY;
04226:
04227: // Alternative <Xor>.
04228:
04229: yyResult = pSymbol(yyStart);
04230: yyError = yyResult.select(yyError);
04231: if (yyResult.hasValue("^")) {
04232:
04233: yyResult = pBitwiseAndExpression(yyResult.index);
04234: yyError = yyResult.select(yyError);
04235: if (yyResult.hasValue()) {
04236: final Node v$g$2 = yyResult.semanticValue();
04237:
04238: yyValue = new Action<Node>() {
04239: public Node run(Node v$1) {
04240: return GNode.create("BitwiseXorExpression",
04241: v$1, v$g$2);
04242: }
04243: };
04244:
04245: return yyResult.createValue(yyValue, yyError);
04246: }
04247: }
04248:
04249: // Done.
04250: yyError = yyError.select("bitwise xor expression expected",
04251: yyStart);
04252: return yyError;
04253: }
04254:
04255: // =========================================================================
04256:
04257: /**
04258: * Parse nonterminal xtc.lang.JavaFive.BitwiseAndExpression.
04259: *
04260: * @param yyStart The index.
04261: * @return The result.
04262: * @throws IOException Signals an I/O error.
04263: */
04264: private Result pBitwiseAndExpression(final int yyStart)
04265: throws IOException {
04266: Result yyResult;
04267: int yyRepetition1;
04268: Pair<Action<Node>> yyRepValue1;
04269: Node yyValue;
04270: ParseError yyError = ParseError.DUMMY;
04271:
04272: // Alternative <Base>.
04273:
04274: yyResult = pEqualityExpression(yyStart);
04275: yyError = yyResult.select(yyError);
04276: if (yyResult.hasValue()) {
04277: final Node v$3 = yyResult.semanticValue();
04278:
04279: yyRepetition1 = yyResult.index;
04280: yyRepValue1 = Pair.empty();
04281: while (true) {
04282:
04283: yyResult = pBitwiseAndExpression$$Tail1(yyRepetition1);
04284: yyError = yyResult.select(yyError);
04285: if (yyResult.hasValue()) {
04286: final Action<Node> v$4 = yyResult.semanticValue();
04287:
04288: yyRepetition1 = yyResult.index;
04289: yyRepValue1 = new Pair<Action<Node>>(v$4,
04290: yyRepValue1);
04291: continue;
04292: }
04293: break;
04294: }
04295: { // Start scope for v$5.
04296: final Pair<Action<Node>> v$5 = yyRepValue1.reverse();
04297:
04298: yyValue = apply(v$5, v$3, yyStart);
04299:
04300: return new SemanticValue(yyValue, yyRepetition1,
04301: yyError);
04302: } // End scope for v$5.
04303: }
04304:
04305: // Done.
04306: return yyError;
04307: }
04308:
04309: // =========================================================================
04310:
04311: /**
04312: * Parse synthetic nonterminal
04313: * xtc.lang.JavaFive.BitwiseAndExpression$$Tail1.
04314: *
04315: * @param yyStart The index.
04316: * @return The result.
04317: * @throws IOException Signals an I/O error.
04318: */
04319: private Result pBitwiseAndExpression$$Tail1(final int yyStart)
04320: throws IOException {
04321:
04322: Result yyResult;
04323: Action<Node> yyValue;
04324: ParseError yyError = ParseError.DUMMY;
04325:
04326: // Alternative <And>.
04327:
04328: yyResult = pSymbol(yyStart);
04329: yyError = yyResult.select(yyError);
04330: if (yyResult.hasValue("&")) {
04331:
04332: yyResult = pEqualityExpression(yyResult.index);
04333: yyError = yyResult.select(yyError);
04334: if (yyResult.hasValue()) {
04335: final Node v$g$2 = yyResult.semanticValue();
04336:
04337: yyValue = new Action<Node>() {
04338: public Node run(Node v$1) {
04339: return GNode.create("BitwiseAndExpression",
04340: v$1, v$g$2);
04341: }
04342: };
04343:
04344: return yyResult.createValue(yyValue, yyError);
04345: }
04346: }
04347:
04348: // Done.
04349: yyError = yyError.select("bitwise and expression expected",
04350: yyStart);
04351: return yyError;
04352: }
04353:
04354: // =========================================================================
04355:
04356: /**
04357: * Parse nonterminal xtc.lang.JavaFive.EqualityExpression.
04358: *
04359: * @param yyStart The index.
04360: * @return The result.
04361: * @throws IOException Signals an I/O error.
04362: */
04363: private Result pEqualityExpression(final int yyStart)
04364: throws IOException {
04365: Result yyResult;
04366: int yyRepetition1;
04367: Pair<Action<Node>> yyRepValue1;
04368: Node yyValue;
04369: ParseError yyError = ParseError.DUMMY;
04370:
04371: // Alternative <Base>.
04372:
04373: yyResult = pInstanceOfExpression(yyStart);
04374: yyError = yyResult.select(yyError);
04375: if (yyResult.hasValue()) {
04376: final Node v$4 = yyResult.semanticValue();
04377:
04378: yyRepetition1 = yyResult.index;
04379: yyRepValue1 = Pair.empty();
04380: while (true) {
04381:
04382: yyResult = pEqualityExpression$$Tail1(yyRepetition1);
04383: yyError = yyResult.select(yyError);
04384: if (yyResult.hasValue()) {
04385: final Action<Node> v$5 = yyResult.semanticValue();
04386:
04387: yyRepetition1 = yyResult.index;
04388: yyRepValue1 = new Pair<Action<Node>>(v$5,
04389: yyRepValue1);
04390: continue;
04391: }
04392: break;
04393: }
04394: { // Start scope for v$6.
04395: final Pair<Action<Node>> v$6 = yyRepValue1.reverse();
04396:
04397: yyValue = apply(v$6, v$4, yyStart);
04398:
04399: return new SemanticValue(yyValue, yyRepetition1,
04400: yyError);
04401: } // End scope for v$6.
04402: }
04403:
04404: // Done.
04405: return yyError;
04406: }
04407:
04408: // =========================================================================
04409:
04410: /**
04411: * Parse synthetic nonterminal xtc.lang.JavaFive.EqualityExpression$$Tail1.
04412: *
04413: * @param yyStart The index.
04414: * @return The result.
04415: * @throws IOException Signals an I/O error.
04416: */
04417: private Result pEqualityExpression$$Tail1(final int yyStart)
04418: throws IOException {
04419:
04420: Result yyResult;
04421: Action<Node> yyValue;
04422: ParseError yyError = ParseError.DUMMY;
04423:
04424: // Alternative <Recursion>.
04425:
04426: yyResult = pEqualityOperator(yyStart);
04427: yyError = yyResult.select(yyError);
04428: if (yyResult.hasValue()) {
04429: final String v$g$2 = yyResult.semanticValue();
04430:
04431: yyResult = pInstanceOfExpression(yyResult.index);
04432: yyError = yyResult.select(yyError);
04433: if (yyResult.hasValue()) {
04434: final Node v$g$3 = yyResult.semanticValue();
04435:
04436: yyValue = new Action<Node>() {
04437: public Node run(Node v$1) {
04438: return GNode.create("EqualityExpression", v$1,
04439: v$g$2, v$g$3);
04440: }
04441: };
04442:
04443: return yyResult.createValue(yyValue, yyError);
04444: }
04445: }
04446:
04447: // Done.
04448: return yyError;
04449: }
04450:
04451: // =========================================================================
04452:
04453: /**
04454: * Parse nonterminal xtc.lang.JavaFive.EqualityOperator.
04455: *
04456: * @param yyStart The index.
04457: * @return The result.
04458: * @throws IOException Signals an I/O error.
04459: */
04460: private Result pEqualityOperator(final int yyStart)
04461: throws IOException {
04462: Result yyResult;
04463: String yyValue;
04464: ParseError yyError = ParseError.DUMMY;
04465:
04466: // Alternative <Equal>.
04467:
04468: yyResult = pSymbol(yyStart);
04469: yyError = yyResult.select(yyError);
04470: if (yyResult.hasValue("==")) {
04471: yyValue = "==";
04472:
04473: return yyResult.createValue(yyValue, yyError);
04474: }
04475:
04476: // Alternative <NotEqual>.
04477:
04478: yyResult = pSymbol(yyStart);
04479: yyError = yyResult.select(yyError);
04480: if (yyResult.hasValue("!=")) {
04481: yyValue = "!=";
04482:
04483: return yyResult.createValue(yyValue, yyError);
04484: }
04485:
04486: // Done.
04487: yyError = yyError.select("equality operator expected", yyStart);
04488: return yyError;
04489: }
04490:
04491: // =========================================================================
04492:
04493: /**
04494: * Parse nonterminal xtc.lang.JavaFive.InstanceOfExpression.
04495: *
04496: * @param yyStart The index.
04497: * @return The result.
04498: * @throws IOException Signals an I/O error.
04499: */
04500: private Result pInstanceOfExpression(final int yyStart)
04501: throws IOException {
04502: Result yyResult;
04503: int yyBase;
04504: Node yyValue;
04505: ParseError yyError = ParseError.DUMMY;
04506:
04507: // Alternative <Instanceof>.
04508:
04509: yyResult = pRelationalExpression(yyStart);
04510: yyError = yyResult.select(yyError);
04511: if (yyResult.hasValue()) {
04512: final Node v$g$1 = yyResult.semanticValue();
04513:
04514: yyBase = yyResult.index;
04515: yyResult = pWord(yyBase);
04516: yyError = yyResult.select(yyError);
04517: if (yyResult.hasValue("instanceof")) {
04518:
04519: yyResult = pType(yyResult.index);
04520: yyError = yyResult.select(yyError);
04521: if (yyResult.hasValue()) {
04522: final Node v$g$2 = yyResult.semanticValue();
04523:
04524: yyValue = GNode.create("InstanceOfExpression",
04525: v$g$1, v$g$2);
04526: yyValue.setLocation(location(yyStart));
04527:
04528: return yyResult.createValue(yyValue, yyError);
04529: }
04530: } else {
04531: yyError = yyError.select("\"instanceof\" expected",
04532: yyBase);
04533: }
04534: }
04535:
04536: // Alternative <Base>.
04537:
04538: yyResult = pRelationalExpression(yyStart);
04539: yyError = yyResult.select(yyError);
04540: if (yyResult.hasValue()) {
04541: yyValue = yyResult.semanticValue();
04542:
04543: return yyResult.createValue(yyValue, yyError);
04544: }
04545:
04546: // Done.
04547: return yyError;
04548: }
04549:
04550: // =========================================================================
04551:
04552: /**
04553: * Parse nonterminal xtc.lang.JavaFive.RelationalExpression.
04554: *
04555: * @param yyStart The index.
04556: * @return The result.
04557: * @throws IOException Signals an I/O error.
04558: */
04559: private Result pRelationalExpression(final int yyStart)
04560: throws IOException {
04561: JavaFiveParserColumn yyColumn = (JavaFiveParserColumn) column(yyStart);
04562: if (null == yyColumn.chunk2)
04563: yyColumn.chunk2 = new Chunk2();
04564: if (null == yyColumn.chunk2.fRelationalExpression)
04565: yyColumn.chunk2.fRelationalExpression = pRelationalExpression$1(yyStart);
04566: return yyColumn.chunk2.fRelationalExpression;
04567: }
04568:
04569: /** Actually parse xtc.lang.JavaFive.RelationalExpression. */
04570: private Result pRelationalExpression$1(final int yyStart)
04571: throws IOException {
04572:
04573: Result yyResult;
04574: int yyRepetition1;
04575: Pair<Action<Node>> yyRepValue1;
04576: Node yyValue;
04577: ParseError yyError = ParseError.DUMMY;
04578:
04579: // Alternative <Base>.
04580:
04581: yyResult = pShiftExpression(yyStart);
04582: yyError = yyResult.select(yyError);
04583: if (yyResult.hasValue()) {
04584: final Node v$4 = yyResult.semanticValue();
04585:
04586: yyRepetition1 = yyResult.index;
04587: yyRepValue1 = Pair.empty();
04588: while (true) {
04589:
04590: yyResult = pRelationalExpression$$Tail1(yyRepetition1);
04591: yyError = yyResult.select(yyError);
04592: if (yyResult.hasValue()) {
04593: final Action<Node> v$5 = yyResult.semanticValue();
04594:
04595: yyRepetition1 = yyResult.index;
04596: yyRepValue1 = new Pair<Action<Node>>(v$5,
04597: yyRepValue1);
04598: continue;
04599: }
04600: break;
04601: }
04602: { // Start scope for v$6.
04603: final Pair<Action<Node>> v$6 = yyRepValue1.reverse();
04604:
04605: yyValue = apply(v$6, v$4, yyStart);
04606:
04607: return new SemanticValue(yyValue, yyRepetition1,
04608: yyError);
04609: } // End scope for v$6.
04610: }
04611:
04612: // Done.
04613: return yyError;
04614: }
04615:
04616: // =========================================================================
04617:
04618: /**
04619: * Parse synthetic nonterminal
04620: * xtc.lang.JavaFive.RelationalExpression$$Tail1.
04621: *
04622: * @param yyStart The index.
04623: * @return The result.
04624: * @throws IOException Signals an I/O error.
04625: */
04626: private Result pRelationalExpression$$Tail1(final int yyStart)
04627: throws IOException {
04628:
04629: Result yyResult;
04630: Action<Node> yyValue;
04631: ParseError yyError = ParseError.DUMMY;
04632:
04633: // Alternative <Recursion>.
04634:
04635: yyResult = pRelationalOperator(yyStart);
04636: yyError = yyResult.select(yyError);
04637: if (yyResult.hasValue()) {
04638: final String v$g$2 = yyResult.semanticValue();
04639:
04640: yyResult = pShiftExpression(yyResult.index);
04641: yyError = yyResult.select(yyError);
04642: if (yyResult.hasValue()) {
04643: final Node v$g$3 = yyResult.semanticValue();
04644:
04645: yyValue = new Action<Node>() {
04646: public Node run(Node v$1) {
04647: return GNode.create("RelationalExpression",
04648: v$1, v$g$2, v$g$3);
04649: }
04650: };
04651:
04652: return yyResult.createValue(yyValue, yyError);
04653: }
04654: }
04655:
04656: // Done.
04657: return yyError;
04658: }
04659:
04660: // =========================================================================
04661:
04662: /**
04663: * Parse nonterminal xtc.lang.JavaFive.RelationalOperator.
04664: *
04665: * @param yyStart The index.
04666: * @return The result.
04667: * @throws IOException Signals an I/O error.
04668: */
04669: private Result pRelationalOperator(final int yyStart)
04670: throws IOException {
04671: Result yyResult;
04672: String yyValue;
04673: ParseError yyError = ParseError.DUMMY;
04674:
04675: // Alternative <Less>.
04676:
04677: yyResult = pSymbol(yyStart);
04678: yyError = yyResult.select(yyError);
04679: if (yyResult.hasValue("<")) {
04680: yyValue = "<";
04681:
04682: return yyResult.createValue(yyValue, yyError);
04683: }
04684:
04685: // Alternative <Greater>.
04686:
04687: yyResult = pSymbol(yyStart);
04688: yyError = yyResult.select(yyError);
04689: if (yyResult.hasValue(">")) {
04690: yyValue = ">";
04691:
04692: return yyResult.createValue(yyValue, yyError);
04693: }
04694:
04695: // Alternative <LessEqual>.
04696:
04697: yyResult = pSymbol(yyStart);
04698: yyError = yyResult.select(yyError);
04699: if (yyResult.hasValue("<=")) {
04700: yyValue = "<=";
04701:
04702: return yyResult.createValue(yyValue, yyError);
04703: }
04704:
04705: // Alternative <GreaterEqual>.
04706:
04707: yyResult = pSymbol(yyStart);
04708: yyError = yyResult.select(yyError);
04709: if (yyResult.hasValue(">=")) {
04710: yyValue = ">=";
04711:
04712: return yyResult.createValue(yyValue, yyError);
04713: }
04714:
04715: // Done.
04716: yyError = yyError.select("relational operator expected",
04717: yyStart);
04718: return yyError;
04719: }
04720:
04721: // =========================================================================
04722:
04723: /**
04724: * Parse nonterminal xtc.lang.JavaFive.ShiftExpression.
04725: *
04726: * @param yyStart The index.
04727: * @return The result.
04728: * @throws IOException Signals an I/O error.
04729: */
04730: private Result pShiftExpression(final int yyStart)
04731: throws IOException {
04732: Result yyResult;
04733: int yyRepetition1;
04734: Pair<Action<Node>> yyRepValue1;
04735: Node yyValue;
04736: ParseError yyError = ParseError.DUMMY;
04737:
04738: // Alternative <Base>.
04739:
04740: yyResult = pAdditiveExpression(yyStart);
04741: yyError = yyResult.select(yyError);
04742: if (yyResult.hasValue()) {
04743: final Node v$4 = yyResult.semanticValue();
04744:
04745: yyRepetition1 = yyResult.index;
04746: yyRepValue1 = Pair.empty();
04747: while (true) {
04748:
04749: yyResult = pShiftExpression$$Tail1(yyRepetition1);
04750: yyError = yyResult.select(yyError);
04751: if (yyResult.hasValue()) {
04752: final Action<Node> v$5 = yyResult.semanticValue();
04753:
04754: yyRepetition1 = yyResult.index;
04755: yyRepValue1 = new Pair<Action<Node>>(v$5,
04756: yyRepValue1);
04757: continue;
04758: }
04759: break;
04760: }
04761: { // Start scope for v$6.
04762: final Pair<Action<Node>> v$6 = yyRepValue1.reverse();
04763:
04764: yyValue = apply(v$6, v$4, yyStart);
04765:
04766: return new SemanticValue(yyValue, yyRepetition1,
04767: yyError);
04768: } // End scope for v$6.
04769: }
04770:
04771: // Done.
04772: return yyError;
04773: }
04774:
04775: // =========================================================================
04776:
04777: /**
04778: * Parse synthetic nonterminal xtc.lang.JavaFive.ShiftExpression$$Tail1.
04779: *
04780: * @param yyStart The index.
04781: * @return The result.
04782: * @throws IOException Signals an I/O error.
04783: */
04784: private Result pShiftExpression$$Tail1(final int yyStart)
04785: throws IOException {
04786:
04787: Result yyResult;
04788: Action<Node> yyValue;
04789: ParseError yyError = ParseError.DUMMY;
04790:
04791: // Alternative <Recursion>.
04792:
04793: yyResult = pShiftOperator(yyStart);
04794: yyError = yyResult.select(yyError);
04795: if (yyResult.hasValue()) {
04796: final String v$g$2 = yyResult.semanticValue();
04797:
04798: yyResult = pAdditiveExpression(yyResult.index);
04799: yyError = yyResult.select(yyError);
04800: if (yyResult.hasValue()) {
04801: final Node v$g$3 = yyResult.semanticValue();
04802:
04803: yyValue = new Action<Node>() {
04804: public Node run(Node v$1) {
04805: return GNode.create("ShiftExpression", v$1,
04806: v$g$2, v$g$3);
04807: }
04808: };
04809:
04810: return yyResult.createValue(yyValue, yyError);
04811: }
04812: }
04813:
04814: // Done.
04815: return yyError;
04816: }
04817:
04818: // =========================================================================
04819:
04820: /**
04821: * Parse nonterminal xtc.lang.JavaFive.ShiftOperator.
04822: *
04823: * @param yyStart The index.
04824: * @return The result.
04825: * @throws IOException Signals an I/O error.
04826: */
04827: private Result pShiftOperator(final int yyStart) throws IOException {
04828: Result yyResult;
04829: String yyValue;
04830: ParseError yyError = ParseError.DUMMY;
04831:
04832: // Alternative <Left>.
04833:
04834: yyResult = pSymbol(yyStart);
04835: yyError = yyResult.select(yyError);
04836: if (yyResult.hasValue("<<")) {
04837: yyValue = "<<";
04838:
04839: return yyResult.createValue(yyValue, yyError);
04840: }
04841:
04842: // Alternative <Right>.
04843:
04844: yyResult = pSymbol(yyStart);
04845: yyError = yyResult.select(yyError);
04846: if (yyResult.hasValue(">>")) {
04847: yyValue = ">>";
04848:
04849: return yyResult.createValue(yyValue, yyError);
04850: }
04851:
04852: // Alternative <UnsignedRight>.
04853:
04854: yyResult = pSymbol(yyStart);
04855: yyError = yyResult.select(yyError);
04856: if (yyResult.hasValue(">>>")) {
04857: yyValue = ">>>";
04858:
04859: return yyResult.createValue(yyValue, yyError);
04860: }
04861:
04862: // Done.
04863: yyError = yyError.select("shift operator expected", yyStart);
04864: return yyError;
04865: }
04866:
04867: // =========================================================================
04868:
04869: /**
04870: * Parse nonterminal xtc.lang.JavaFive.AdditiveExpression.
04871: *
04872: * @param yyStart The index.
04873: * @return The result.
04874: * @throws IOException Signals an I/O error.
04875: */
04876: private Result pAdditiveExpression(final int yyStart)
04877: throws IOException {
04878: Result yyResult;
04879: int yyRepetition1;
04880: Pair<Action<Node>> yyRepValue1;
04881: Node yyValue;
04882: ParseError yyError = ParseError.DUMMY;
04883:
04884: // Alternative <Base>.
04885:
04886: yyResult = pMultiplicativeExpression(yyStart);
04887: yyError = yyResult.select(yyError);
04888: if (yyResult.hasValue()) {
04889: final Node v$4 = yyResult.semanticValue();
04890:
04891: yyRepetition1 = yyResult.index;
04892: yyRepValue1 = Pair.empty();
04893: while (true) {
04894:
04895: yyResult = pAdditiveExpression$$Tail1(yyRepetition1);
04896: yyError = yyResult.select(yyError);
04897: if (yyResult.hasValue()) {
04898: final Action<Node> v$5 = yyResult.semanticValue();
04899:
04900: yyRepetition1 = yyResult.index;
04901: yyRepValue1 = new Pair<Action<Node>>(v$5,
04902: yyRepValue1);
04903: continue;
04904: }
04905: break;
04906: }
04907: { // Start scope for v$6.
04908: final Pair<Action<Node>> v$6 = yyRepValue1.reverse();
04909:
04910: yyValue = apply(v$6, v$4, yyStart);
04911:
04912: return new SemanticValue(yyValue, yyRepetition1,
04913: yyError);
04914: } // End scope for v$6.
04915: }
04916:
04917: // Done.
04918: return yyError;
04919: }
04920:
04921: // =========================================================================
04922:
04923: /**
04924: * Parse synthetic nonterminal xtc.lang.JavaFive.AdditiveExpression$$Tail1.
04925: *
04926: * @param yyStart The index.
04927: * @return The result.
04928: * @throws IOException Signals an I/O error.
04929: */
04930: private Result pAdditiveExpression$$Tail1(final int yyStart)
04931: throws IOException {
04932:
04933: Result yyResult;
04934: Action<Node> yyValue;
04935: ParseError yyError = ParseError.DUMMY;
04936:
04937: // Alternative <Recursion>.
04938:
04939: yyResult = pAdditiveOperator(yyStart);
04940: yyError = yyResult.select(yyError);
04941: if (yyResult.hasValue()) {
04942: final String v$g$2 = yyResult.semanticValue();
04943:
04944: yyResult = pMultiplicativeExpression(yyResult.index);
04945: yyError = yyResult.select(yyError);
04946: if (yyResult.hasValue()) {
04947: final Node v$g$3 = yyResult.semanticValue();
04948:
04949: yyValue = new Action<Node>() {
04950: public Node run(Node v$1) {
04951: return GNode.create("AdditiveExpression", v$1,
04952: v$g$2, v$g$3);
04953: }
04954: };
04955:
04956: return yyResult.createValue(yyValue, yyError);
04957: }
04958: }
04959:
04960: // Done.
04961: return yyError;
04962: }
04963:
04964: // =========================================================================
04965:
04966: /**
04967: * Parse nonterminal xtc.lang.JavaFive.AdditiveOperator.
04968: *
04969: * @param yyStart The index.
04970: * @return The result.
04971: * @throws IOException Signals an I/O error.
04972: */
04973: private Result pAdditiveOperator(final int yyStart)
04974: throws IOException {
04975: Result yyResult;
04976: String yyValue;
04977: ParseError yyError = ParseError.DUMMY;
04978:
04979: // Alternative <Plus>.
04980:
04981: yyResult = pSymbol(yyStart);
04982: yyError = yyResult.select(yyError);
04983: if (yyResult.hasValue("+")) {
04984: yyValue = "+";
04985:
04986: return yyResult.createValue(yyValue, yyError);
04987: }
04988:
04989: // Alternative <Minus>.
04990:
04991: yyResult = pSymbol(yyStart);
04992: yyError = yyResult.select(yyError);
04993: if (yyResult.hasValue("-")) {
04994: yyValue = "-";
04995:
04996: return yyResult.createValue(yyValue, yyError);
04997: }
04998:
04999: // Done.
05000: yyError = yyError.select("additive operator expected", yyStart);
05001: return yyError;
05002: }
05003:
05004: // =========================================================================
05005:
05006: /**
05007: * Parse nonterminal xtc.lang.JavaFive.MultiplicativeExpression.
05008: *
05009: * @param yyStart The index.
05010: * @return The result.
05011: * @throws IOException Signals an I/O error.
05012: */
05013: private Result pMultiplicativeExpression(final int yyStart)
05014: throws IOException {
05015:
05016: Result yyResult;
05017: int yyRepetition1;
05018: Pair<Action<Node>> yyRepValue1;
05019: Node yyValue;
05020: ParseError yyError = ParseError.DUMMY;
05021:
05022: // Alternative <Base>.
05023:
05024: yyResult = pUnaryExpression(yyStart);
05025: yyError = yyResult.select(yyError);
05026: if (yyResult.hasValue()) {
05027: final Node v$4 = yyResult.semanticValue();
05028:
05029: yyRepetition1 = yyResult.index;
05030: yyRepValue1 = Pair.empty();
05031: while (true) {
05032:
05033: yyResult = pMultiplicativeExpression$$Tail1(yyRepetition1);
05034: yyError = yyResult.select(yyError);
05035: if (yyResult.hasValue()) {
05036: final Action<Node> v$5 = yyResult.semanticValue();
05037:
05038: yyRepetition1 = yyResult.index;
05039: yyRepValue1 = new Pair<Action<Node>>(v$5,
05040: yyRepValue1);
05041: continue;
05042: }
05043: break;
05044: }
05045: { // Start scope for v$6.
05046: final Pair<Action<Node>> v$6 = yyRepValue1.reverse();
05047:
05048: yyValue = apply(v$6, v$4, yyStart);
05049:
05050: return new SemanticValue(yyValue, yyRepetition1,
05051: yyError);
05052: } // End scope for v$6.
05053: }
05054:
05055: // Done.
05056: return yyError;
05057: }
05058:
05059: // =========================================================================
05060:
05061: /**
05062: * Parse synthetic nonterminal
05063: * xtc.lang.JavaFive.MultiplicativeExpression$$Tail1.
05064: *
05065: * @param yyStart The index.
05066: * @return The result.
05067: * @throws IOException Signals an I/O error.
05068: */
05069: private Result pMultiplicativeExpression$$Tail1(final int yyStart)
05070: throws IOException {
05071:
05072: Result yyResult;
05073: Action<Node> yyValue;
05074: ParseError yyError = ParseError.DUMMY;
05075:
05076: // Alternative <Times>.
05077:
05078: yyResult = pMultiplicativeOperator(yyStart);
05079: yyError = yyResult.select(yyError);
05080: if (yyResult.hasValue()) {
05081: final String v$g$2 = yyResult.semanticValue();
05082:
05083: yyResult = pUnaryExpression(yyResult.index);
05084: yyError = yyResult.select(yyError);
05085: if (yyResult.hasValue()) {
05086: final Node v$g$3 = yyResult.semanticValue();
05087:
05088: yyValue = new Action<Node>() {
05089: public Node run(Node v$1) {
05090: return GNode.create("MultiplicativeExpression",
05091: v$1, v$g$2, v$g$3);
05092: }
05093: };
05094:
05095: return yyResult.createValue(yyValue, yyError);
05096: }
05097: }
05098:
05099: // Done.
05100: return yyError;
05101: }
05102:
05103: // =========================================================================
05104:
05105: /**
05106: * Parse nonterminal xtc.lang.JavaFive.MultiplicativeOperator.
05107: *
05108: * @param yyStart The index.
05109: * @return The result.
05110: * @throws IOException Signals an I/O error.
05111: */
05112: private Result pMultiplicativeOperator(final int yyStart)
05113: throws IOException {
05114:
05115: Result yyResult;
05116: String yyValue;
05117: ParseError yyError = ParseError.DUMMY;
05118:
05119: // Alternative <Times>.
05120:
05121: yyResult = pSymbol(yyStart);
05122: yyError = yyResult.select(yyError);
05123: if (yyResult.hasValue("*")) {
05124: yyValue = "*";
05125:
05126: return yyResult.createValue(yyValue, yyError);
05127: }
05128:
05129: // Alternative <Over>.
05130:
05131: yyResult = pSymbol(yyStart);
05132: yyError = yyResult.select(yyError);
05133: if (yyResult.hasValue("/")) {
05134: yyValue = "/";
05135:
05136: return yyResult.createValue(yyValue, yyError);
05137: }
05138:
05139: // Alternative <Modulo>.
05140:
05141: yyResult = pSymbol(yyStart);
05142: yyError = yyResult.select(yyError);
05143: if (yyResult.hasValue("%")) {
05144: yyValue = "%";
05145:
05146: return yyResult.createValue(yyValue, yyError);
05147: }
05148:
05149: // Done.
05150: yyError = yyError.select("multiplicative operator expected",
05151: yyStart);
05152: return yyError;
05153: }
05154:
05155: // =========================================================================
05156:
05157: /**
05158: * Parse nonterminal xtc.lang.JavaFive.UnaryExpression.
05159: *
05160: * @param yyStart The index.
05161: * @return The result.
05162: * @throws IOException Signals an I/O error.
05163: */
05164: private Result pUnaryExpression(final int yyStart)
05165: throws IOException {
05166: Result yyResult;
05167: Node yyValue;
05168: ParseError yyError = ParseError.DUMMY;
05169:
05170: // Alternative <Plus>.
05171:
05172: yyResult = pSymbol(yyStart);
05173: yyError = yyResult.select(yyError);
05174: if (yyResult.hasValue("+")) {
05175: final String v$g$1 = "+";
05176:
05177: yyResult = pUnaryExpression(yyResult.index);
05178: yyError = yyResult.select(yyError);
05179: if (yyResult.hasValue()) {
05180: final Node v$g$2 = yyResult.semanticValue();
05181:
05182: yyValue = GNode.create("UnaryExpression", v$g$1, v$g$2);
05183: yyValue.setLocation(location(yyStart));
05184:
05185: return yyResult.createValue(yyValue, yyError);
05186: }
05187: }
05188:
05189: // Alternative <Minus>.
05190:
05191: yyResult = pSymbol(yyStart);
05192: yyError = yyResult.select(yyError);
05193: if (yyResult.hasValue("-")) {
05194: final String v$g$3 = "-";
05195:
05196: yyResult = pUnaryExpression(yyResult.index);
05197: yyError = yyResult.select(yyError);
05198: if (yyResult.hasValue()) {
05199: final Node v$g$4 = yyResult.semanticValue();
05200:
05201: yyValue = GNode.create("UnaryExpression", v$g$3, v$g$4);
05202: yyValue.setLocation(location(yyStart));
05203:
05204: return yyResult.createValue(yyValue, yyError);
05205: }
05206: }
05207:
05208: // Alternative <Increment>.
05209:
05210: yyResult = pSymbol(yyStart);
05211: yyError = yyResult.select(yyError);
05212: if (yyResult.hasValue("++")) {
05213: final String v$g$5 = "++";
05214:
05215: yyResult = pUnaryExpression(yyResult.index);
05216: yyError = yyResult.select(yyError);
05217: if (yyResult.hasValue()) {
05218: final Node v$g$6 = yyResult.semanticValue();
05219:
05220: yyValue = GNode.create("UnaryExpression", v$g$5, v$g$6);
05221: yyValue.setLocation(location(yyStart));
05222:
05223: return yyResult.createValue(yyValue, yyError);
05224: }
05225: }
05226:
05227: // Alternative <Decrement>.
05228:
05229: yyResult = pSymbol(yyStart);
05230: yyError = yyResult.select(yyError);
05231: if (yyResult.hasValue("--")) {
05232: final String v$g$7 = "--";
05233:
05234: yyResult = pUnaryExpression(yyResult.index);
05235: yyError = yyResult.select(yyError);
05236: if (yyResult.hasValue()) {
05237: final Node v$g$8 = yyResult.semanticValue();
05238:
05239: yyValue = GNode.create("UnaryExpression", v$g$7, v$g$8);
05240: yyValue.setLocation(location(yyStart));
05241:
05242: return yyResult.createValue(yyValue, yyError);
05243: }
05244: }
05245:
05246: // Alternative <Base>.
05247:
05248: yyResult = pUnaryExpressionNotPlusMinus(yyStart);
05249: yyError = yyResult.select(yyError);
05250: if (yyResult.hasValue()) {
05251: yyValue = yyResult.semanticValue();
05252:
05253: return yyResult.createValue(yyValue, yyError);
05254: }
05255:
05256: // Done.
05257: yyError = yyError.select("unary expression expected", yyStart);
05258: return yyError;
05259: }
05260:
05261: // =========================================================================
05262:
05263: /**
05264: * Parse nonterminal xtc.lang.JavaFive.UnaryExpressionNotPlusMinus.
05265: *
05266: * @param yyStart The index.
05267: * @return The result.
05268: * @throws IOException Signals an I/O error.
05269: */
05270: private Result pUnaryExpressionNotPlusMinus(final int yyStart)
05271: throws IOException {
05272:
05273: Result yyResult;
05274: int yyBase;
05275: int yyOption1;
05276: Node yyOpValue1;
05277: Node yyValue;
05278: ParseError yyError = ParseError.DUMMY;
05279:
05280: // Alternative 1.
05281:
05282: yyResult = pSymbol(yyStart);
05283: yyError = yyResult.select(yyError);
05284: if (yyResult.hasValue("~")) {
05285:
05286: yyResult = pUnaryExpression(yyResult.index);
05287: yyError = yyResult.select(yyError);
05288: if (yyResult.hasValue()) {
05289: final Node v$g$1 = yyResult.semanticValue();
05290:
05291: yyValue = GNode.create("BitwiseNegationExpression",
05292: v$g$1);
05293: yyValue.setLocation(location(yyStart));
05294:
05295: return yyResult.createValue(yyValue, yyError);
05296: }
05297: }
05298:
05299: // Alternative 2.
05300:
05301: yyResult = pSymbol(yyStart);
05302: yyError = yyResult.select(yyError);
05303: if (yyResult.hasValue("!")) {
05304:
05305: yyResult = pUnaryExpression(yyResult.index);
05306: yyError = yyResult.select(yyError);
05307: if (yyResult.hasValue()) {
05308: final Node v$g$1 = yyResult.semanticValue();
05309:
05310: yyValue = GNode.create("LogicalNegationExpression",
05311: v$g$1);
05312: yyValue.setLocation(location(yyStart));
05313:
05314: return yyResult.createValue(yyValue, yyError);
05315: }
05316: }
05317:
05318: // Alternative 3.
05319:
05320: yyResult = pSymbol(yyStart);
05321: yyError = yyResult.select(yyError);
05322: if (yyResult.hasValue("(")) {
05323:
05324: final int yyChoice1 = yyResult.index;
05325:
05326: // Nested alternative 1.
05327:
05328: yyResult = pPrimitiveType(yyChoice1);
05329: yyError = yyResult.select(yyError);
05330: if (yyResult.hasValue()) {
05331: final Node v$g$1 = yyResult.semanticValue();
05332:
05333: yyOption1 = yyResult.index;
05334: yyOpValue1 = null;
05335:
05336: yyResult = pDimensions(yyOption1);
05337: yyError = yyResult.select(yyError);
05338: if (yyResult.hasValue()) {
05339: final Node v$el$1 = yyResult.semanticValue();
05340:
05341: yyOption1 = yyResult.index;
05342: yyOpValue1 = v$el$1;
05343: }
05344: { // Start scope for v$g$2.
05345: final Node v$g$2 = yyOpValue1;
05346:
05347: yyBase = yyOption1;
05348: yyResult = pSymbol(yyBase);
05349: yyError = yyResult.select(yyError);
05350: if (yyResult.hasValue(")")) {
05351:
05352: yyResult = pUnaryExpression(yyResult.index);
05353: yyError = yyResult.select(yyError);
05354: if (yyResult.hasValue()) {
05355: final Node v$g$3 = yyResult.semanticValue();
05356:
05357: yyValue = GNode.create(
05358: "BasicCastExpression", v$g$1,
05359: v$g$2, v$g$3);
05360: yyValue.setLocation(location(yyStart));
05361:
05362: return yyResult.createValue(yyValue,
05363: yyError);
05364: }
05365: } else {
05366: yyError = yyError.select("\")\" expected",
05367: yyBase);
05368: }
05369: } // End scope for v$g$2.
05370: }
05371:
05372: // Nested alternative 2.
05373:
05374: yyResult = pType(yyChoice1);
05375: yyError = yyResult.select(yyError);
05376: if (yyResult.hasValue()) {
05377: final Node v$g$1 = yyResult.semanticValue();
05378:
05379: yyBase = yyResult.index;
05380: yyResult = pSymbol(yyBase);
05381: yyError = yyResult.select(yyError);
05382: if (yyResult.hasValue(")")) {
05383:
05384: yyResult = pUnaryExpressionNotPlusMinus(yyResult.index);
05385: yyError = yyResult.select(yyError);
05386: if (yyResult.hasValue()) {
05387: final Node v$g$2 = yyResult.semanticValue();
05388:
05389: yyValue = GNode.create("CastExpression", v$g$1,
05390: v$g$2);
05391: yyValue.setLocation(location(yyStart));
05392:
05393: return yyResult.createValue(yyValue, yyError);
05394: }
05395: } else {
05396: yyError = yyError.select("\")\" expected", yyBase);
05397: }
05398: }
05399: }
05400:
05401: // Alternative <Base>.
05402:
05403: yyResult = pPostfixExpression(yyStart);
05404: yyError = yyResult.select(yyError);
05405: if (yyResult.hasValue()) {
05406: yyValue = yyResult.semanticValue();
05407:
05408: return yyResult.createValue(yyValue, yyError);
05409: }
05410:
05411: // Done.
05412: yyError = yyError.select(
05413: "unary expression not plus minus expected", yyStart);
05414: return yyError;
05415: }
05416:
05417: // =========================================================================
05418:
05419: /**
05420: * Parse nonterminal xtc.lang.JavaFive.PostfixExpression.
05421: *
05422: * @param yyStart The index.
05423: * @return The result.
05424: * @throws IOException Signals an I/O error.
05425: */
05426: private Result pPostfixExpression(final int yyStart)
05427: throws IOException {
05428: Result yyResult;
05429: int yyRepetition1;
05430: Pair<Action<Node>> yyRepValue1;
05431: Node yyValue;
05432: ParseError yyError = ParseError.DUMMY;
05433:
05434: // Alternative <Base>.
05435:
05436: yyResult = pPrimaryExpression(yyStart);
05437: yyError = yyResult.select(yyError);
05438: if (yyResult.hasValue()) {
05439: final Node v$g$16 = yyResult.semanticValue();
05440:
05441: yyRepetition1 = yyResult.index;
05442: yyRepValue1 = Pair.empty();
05443: while (true) {
05444:
05445: yyResult = pPostfixExpression$$Tail1(yyRepetition1);
05446: yyError = yyResult.select(yyError);
05447: if (yyResult.hasValue()) {
05448: final Action<Node> v$17 = yyResult.semanticValue();
05449:
05450: yyRepetition1 = yyResult.index;
05451: yyRepValue1 = new Pair<Action<Node>>(v$17,
05452: yyRepValue1);
05453: continue;
05454: }
05455: break;
05456: }
05457: { // Start scope for v$18.
05458: final Pair<Action<Node>> v$18 = yyRepValue1.reverse();
05459:
05460: yyValue = apply(v$18, v$g$16, yyStart);
05461:
05462: return new SemanticValue(yyValue, yyRepetition1,
05463: yyError);
05464: } // End scope for v$18.
05465: }
05466:
05467: // Done.
05468: return yyError;
05469: }
05470:
05471: // =========================================================================
05472:
05473: /**
05474: * Parse synthetic nonterminal xtc.lang.JavaFive.PostfixExpression$$Tail1.
05475: *
05476: * @param yyStart The index.
05477: * @return The result.
05478: * @throws IOException Signals an I/O error.
05479: */
05480: private Result pPostfixExpression$$Tail1(final int yyStart)
05481: throws IOException {
05482:
05483: Result yyResult;
05484: int yyBase;
05485: int yyOption1;
05486: Node yyOpValue1;
05487: Action<Node> yyValue;
05488: ParseError yyError = ParseError.DUMMY;
05489:
05490: // Alternative 1.
05491:
05492: yyResult = pSymbol(yyStart);
05493: yyError = yyResult.select(yyError);
05494: if (yyResult.hasValue(".")) {
05495:
05496: final int yyChoice1 = yyResult.index;
05497:
05498: // Nested alternative 1.
05499:
05500: yyOption1 = yyChoice1;
05501: yyOpValue1 = null;
05502:
05503: yyResult = pTypeArguments(yyOption1);
05504: yyError = yyResult.select(yyError);
05505: if (yyResult.hasValue()) {
05506: final Node v$el$1 = yyResult.semanticValue();
05507:
05508: yyOption1 = yyResult.index;
05509: yyOpValue1 = v$el$1;
05510: }
05511: { // Start scope for v$g$2.
05512: final Node v$g$2 = yyOpValue1;
05513:
05514: yyResult = pIdentifier(yyOption1);
05515: yyError = yyResult.select(yyError);
05516: if (yyResult.hasValue()) {
05517: final String v$g$3 = yyResult.semanticValue();
05518:
05519: yyResult = pArguments(yyResult.index);
05520: yyError = yyResult.select(yyError);
05521: if (yyResult.hasValue()) {
05522: final Node v$g$4 = yyResult.semanticValue();
05523:
05524: yyValue = new Action<Node>() {
05525: public Node run(Node v$1) {
05526: return GNode.create("CallExpression",
05527: v$1, v$g$2, v$g$3, v$g$4);
05528: }
05529: };
05530:
05531: return yyResult.createValue(yyValue, yyError);
05532: }
05533: }
05534: } // End scope for v$g$2.
05535:
05536: // Nested alternative 2.
05537:
05538: yyBase = yyChoice1;
05539: yyResult = pWord(yyBase);
05540: yyError = yyResult.select(yyError);
05541: if (yyResult.hasValue("super")) {
05542: final String v$g$6 = "super";
05543:
05544: yyResult = pArguments(yyResult.index);
05545: yyError = yyResult.select(yyError);
05546: if (yyResult.hasValue()) {
05547: final Node v$g$7 = yyResult.semanticValue();
05548:
05549: yyValue = new Action<Node>() {
05550: public Node run(Node v$1) {
05551: return GNode.create("CallExpression", v$1,
05552: null, v$g$6, v$g$7);
05553: }
05554: };
05555:
05556: return yyResult.createValue(yyValue, yyError);
05557: }
05558: } else {
05559: yyError = yyError.select("\"super\" expected", yyBase);
05560: }
05561:
05562: // Nested alternative 3.
05563:
05564: yyBase = yyChoice1;
05565: yyResult = pWord(yyBase);
05566: yyError = yyResult.select(yyError);
05567: if (yyResult.hasValue("super")) {
05568:
05569: yyValue = new Action<Node>() {
05570: public Node run(Node v$1) {
05571: return GNode.create("SuperExpression", v$1);
05572: }
05573: };
05574:
05575: return yyResult.createValue(yyValue, yyError);
05576: } else {
05577: yyError = yyError.select("\"super\" expected", yyBase);
05578: }
05579:
05580: // Nested alternative 4.
05581:
05582: yyResult = pIdentifier(yyChoice1);
05583: yyError = yyResult.select(yyError);
05584: if (yyResult.hasValue()) {
05585: final String v$g$8 = yyResult.semanticValue();
05586:
05587: yyValue = new Action<Node>() {
05588: public Node run(Node v$1) {
05589: return GNode.create("SelectionExpression", v$1,
05590: v$g$8);
05591: }
05592: };
05593:
05594: return yyResult.createValue(yyValue, yyError);
05595: }
05596: }
05597:
05598: // Alternative 2.
05599:
05600: yyResult = pSymbol(yyStart);
05601: yyError = yyResult.select(yyError);
05602: if (yyResult.hasValue("[")) {
05603:
05604: yyResult = pExpression(yyResult.index);
05605: yyError = yyResult.select(yyError);
05606: if (yyResult.hasValue()) {
05607: final Node v$g$9 = yyResult.semanticValue();
05608:
05609: yyBase = yyResult.index;
05610: yyResult = pSymbol(yyBase);
05611: yyError = yyResult.select(yyError);
05612: if (yyResult.hasValue("]")) {
05613:
05614: yyValue = new Action<Node>() {
05615: public Node run(Node v$1) {
05616: return GNode.create("SubscriptExpression",
05617: v$1, v$g$9);
05618: }
05619: };
05620:
05621: return yyResult.createValue(yyValue, yyError);
05622: } else {
05623: yyError = yyError.select("\"]\" expected", yyBase);
05624: }
05625: }
05626: }
05627:
05628: // Alternative 3.
05629:
05630: yyResult = pSymbol(yyStart);
05631: yyError = yyResult.select(yyError);
05632: if (yyResult.hasValue("++")) {
05633: final String v$g$10 = "++";
05634:
05635: yyValue = new Action<Node>() {
05636: public Node run(Node v$1) {
05637: return GNode.create("PostfixExpression", v$1,
05638: v$g$10);
05639: }
05640: };
05641:
05642: return yyResult.createValue(yyValue, yyError);
05643: }
05644:
05645: // Alternative 4.
05646:
05647: yyResult = pSymbol(yyStart);
05648: yyError = yyResult.select(yyError);
05649: if (yyResult.hasValue("--")) {
05650: final String v$g$11 = "--";
05651:
05652: yyValue = new Action<Node>() {
05653: public Node run(Node v$1) {
05654: return GNode.create("PostfixExpression", v$1,
05655: v$g$11);
05656: }
05657: };
05658:
05659: return yyResult.createValue(yyValue, yyError);
05660: }
05661:
05662: // Alternative 5.
05663:
05664: yyResult = pSymbol(yyStart);
05665: yyError = yyResult.select(yyError);
05666: if (yyResult.hasValue(".")) {
05667:
05668: yyBase = yyResult.index;
05669: yyResult = pWord(yyBase);
05670: yyError = yyResult.select(yyError);
05671: if (yyResult.hasValue("new")) {
05672:
05673: yyOption1 = yyResult.index;
05674: yyOpValue1 = null;
05675:
05676: yyResult = pTypeArguments(yyOption1);
05677: yyError = yyResult.select(yyError);
05678: if (yyResult.hasValue()) {
05679: final Node v$el$2 = yyResult.semanticValue();
05680:
05681: yyOption1 = yyResult.index;
05682: yyOpValue1 = v$el$2;
05683: }
05684: { // Start scope for v$g$12.
05685: final Node v$g$12 = yyOpValue1;
05686:
05687: yyResult = pTypeName(yyOption1);
05688: yyError = yyResult.select(yyError);
05689: if (yyResult.hasValue()) {
05690: final Node v$g$13 = yyResult.semanticValue();
05691:
05692: yyResult = pArguments(yyResult.index);
05693: yyError = yyResult.select(yyError);
05694: if (yyResult.hasValue()) {
05695: final Node v$g$14 = yyResult
05696: .semanticValue();
05697:
05698: yyOption1 = yyResult.index;
05699: yyOpValue1 = null;
05700:
05701: yyResult = pClassBody(yyOption1);
05702: yyError = yyResult.select(yyError);
05703: if (yyResult.hasValue()) {
05704: final Node v$el$3 = yyResult
05705: .semanticValue();
05706:
05707: yyOption1 = yyResult.index;
05708: yyOpValue1 = v$el$3;
05709: }
05710: { // Start scope for v$g$15.
05711: final Node v$g$15 = yyOpValue1;
05712:
05713: yyValue = new Action<Node>() {
05714: public Node run(Node v$1) {
05715: return GNode.create(
05716: "NewClassExpression",
05717: v$1, v$g$12, v$g$13,
05718: v$g$14, v$g$15);
05719: }
05720: };
05721:
05722: return new SemanticValue(yyValue,
05723: yyOption1, yyError);
05724: } // End scope for v$g$15.
05725: }
05726: }
05727: } // End scope for v$g$12.
05728: } else {
05729: yyError = yyError.select("\"new\" expected", yyBase);
05730: }
05731: }
05732:
05733: // Done.
05734: yyError = yyError
05735: .select("postfix expression expected", yyStart);
05736: return yyError;
05737: }
05738:
05739: // =========================================================================
05740:
05741: /**
05742: * Parse nonterminal xtc.lang.JavaFive.PrimaryExpression.
05743: *
05744: * @param yyStart The index.
05745: * @return The result.
05746: * @throws IOException Signals an I/O error.
05747: */
05748: private Result pPrimaryExpression(final int yyStart)
05749: throws IOException {
05750: Result yyResult;
05751: int yyBase;
05752: int yyOption1;
05753: Node yyOpValue1;
05754: Node yyValue;
05755: ParseError yyError = ParseError.DUMMY;
05756:
05757: // Alternative <Literal>.
05758:
05759: yyResult = pLiteral(yyStart);
05760: yyError = yyResult.select(yyError);
05761: if (yyResult.hasValue()) {
05762: yyValue = yyResult.semanticValue();
05763:
05764: return yyResult.createValue(yyValue, yyError);
05765: }
05766:
05767: // Alternative <Expression>.
05768:
05769: yyOption1 = yyStart;
05770: yyOpValue1 = null;
05771:
05772: yyResult = pTypeArguments(yyOption1);
05773: yyError = yyResult.select(yyError);
05774: if (yyResult.hasValue()) {
05775: final Node v$el$1 = yyResult.semanticValue();
05776:
05777: yyOption1 = yyResult.index;
05778: yyOpValue1 = v$el$1;
05779: }
05780: { // Start scope for v$g$2.
05781: final Node v$g$2 = yyOpValue1;
05782:
05783: yyResult = pIdentifier(yyOption1);
05784: yyError = yyResult.select(yyError);
05785: if (yyResult.hasValue()) {
05786: final String v$g$3 = yyResult.semanticValue();
05787:
05788: yyResult = pArguments(yyResult.index);
05789: yyError = yyResult.select(yyError);
05790: if (yyResult.hasValue()) {
05791: final Node v$g$4 = yyResult.semanticValue();
05792:
05793: yyValue = GNode.create("CallExpression", null,
05794: v$g$2, v$g$3, v$g$4);
05795: yyValue.setLocation(location(yyStart));
05796:
05797: return yyResult.createValue(yyValue, yyError);
05798: }
05799: }
05800: } // End scope for v$g$2.
05801:
05802: // Alternative <Expression>.
05803:
05804: yyResult = pResultType(yyStart);
05805: yyError = yyResult.select(yyError);
05806: if (yyResult.hasValue()) {
05807: final Node v$g$1 = yyResult.semanticValue();
05808:
05809: yyBase = yyResult.index;
05810: yyResult = pSymbol(yyBase);
05811: yyError = yyResult.select(yyError);
05812: if (yyResult.hasValue(".")) {
05813:
05814: yyBase = yyResult.index;
05815: yyResult = pWord(yyBase);
05816: yyError = yyResult.select(yyError);
05817: if (yyResult.hasValue("class")) {
05818:
05819: yyValue = GNode.create("ClassLiteralExpression",
05820: v$g$1);
05821: yyValue.setLocation(location(yyStart));
05822:
05823: return yyResult.createValue(yyValue, yyError);
05824: } else {
05825: yyError = yyError.select("\"class\" expected",
05826: yyBase);
05827: }
05828: } else {
05829: yyError = yyError.select("\".\" expected", yyBase);
05830: }
05831: }
05832:
05833: // Alternative <Expression>.
05834:
05835: yyResult = pWord(yyStart);
05836: yyError = yyResult.select(yyError);
05837: if (yyResult.hasValue("this")) {
05838: final String v$g$3 = "this";
05839:
05840: yyResult = pArguments(yyResult.index);
05841: yyError = yyResult.select(yyError);
05842: if (yyResult.hasValue()) {
05843: final Node v$g$4 = yyResult.semanticValue();
05844:
05845: yyValue = GNode.create("CallExpression", null, null,
05846: v$g$3, v$g$4);
05847: yyValue.setLocation(location(yyStart));
05848:
05849: return yyResult.createValue(yyValue, yyError);
05850: }
05851: }
05852:
05853: // Alternative <Expression>.
05854:
05855: yyOption1 = yyStart;
05856: yyOpValue1 = null;
05857:
05858: yyResult = pQualifiedIdentifier(yyOption1);
05859: yyError = yyResult.select(yyError);
05860: if (yyResult.hasValue()) {
05861: final Node v$el$1 = yyResult.semanticValue();
05862:
05863: yyBase = yyResult.index;
05864: yyResult = pSymbol(yyBase);
05865: yyError = yyResult.select(yyError);
05866: if (yyResult.hasValue(".")) {
05867:
05868: yyOption1 = yyResult.index;
05869: yyOpValue1 = v$el$1;
05870: } else {
05871: yyError = yyError.select("\".\" expected", yyBase);
05872: }
05873: }
05874: { // Start scope for v$g$1.
05875: final Node v$g$1 = yyOpValue1;
05876:
05877: yyBase = yyOption1;
05878: yyResult = pWord(yyBase);
05879: yyError = yyResult.select(yyError);
05880: if (yyResult.hasValue("this")) {
05881:
05882: yyValue = GNode.create("ThisExpression", v$g$1);
05883: yyValue.setLocation(location(yyStart));
05884:
05885: return yyResult.createValue(yyValue, yyError);
05886: } else {
05887: yyError = yyError.select("\"this\" expected", yyBase);
05888: }
05889: } // End scope for v$g$1.
05890:
05891: // Alternative 6.
05892: { // Start scope for nested choice.
05893:
05894: final int yyChoice1 = yyStart;
05895:
05896: // Nested alternative 1.
05897:
05898: yyResult = pWord(yyChoice1);
05899: yyError = yyResult.select(yyError);
05900: if (yyResult.hasValue("super")) {
05901: final String v$g$3 = "super";
05902:
05903: yyResult = pArguments(yyResult.index);
05904: yyError = yyResult.select(yyError);
05905: if (yyResult.hasValue()) {
05906: final Node v$g$4 = yyResult.semanticValue();
05907:
05908: yyValue = GNode.create("CallExpression", null,
05909: null, v$g$3, v$g$4);
05910: yyValue.setLocation(location(yyStart));
05911:
05912: return yyResult.createValue(yyValue, yyError);
05913: }
05914: }
05915:
05916: // Nested alternative 2.
05917:
05918: yyBase = yyChoice1;
05919: yyResult = pWord(yyBase);
05920: yyError = yyResult.select(yyError);
05921: if (yyResult.hasValue("super")) {
05922:
05923: yyValue = GNode.create("SuperExpression", null);
05924: yyValue.setLocation(location(yyStart));
05925:
05926: return yyResult.createValue(yyValue, yyError);
05927: } else {
05928: yyError = yyError.select("\"super\" expected", yyBase);
05929: }
05930: } // End scope for nested choice.
05931:
05932: // Alternative 7.
05933:
05934: yyResult = pIdentifier(yyStart);
05935: yyError = yyResult.select(yyError);
05936: if (yyResult.hasValue()) {
05937: final String v$g$1 = yyResult.semanticValue();
05938:
05939: yyValue = GNode.create("PrimaryIdentifier", v$g$1);
05940: yyValue.setLocation(location(yyStart));
05941:
05942: return yyResult.createValue(yyValue, yyError);
05943: }
05944:
05945: // Alternative <Expression>.
05946:
05947: yyResult = pWord(yyStart);
05948: yyError = yyResult.select(yyError);
05949: if (yyResult.hasValue("new")) {
05950:
05951: yyOption1 = yyResult.index;
05952: yyOpValue1 = null;
05953:
05954: yyResult = pTypeArguments(yyOption1);
05955: yyError = yyResult.select(yyError);
05956: if (yyResult.hasValue()) {
05957: final Node v$el$1 = yyResult.semanticValue();
05958:
05959: yyOption1 = yyResult.index;
05960: yyOpValue1 = v$el$1;
05961: }
05962: { // Start scope for v$g$2.
05963: final Node v$g$2 = yyOpValue1;
05964:
05965: yyResult = pTypeName(yyOption1);
05966: yyError = yyResult.select(yyError);
05967: if (yyResult.hasValue()) {
05968: final Node v$g$3 = yyResult.semanticValue();
05969:
05970: yyResult = pArguments(yyResult.index);
05971: yyError = yyResult.select(yyError);
05972: if (yyResult.hasValue()) {
05973: final Node v$g$4 = yyResult.semanticValue();
05974:
05975: yyOption1 = yyResult.index;
05976: yyOpValue1 = null;
05977:
05978: yyResult = pClassBody(yyOption1);
05979: yyError = yyResult.select(yyError);
05980: if (yyResult.hasValue()) {
05981: final Node v$el$2 = yyResult
05982: .semanticValue();
05983:
05984: yyOption1 = yyResult.index;
05985: yyOpValue1 = v$el$2;
05986: }
05987: { // Start scope for v$g$5.
05988: final Node v$g$5 = yyOpValue1;
05989:
05990: yyValue = GNode.create(
05991: "NewClassExpression", null, v$g$2,
05992: v$g$3, v$g$4, v$g$5);
05993: yyValue.setLocation(location(yyStart));
05994:
05995: return new SemanticValue(yyValue,
05996: yyOption1, yyError);
05997: } // End scope for v$g$5.
05998: }
05999: }
06000: } // End scope for v$g$2.
06001: }
06002:
06003: // Alternative 9.
06004:
06005: yyResult = pWord(yyStart);
06006: yyError = yyResult.select(yyError);
06007: if (yyResult.hasValue("new")) {
06008:
06009: yyResult = pTypeName(yyResult.index);
06010: yyError = yyResult.select(yyError);
06011: if (yyResult.hasValue()) {
06012: final Node v$g$1 = yyResult.semanticValue();
06013:
06014: final int yyChoice1 = yyResult.index;
06015:
06016: // Nested alternative 1.
06017:
06018: yyResult = pConcreteDimensions(yyChoice1);
06019: yyError = yyResult.select(yyError);
06020: if (yyResult.hasValue()) {
06021: final Node v$g$2 = yyResult.semanticValue();
06022:
06023: yyOption1 = yyResult.index;
06024: yyOpValue1 = null;
06025:
06026: yyResult = pDimensions(yyOption1);
06027: yyError = yyResult.select(yyError);
06028: if (yyResult.hasValue()) {
06029: final Node v$el$1 = yyResult.semanticValue();
06030:
06031: yyOption1 = yyResult.index;
06032: yyOpValue1 = v$el$1;
06033: }
06034: { // Start scope for v$g$3.
06035: final Node v$g$3 = yyOpValue1;
06036:
06037: yyValue = GNode.create("NewArrayExpression",
06038: v$g$1, v$g$2, v$g$3, null);
06039: yyValue.setLocation(location(yyStart));
06040:
06041: return new SemanticValue(yyValue, yyOption1,
06042: yyError);
06043: } // End scope for v$g$3.
06044: }
06045:
06046: // Nested alternative 2.
06047:
06048: yyOption1 = yyChoice1;
06049: yyOpValue1 = null;
06050:
06051: yyResult = pDimensions(yyOption1);
06052: yyError = yyResult.select(yyError);
06053: if (yyResult.hasValue()) {
06054: final Node v$el$2 = yyResult.semanticValue();
06055:
06056: yyOption1 = yyResult.index;
06057: yyOpValue1 = v$el$2;
06058: }
06059: { // Start scope for v$g$6.
06060: final Node v$g$6 = yyOpValue1;
06061:
06062: yyResult = pArrayInitializer(yyOption1);
06063: yyError = yyResult.select(yyError);
06064: if (yyResult.hasValue()) {
06065: final Node v$g$7 = yyResult.semanticValue();
06066:
06067: yyValue = GNode.create("NewArrayExpression",
06068: v$g$1, null, v$g$6, v$g$7);
06069: yyValue.setLocation(location(yyStart));
06070:
06071: return yyResult.createValue(yyValue, yyError);
06072: }
06073: } // End scope for v$g$6.
06074: }
06075: }
06076:
06077: // Alternative <Nested>.
06078:
06079: yyResult = pSymbol(yyStart);
06080: yyError = yyResult.select(yyError);
06081: if (yyResult.hasValue("(")) {
06082:
06083: yyResult = pExpression(yyResult.index);
06084: yyError = yyResult.select(yyError);
06085: if (yyResult.hasValue()) {
06086: yyValue = yyResult.semanticValue();
06087:
06088: yyBase = yyResult.index;
06089: yyResult = pSymbol(yyBase);
06090: yyError = yyResult.select(yyError);
06091: if (yyResult.hasValue(")")) {
06092:
06093: return yyResult.createValue(yyValue, yyError);
06094: } else {
06095: yyError = yyError.select("\")\" expected", yyBase);
06096: }
06097: }
06098: }
06099:
06100: // Done.
06101: yyError = yyError
06102: .select("primary expression expected", yyStart);
06103: return yyError;
06104: }
06105:
06106: // =========================================================================
06107:
06108: /**
06109: * Parse nonterminal xtc.lang.JavaFive.ConcreteDimensions.
06110: *
06111: * @param yyStart The index.
06112: * @return The result.
06113: * @throws IOException Signals an I/O error.
06114: */
06115: private Result pConcreteDimensions(final int yyStart)
06116: throws IOException {
06117: Result yyResult;
06118: int yyRepetition1;
06119: boolean yyRepeated1;
06120: Pair<Node> yyRepValue1;
06121: Node yyValue;
06122: ParseError yyError = ParseError.DUMMY;
06123:
06124: // Alternative 1.
06125:
06126: yyRepetition1 = yyStart;
06127: yyRepeated1 = false;
06128: yyRepValue1 = Pair.empty();
06129: while (true) {
06130:
06131: yyResult = pConcreteDimension(yyRepetition1);
06132: yyError = yyResult.select(yyError);
06133: if (yyResult.hasValue()) {
06134: final Node v$el$1 = yyResult.semanticValue();
06135:
06136: yyRepetition1 = yyResult.index;
06137: yyRepeated1 = true;
06138: yyRepValue1 = new Pair<Node>(v$el$1, yyRepValue1);
06139: continue;
06140: }
06141: break;
06142: }
06143:
06144: if (yyRepeated1) {
06145: final Pair<Node> v$g$1 = yyRepValue1.reverse();
06146:
06147: yyValue = GNode.createFromPair("ConcreteDimensions", v$g$1);
06148: yyValue.setLocation(location(yyStart));
06149:
06150: return new SemanticValue(yyValue, yyRepetition1, yyError);
06151: }
06152:
06153: // Done.
06154: return yyError;
06155: }
06156:
06157: // =========================================================================
06158:
06159: /**
06160: * Parse nonterminal xtc.lang.JavaFive.ConcreteDimension.
06161: *
06162: * @param yyStart The index.
06163: * @return The result.
06164: * @throws IOException Signals an I/O error.
06165: */
06166: private Result pConcreteDimension(final int yyStart)
06167: throws IOException {
06168: Result yyResult;
06169: int yyBase;
06170: Node yyValue;
06171: ParseError yyError = ParseError.DUMMY;
06172:
06173: // Alternative 1.
06174:
06175: yyResult = pSymbol(yyStart);
06176: yyError = yyResult.select(yyError);
06177: if (yyResult.hasValue("[")) {
06178:
06179: yyResult = pExpression(yyResult.index);
06180: yyError = yyResult.select(yyError);
06181: if (yyResult.hasValue()) {
06182: yyValue = yyResult.semanticValue();
06183:
06184: yyBase = yyResult.index;
06185: yyResult = pSymbol(yyBase);
06186: yyError = yyResult.select(yyError);
06187: if (yyResult.hasValue("]")) {
06188:
06189: return yyResult.createValue(yyValue, yyError);
06190: } else {
06191: yyError = yyError.select("\"]\" expected", yyBase);
06192: }
06193: }
06194: }
06195:
06196: // Done.
06197: yyError = yyError
06198: .select("concrete dimension expected", yyStart);
06199: return yyError;
06200: }
06201:
06202: // =========================================================================
06203:
06204: /**
06205: * Parse nonterminal xtc.lang.JavaFive.ArrayInitializer.
06206: *
06207: * @param yyStart The index.
06208: * @return The result.
06209: * @throws IOException Signals an I/O error.
06210: */
06211: private Result pArrayInitializer(final int yyStart)
06212: throws IOException {
06213: Result yyResult;
06214: int yyBase;
06215: int yyRepetition1;
06216: Pair<Node> yyRepValue1;
06217: int yyOption1;
06218: Node yyValue;
06219: ParseError yyError = ParseError.DUMMY;
06220:
06221: // Alternative 1.
06222:
06223: yyResult = pSymbol(yyStart);
06224: yyError = yyResult.select(yyError);
06225: if (yyResult.hasValue("{")) {
06226:
06227: final int yyChoice1 = yyResult.index;
06228:
06229: // Nested alternative 1.
06230:
06231: yyResult = pVariableInitializer(yyChoice1);
06232: yyError = yyResult.select(yyError);
06233: if (yyResult.hasValue()) {
06234: final Node v$g$1 = yyResult.semanticValue();
06235:
06236: yyRepetition1 = yyResult.index;
06237: yyRepValue1 = Pair.empty();
06238: while (true) {
06239:
06240: yyBase = yyRepetition1;
06241: yyResult = pSymbol(yyBase);
06242: yyError = yyResult.select(yyError);
06243: if (yyResult.hasValue(",")) {
06244:
06245: yyResult = pVariableInitializer(yyResult.index);
06246: yyError = yyResult.select(yyError);
06247: if (yyResult.hasValue()) {
06248: final Node v$el$1 = yyResult
06249: .semanticValue();
06250:
06251: yyRepetition1 = yyResult.index;
06252: yyRepValue1 = new Pair<Node>(v$el$1,
06253: yyRepValue1);
06254: continue;
06255: }
06256: } else {
06257: yyError = yyError.select("\",\" expected",
06258: yyBase);
06259: }
06260: break;
06261: }
06262: { // Start scope for v$g$2.
06263: final Pair<Node> v$g$2 = yyRepValue1.reverse();
06264:
06265: yyOption1 = yyRepetition1;
06266:
06267: yyBase = yyOption1;
06268: yyResult = pSymbol(yyBase);
06269: yyError = yyResult.select(yyError);
06270: if (yyResult.hasValue(",")) {
06271:
06272: yyOption1 = yyResult.index;
06273: } else {
06274: yyError = yyError.select("\",\" expected",
06275: yyBase);
06276: }
06277:
06278: yyBase = yyOption1;
06279: yyResult = pSymbol(yyBase);
06280: yyError = yyResult.select(yyError);
06281: if (yyResult.hasValue("}")) {
06282:
06283: yyValue = GNode.createFromPair(
06284: "ArrayInitializer", v$g$1, v$g$2);
06285: yyValue.setLocation(location(yyStart));
06286:
06287: return yyResult.createValue(yyValue, yyError);
06288: } else {
06289: yyError = yyError.select("\"}\" expected",
06290: yyBase);
06291: }
06292: } // End scope for v$g$2.
06293: }
06294:
06295: // Nested alternative 2.
06296:
06297: yyOption1 = yyChoice1;
06298:
06299: yyBase = yyOption1;
06300: yyResult = pSymbol(yyBase);
06301: yyError = yyResult.select(yyError);
06302: if (yyResult.hasValue(",")) {
06303:
06304: yyOption1 = yyResult.index;
06305: } else {
06306: yyError = yyError.select("\",\" expected", yyBase);
06307: }
06308:
06309: yyBase = yyOption1;
06310: yyResult = pSymbol(yyBase);
06311: yyError = yyResult.select(yyError);
06312: if (yyResult.hasValue("}")) {
06313:
06314: yyValue = GNode.create("ArrayInitializer", false);
06315: yyValue.setLocation(location(yyStart));
06316:
06317: return yyResult.createValue(yyValue, yyError);
06318: } else {
06319: yyError = yyError.select("\"}\" expected", yyBase);
06320: }
06321: }
06322:
06323: // Done.
06324: yyError = yyError.select("array initializer expected", yyStart);
06325: return yyError;
06326: }
06327:
06328: // =========================================================================
06329:
06330: /**
06331: * Parse nonterminal xtc.lang.JavaFive.VariableInitializer.
06332: *
06333: * @param yyStart The index.
06334: * @return The result.
06335: * @throws IOException Signals an I/O error.
06336: */
06337: private Result pVariableInitializer(final int yyStart)
06338: throws IOException {
06339: JavaFiveParserColumn yyColumn = (JavaFiveParserColumn) column(yyStart);
06340: if (null == yyColumn.chunk2)
06341: yyColumn.chunk2 = new Chunk2();
06342: if (null == yyColumn.chunk2.fVariableInitializer)
06343: yyColumn.chunk2.fVariableInitializer = pVariableInitializer$1(yyStart);
06344: return yyColumn.chunk2.fVariableInitializer;
06345: }
06346:
06347: /** Actually parse xtc.lang.JavaFive.VariableInitializer. */
06348: private Result pVariableInitializer$1(final int yyStart)
06349: throws IOException {
06350:
06351: Result yyResult;
06352: Node yyValue;
06353: ParseError yyError = ParseError.DUMMY;
06354:
06355: // Alternative <Array>.
06356:
06357: yyResult = pArrayInitializer(yyStart);
06358: yyError = yyResult.select(yyError);
06359: if (yyResult.hasValue()) {
06360: yyValue = yyResult.semanticValue();
06361:
06362: return yyResult.createValue(yyValue, yyError);
06363: }
06364:
06365: // Alternative <Expression>.
06366:
06367: yyResult = pExpression(yyStart);
06368: yyError = yyResult.select(yyError);
06369: if (yyResult.hasValue()) {
06370: yyValue = yyResult.semanticValue();
06371:
06372: return yyResult.createValue(yyValue, yyError);
06373: }
06374:
06375: // Done.
06376: return yyError;
06377: }
06378:
06379: // =========================================================================
06380:
06381: /**
06382: * Parse nonterminal xtc.lang.JavaFive.Arguments.
06383: *
06384: * @param yyStart The index.
06385: * @return The result.
06386: * @throws IOException Signals an I/O error.
06387: */
06388: private Result pArguments(final int yyStart) throws IOException {
06389: Result yyResult;
06390: int yyBase;
06391: int yyRepetition1;
06392: Pair<Node> yyRepValue1;
06393: Node yyValue;
06394: ParseError yyError = ParseError.DUMMY;
06395:
06396: // Alternative 1.
06397:
06398: yyResult = pSymbol(yyStart);
06399: yyError = yyResult.select(yyError);
06400: if (yyResult.hasValue("(")) {
06401:
06402: final int yyChoice1 = yyResult.index;
06403:
06404: // Nested alternative 1.
06405:
06406: yyResult = pExpression(yyChoice1);
06407: yyError = yyResult.select(yyError);
06408: if (yyResult.hasValue()) {
06409: final Node v$g$1 = yyResult.semanticValue();
06410:
06411: yyRepetition1 = yyResult.index;
06412: yyRepValue1 = Pair.empty();
06413: while (true) {
06414:
06415: yyBase = yyRepetition1;
06416: yyResult = pSymbol(yyBase);
06417: yyError = yyResult.select(yyError);
06418: if (yyResult.hasValue(",")) {
06419:
06420: yyResult = pExpression(yyResult.index);
06421: yyError = yyResult.select(yyError);
06422: if (yyResult.hasValue()) {
06423: final Node v$el$1 = yyResult
06424: .semanticValue();
06425:
06426: yyRepetition1 = yyResult.index;
06427: yyRepValue1 = new Pair<Node>(v$el$1,
06428: yyRepValue1);
06429: continue;
06430: }
06431: } else {
06432: yyError = yyError.select("\",\" expected",
06433: yyBase);
06434: }
06435: break;
06436: }
06437: { // Start scope for v$g$2.
06438: final Pair<Node> v$g$2 = yyRepValue1.reverse();
06439:
06440: yyBase = yyRepetition1;
06441: yyResult = pSymbol(yyBase);
06442: yyError = yyResult.select(yyError);
06443: if (yyResult.hasValue(")")) {
06444:
06445: yyValue = GNode.createFromPair("Arguments",
06446: v$g$1, v$g$2);
06447: yyValue.setLocation(location(yyStart));
06448:
06449: return yyResult.createValue(yyValue, yyError);
06450: } else {
06451: yyError = yyError.select("\")\" expected",
06452: yyBase);
06453: }
06454: } // End scope for v$g$2.
06455: }
06456:
06457: // Nested alternative 2.
06458:
06459: yyBase = yyChoice1;
06460: yyResult = pSymbol(yyBase);
06461: yyError = yyResult.select(yyError);
06462: if (yyResult.hasValue(")")) {
06463:
06464: yyValue = GNode.create("Arguments", false);
06465: yyValue.setLocation(location(yyStart));
06466:
06467: return yyResult.createValue(yyValue, yyError);
06468: } else {
06469: yyError = yyError.select("\")\" expected", yyBase);
06470: }
06471: }
06472:
06473: // Done.
06474: yyError = yyError.select("arguments expected", yyStart);
06475: return yyError;
06476: }
06477:
06478: // =========================================================================
06479:
06480: /**
06481: * Parse nonterminal xtc.lang.JavaFive.VariableModifier.
06482: *
06483: * @param yyStart The index.
06484: * @return The result.
06485: * @throws IOException Signals an I/O error.
06486: */
06487: private Result pVariableModifier(final int yyStart)
06488: throws IOException {
06489: Result yyResult;
06490: Node yyValue;
06491: ParseError yyError = ParseError.DUMMY;
06492:
06493: // Alternative <Final>.
06494:
06495: yyResult = pFinalModifier(yyStart);
06496: yyError = yyResult.select(yyError);
06497: if (yyResult.hasValue()) {
06498: yyValue = yyResult.semanticValue();
06499:
06500: return yyResult.createValue(yyValue, yyError);
06501: }
06502:
06503: // Alternative <Annotation>.
06504:
06505: yyResult = pAnnotation(yyStart);
06506: yyError = yyResult.select(yyError);
06507: if (yyResult.hasValue()) {
06508: yyValue = yyResult.semanticValue();
06509:
06510: return yyResult.createValue(yyValue, yyError);
06511: }
06512:
06513: // Done.
06514: return yyError;
06515: }
06516:
06517: // =========================================================================
06518:
06519: /**
06520: * Parse nonterminal xtc.lang.JavaFive.Annotations.
06521: *
06522: * @param yyStart The index.
06523: * @return The result.
06524: * @throws IOException Signals an I/O error.
06525: */
06526: private Result pAnnotations(final int yyStart) throws IOException {
06527: JavaFiveParserColumn yyColumn = (JavaFiveParserColumn) column(yyStart);
06528: if (null == yyColumn.chunk2)
06529: yyColumn.chunk2 = new Chunk2();
06530: if (null == yyColumn.chunk2.fAnnotations)
06531: yyColumn.chunk2.fAnnotations = pAnnotations$1(yyStart);
06532: return yyColumn.chunk2.fAnnotations;
06533: }
06534:
06535: /** Actually parse xtc.lang.JavaFive.Annotations. */
06536: private Result pAnnotations$1(final int yyStart) throws IOException {
06537: Result yyResult;
06538: Node yyValue;
06539: ParseError yyError = ParseError.DUMMY;
06540:
06541: // Alternative 1.
06542:
06543: yyResult = pAnnotations$$Plus1(yyStart);
06544: yyError = yyResult.select(yyError);
06545: if (yyResult.hasValue()) {
06546: final Pair<Node> v$g$1 = yyResult.semanticValue();
06547:
06548: yyValue = GNode.createFromPair("Annotations", v$g$1);
06549: yyValue.setLocation(location(yyStart));
06550:
06551: return yyResult.createValue(yyValue, yyError);
06552: }
06553:
06554: // Done.
06555: return yyError;
06556: }
06557:
06558: // =========================================================================
06559:
06560: /**
06561: * Parse synthetic nonterminal xtc.lang.JavaFive.Annotations$$Plus1.
06562: *
06563: * @param yyStart The index.
06564: * @return The result.
06565: * @throws IOException Signals an I/O error.
06566: */
06567: private Result pAnnotations$$Plus1(final int yyStart)
06568: throws IOException {
06569: JavaFiveParserColumn yyColumn = (JavaFiveParserColumn) column(yyStart);
06570: if (null == yyColumn.chunk2)
06571: yyColumn.chunk2 = new Chunk2();
06572: if (null == yyColumn.chunk2.fAnnotations$$Plus1)
06573: yyColumn.chunk2.fAnnotations$$Plus1 = pAnnotations$$Plus1$1(yyStart);
06574: return yyColumn.chunk2.fAnnotations$$Plus1;
06575: }
06576:
06577: /** Actually parse xtc.lang.JavaFive.Annotations$$Plus1. */
06578: private Result pAnnotations$$Plus1$1(final int yyStart)
06579: throws IOException {
06580: Result yyResult;
06581: Pair<Node> yyValue;
06582: ParseError yyError = ParseError.DUMMY;
06583:
06584: // Alternative 1.
06585:
06586: yyResult = pAnnotation(yyStart);
06587: yyError = yyResult.select(yyError);
06588: if (yyResult.hasValue()) {
06589: final Node v$el$1 = yyResult.semanticValue();
06590:
06591: final int yyChoice1 = yyResult.index;
06592:
06593: // Nested alternative 1.
06594:
06595: yyResult = pAnnotations$$Plus1(yyChoice1);
06596: yyError = yyResult.select(yyError);
06597: if (yyResult.hasValue()) {
06598: final Pair<Node> v$2 = yyResult.semanticValue();
06599:
06600: yyValue = new Pair<Node>(v$el$1, v$2);
06601:
06602: return yyResult.createValue(yyValue, yyError);
06603: }
06604:
06605: // Nested alternative 2.
06606:
06607: yyValue = new Pair<Node>(v$el$1);
06608:
06609: return new SemanticValue(yyValue, yyChoice1, yyError);
06610: }
06611:
06612: // Done.
06613: return yyError;
06614: }
06615:
06616: // =========================================================================
06617:
06618: /**
06619: * Parse nonterminal xtc.lang.JavaFive.Annotation.
06620: *
06621: * @param yyStart The index.
06622: * @return The result.
06623: * @throws IOException Signals an I/O error.
06624: */
06625: private Result pAnnotation(final int yyStart) throws IOException {
06626: Result yyResult;
06627: Node yyValue;
06628: ParseError yyError = ParseError.DUMMY;
06629:
06630: // Alternative 1.
06631:
06632: yyResult = pSymbol(yyStart);
06633: yyError = yyResult.select(yyError);
06634: if (yyResult.hasValue("@")) {
06635:
06636: yyResult = pTypeName(yyResult.index);
06637: yyError = yyResult.select(yyError);
06638: if (yyResult.hasValue()) {
06639: final Node v$g$1 = yyResult.semanticValue();
06640:
06641: yyResult = pAnnotationValue(yyResult.index);
06642: yyError = yyResult.select(yyError);
06643: if (yyResult.hasValue()) {
06644: final Node v$g$2 = yyResult.semanticValue();
06645:
06646: yyValue = GNode.create("Annotation", v$g$1, v$g$2);
06647: yyValue.setLocation(location(yyStart));
06648:
06649: return yyResult.createValue(yyValue, yyError);
06650: }
06651: }
06652: }
06653:
06654: // Done.
06655: yyError = yyError.select("annotation expected", yyStart);
06656: return yyError;
06657: }
06658:
06659: // =========================================================================
06660:
06661: /**
06662: * Parse nonterminal xtc.lang.JavaFive.AnnotationValue.
06663: *
06664: * @param yyStart The index.
06665: * @return The result.
06666: * @throws IOException Signals an I/O error.
06667: */
06668: private Result pAnnotationValue(final int yyStart)
06669: throws IOException {
06670: Result yyResult;
06671: int yyBase;
06672: int yyOption1;
06673: Node yyOpValue1;
06674: Node yyValue;
06675: ParseError yyError = ParseError.DUMMY;
06676:
06677: // Alternative 1.
06678:
06679: yyResult = pSymbol(yyStart);
06680: yyError = yyResult.select(yyError);
06681: if (yyResult.hasValue("(")) {
06682:
06683: final int yyChoice1 = yyResult.index;
06684:
06685: // Nested alternative 1.
06686:
06687: yyOption1 = yyChoice1;
06688: yyOpValue1 = null;
06689:
06690: yyResult = pElementValuePairs(yyOption1);
06691: yyError = yyResult.select(yyError);
06692: if (yyResult.hasValue()) {
06693: final Node v$el$4 = yyResult.semanticValue();
06694:
06695: yyOption1 = yyResult.index;
06696: yyOpValue1 = v$el$4;
06697: }
06698: { // Start scope for yyValue.
06699: yyValue = yyOpValue1;
06700:
06701: yyBase = yyOption1;
06702: yyResult = pSymbol(yyBase);
06703: yyError = yyResult.select(yyError);
06704: if (yyResult.hasValue(")")) {
06705:
06706: return yyResult.createValue(yyValue, yyError);
06707: } else {
06708: yyError = yyError.select("\")\" expected", yyBase);
06709: }
06710: } // End scope for yyValue.
06711:
06712: // Nested alternative 2.
06713:
06714: yyResult = pElementValue(yyChoice1);
06715: yyError = yyResult.select(yyError);
06716: if (yyResult.hasValue()) {
06717: yyValue = yyResult.semanticValue();
06718:
06719: yyBase = yyResult.index;
06720: yyResult = pSymbol(yyBase);
06721: yyError = yyResult.select(yyError);
06722: if (yyResult.hasValue(")")) {
06723:
06724: return yyResult.createValue(yyValue, yyError);
06725: } else {
06726: yyError = yyError.select("\")\" expected", yyBase);
06727: }
06728: }
06729: }
06730:
06731: // Alternative <Empty>.
06732: { // Start scope for yyValue.
06733: yyValue = null;
06734:
06735: return new SemanticValue(yyValue, yyStart, yyError);
06736: } // End scope for yyValue.
06737: }
06738:
06739: // =========================================================================
06740:
06741: /**
06742: * Parse nonterminal xtc.lang.JavaFive.ElementValuePairs.
06743: *
06744: * @param yyStart The index.
06745: * @return The result.
06746: * @throws IOException Signals an I/O error.
06747: */
06748: private Result pElementValuePairs(final int yyStart)
06749: throws IOException {
06750: Result yyResult;
06751: int yyBase;
06752: int yyRepetition1;
06753: Pair<Node> yyRepValue1;
06754: Node yyValue;
06755: ParseError yyError = ParseError.DUMMY;
06756:
06757: // Alternative 1.
06758:
06759: yyResult = pElementValuePair(yyStart);
06760: yyError = yyResult.select(yyError);
06761: if (yyResult.hasValue()) {
06762: final Node v$g$1 = yyResult.semanticValue();
06763:
06764: yyRepetition1 = yyResult.index;
06765: yyRepValue1 = Pair.empty();
06766: while (true) {
06767:
06768: yyBase = yyRepetition1;
06769: yyResult = pSymbol(yyBase);
06770: yyError = yyResult.select(yyError);
06771: if (yyResult.hasValue(",")) {
06772:
06773: yyResult = pElementValuePair(yyResult.index);
06774: yyError = yyResult.select(yyError);
06775: if (yyResult.hasValue()) {
06776: final Node v$el$1 = yyResult.semanticValue();
06777:
06778: yyRepetition1 = yyResult.index;
06779: yyRepValue1 = new Pair<Node>(v$el$1,
06780: yyRepValue1);
06781: continue;
06782: }
06783: } else {
06784: yyError = yyError.select("\",\" expected", yyBase);
06785: }
06786: break;
06787: }
06788: { // Start scope for v$g$2.
06789: final Pair<Node> v$g$2 = yyRepValue1.reverse();
06790:
06791: yyValue = GNode.createFromPair("ElementValuePairs",
06792: v$g$1, v$g$2);
06793: yyValue.setLocation(location(yyStart));
06794:
06795: return new SemanticValue(yyValue, yyRepetition1,
06796: yyError);
06797: } // End scope for v$g$2.
06798: }
06799:
06800: // Done.
06801: return yyError;
06802: }
06803:
06804: // =========================================================================
06805:
06806: /**
06807: * Parse nonterminal xtc.lang.JavaFive.ElementValuePair.
06808: *
06809: * @param yyStart The index.
06810: * @return The result.
06811: * @throws IOException Signals an I/O error.
06812: */
06813: private Result pElementValuePair(final int yyStart)
06814: throws IOException {
06815: JavaFiveParserColumn yyColumn = (JavaFiveParserColumn) column(yyStart);
06816: if (null == yyColumn.chunk2)
06817: yyColumn.chunk2 = new Chunk2();
06818: if (null == yyColumn.chunk2.fElementValuePair)
06819: yyColumn.chunk2.fElementValuePair = pElementValuePair$1(yyStart);
06820: return yyColumn.chunk2.fElementValuePair;
06821: }
06822:
06823: /** Actually parse xtc.lang.JavaFive.ElementValuePair. */
06824: private Result pElementValuePair$1(final int yyStart)
06825: throws IOException {
06826: Result yyResult;
06827: int yyBase;
06828: Node yyValue;
06829: ParseError yyError = ParseError.DUMMY;
06830:
06831: // Alternative 1.
06832:
06833: yyResult = pIdentifier(yyStart);
06834: yyError = yyResult.select(yyError);
06835: if (yyResult.hasValue()) {
06836: final String v$g$1 = yyResult.semanticValue();
06837:
06838: yyBase = yyResult.index;
06839: yyResult = pSymbol(yyBase);
06840: yyError = yyResult.select(yyError);
06841: if (yyResult.hasValue("=")) {
06842:
06843: yyResult = pElementValue(yyResult.index);
06844: yyError = yyResult.select(yyError);
06845: if (yyResult.hasValue()) {
06846: final Node v$g$2 = yyResult.semanticValue();
06847:
06848: yyValue = GNode.create("ElementValuePair", v$g$1,
06849: v$g$2);
06850: yyValue.setLocation(location(yyStart));
06851:
06852: return yyResult.createValue(yyValue, yyError);
06853: }
06854: } else {
06855: yyError = yyError.select("\"=\" expected", yyBase);
06856: }
06857: }
06858:
06859: // Done.
06860: return yyError;
06861: }
06862:
06863: // =========================================================================
06864:
06865: /**
06866: * Parse nonterminal xtc.lang.JavaFive.ElementValue.
06867: *
06868: * @param yyStart The index.
06869: * @return The result.
06870: * @throws IOException Signals an I/O error.
06871: */
06872: private Result pElementValue(final int yyStart) throws IOException {
06873: JavaFiveParserColumn yyColumn = (JavaFiveParserColumn) column(yyStart);
06874: if (null == yyColumn.chunk2)
06875: yyColumn.chunk2 = new Chunk2();
06876: if (null == yyColumn.chunk2.fElementValue)
06877: yyColumn.chunk2.fElementValue = pElementValue$1(yyStart);
06878: return yyColumn.chunk2.fElementValue;
06879: }
06880:
06881: /** Actually parse xtc.lang.JavaFive.ElementValue. */
06882: private Result pElementValue$1(final int yyStart)
06883: throws IOException {
06884: Result yyResult;
06885: Node yyValue;
06886: ParseError yyError = ParseError.DUMMY;
06887:
06888: // Alternative <Expression>.
06889:
06890: yyResult = pExpression(yyStart);
06891: yyError = yyResult.select(yyError);
06892: if (yyResult.hasValue()) {
06893: yyValue = yyResult.semanticValue();
06894:
06895: return yyResult.createValue(yyValue, yyError);
06896: }
06897:
06898: // Alternative <Annotation>.
06899:
06900: yyResult = pAnnotation(yyStart);
06901: yyError = yyResult.select(yyError);
06902: if (yyResult.hasValue()) {
06903: yyValue = yyResult.semanticValue();
06904:
06905: return yyResult.createValue(yyValue, yyError);
06906: }
06907:
06908: // Alternative <Array>.
06909:
06910: yyResult = pElementArrayInitializer(yyStart);
06911: yyError = yyResult.select(yyError);
06912: if (yyResult.hasValue()) {
06913: yyValue = yyResult.semanticValue();
06914:
06915: return yyResult.createValue(yyValue, yyError);
06916: }
06917:
06918: // Done.
06919: return yyError;
06920: }
06921:
06922: // =========================================================================
06923:
06924: /**
06925: * Parse nonterminal xtc.lang.JavaFive.ElementArrayInitializer.
06926: *
06927: * @param yyStart The index.
06928: * @return The result.
06929: * @throws IOException Signals an I/O error.
06930: */
06931: private Result pElementArrayInitializer(final int yyStart)
06932: throws IOException {
06933:
06934: Result yyResult;
06935: int yyBase;
06936: int yyRepetition1;
06937: Pair<Node> yyRepValue1;
06938: int yyOption1;
06939: Node yyValue;
06940: ParseError yyError = ParseError.DUMMY;
06941:
06942: // Alternative 1.
06943:
06944: yyResult = pSymbol(yyStart);
06945: yyError = yyResult.select(yyError);
06946: if (yyResult.hasValue("{")) {
06947:
06948: final int yyChoice1 = yyResult.index;
06949:
06950: // Nested alternative 1.
06951:
06952: yyResult = pElementValue(yyChoice1);
06953: yyError = yyResult.select(yyError);
06954: if (yyResult.hasValue()) {
06955: final Node v$g$1 = yyResult.semanticValue();
06956:
06957: yyRepetition1 = yyResult.index;
06958: yyRepValue1 = Pair.empty();
06959: while (true) {
06960:
06961: yyBase = yyRepetition1;
06962: yyResult = pSymbol(yyBase);
06963: yyError = yyResult.select(yyError);
06964: if (yyResult.hasValue(",")) {
06965:
06966: yyResult = pElementValue(yyResult.index);
06967: yyError = yyResult.select(yyError);
06968: if (yyResult.hasValue()) {
06969: final Node v$el$1 = yyResult
06970: .semanticValue();
06971:
06972: yyRepetition1 = yyResult.index;
06973: yyRepValue1 = new Pair<Node>(v$el$1,
06974: yyRepValue1);
06975: continue;
06976: }
06977: } else {
06978: yyError = yyError.select("\",\" expected",
06979: yyBase);
06980: }
06981: break;
06982: }
06983: { // Start scope for v$g$2.
06984: final Pair<Node> v$g$2 = yyRepValue1.reverse();
06985:
06986: yyOption1 = yyRepetition1;
06987:
06988: yyBase = yyOption1;
06989: yyResult = pSymbol(yyBase);
06990: yyError = yyResult.select(yyError);
06991: if (yyResult.hasValue(",")) {
06992:
06993: yyOption1 = yyResult.index;
06994: } else {
06995: yyError = yyError.select("\",\" expected",
06996: yyBase);
06997: }
06998:
06999: yyBase = yyOption1;
07000: yyResult = pSymbol(yyBase);
07001: yyError = yyResult.select(yyError);
07002: if (yyResult.hasValue("}")) {
07003:
07004: yyValue = GNode.createFromPair(
07005: "ArrayInitializer", v$g$1, v$g$2);
07006: yyValue.setLocation(location(yyStart));
07007:
07008: return yyResult.createValue(yyValue, yyError);
07009: } else {
07010: yyError = yyError.select("\"}\" expected",
07011: yyBase);
07012: }
07013: } // End scope for v$g$2.
07014: }
07015:
07016: // Nested alternative 2.
07017:
07018: yyOption1 = yyChoice1;
07019:
07020: yyBase = yyOption1;
07021: yyResult = pSymbol(yyBase);
07022: yyError = yyResult.select(yyError);
07023: if (yyResult.hasValue(",")) {
07024:
07025: yyOption1 = yyResult.index;
07026: } else {
07027: yyError = yyError.select("\",\" expected", yyBase);
07028: }
07029:
07030: yyBase = yyOption1;
07031: yyResult = pSymbol(yyBase);
07032: yyError = yyResult.select(yyError);
07033: if (yyResult.hasValue("}")) {
07034:
07035: yyValue = GNode.create("ArrayInitializer", false);
07036: yyValue.setLocation(location(yyStart));
07037:
07038: return yyResult.createValue(yyValue, yyError);
07039: } else {
07040: yyError = yyError.select("\"}\" expected", yyBase);
07041: }
07042: }
07043:
07044: // Done.
07045: yyError = yyError.select("element array initializer expected",
07046: yyStart);
07047: return yyError;
07048: }
07049:
07050: // =========================================================================
07051:
07052: /**
07053: * Parse nonterminal xtc.lang.JavaFive.AnnotationBody.
07054: *
07055: * @param yyStart The index.
07056: * @return The result.
07057: * @throws IOException Signals an I/O error.
07058: */
07059: private Result pAnnotationBody(final int yyStart)
07060: throws IOException {
07061: Result yyResult;
07062: int yyBase;
07063: int yyRepetition1;
07064: Pair<Node> yyRepValue1;
07065: Node yyValue;
07066: ParseError yyError = ParseError.DUMMY;
07067:
07068: // Alternative <Body>.
07069:
07070: yyResult = pSymbol(yyStart);
07071: yyError = yyResult.select(yyError);
07072: if (yyResult.hasValue("{")) {
07073:
07074: yyRepetition1 = yyResult.index;
07075: yyRepValue1 = Pair.empty();
07076: while (true) {
07077:
07078: yyResult = pAnnotationElement(yyRepetition1);
07079: yyError = yyResult.select(yyError);
07080: if (yyResult.hasValue()) {
07081: final Node v$el$1 = yyResult.semanticValue();
07082:
07083: yyRepetition1 = yyResult.index;
07084: yyRepValue1 = new Pair<Node>(v$el$1, yyRepValue1);
07085: continue;
07086: }
07087: break;
07088: }
07089: { // Start scope for v$g$1.
07090: final Pair<Node> v$g$1 = yyRepValue1.reverse();
07091:
07092: yyBase = yyRepetition1;
07093: yyResult = pSymbol(yyBase);
07094: yyError = yyResult.select(yyError);
07095: if (yyResult.hasValue("}")) {
07096:
07097: yyValue = GNode.createFromPair("ClassBody", v$g$1);
07098: yyValue.setLocation(location(yyStart));
07099:
07100: return yyResult.createValue(yyValue, yyError);
07101: } else {
07102: yyError = yyError.select("\"}\" expected", yyBase);
07103: }
07104: } // End scope for v$g$1.
07105: }
07106:
07107: // Done.
07108: yyError = yyError.select("annotation body expected", yyStart);
07109: return yyError;
07110: }
07111:
07112: // =========================================================================
07113:
07114: /**
07115: * Parse nonterminal xtc.lang.JavaFive.AnnotationElement.
07116: *
07117: * @param yyStart The index.
07118: * @return The result.
07119: * @throws IOException Signals an I/O error.
07120: */
07121: private Result pAnnotationElement(final int yyStart)
07122: throws IOException {
07123: Result yyResult;
07124: int yyBase;
07125: int yyOption1;
07126: Node yyOpValue1;
07127: Node yyValue;
07128: ParseError yyError = ParseError.DUMMY;
07129:
07130: // Alternative 1.
07131:
07132: yyResult = pModifiers(yyStart);
07133: yyError = yyResult.select(yyError);
07134: if (yyResult.hasValue()) {
07135: final Node v$g$1 = yyResult.semanticValue();
07136:
07137: final int yyChoice1 = yyResult.index;
07138:
07139: // Nested alternative 1.
07140:
07141: yyResult = pType(yyChoice1);
07142: yyError = yyResult.select(yyError);
07143: if (yyResult.hasValue()) {
07144: final Node v$g$2 = yyResult.semanticValue();
07145:
07146: final int yyChoice2 = yyResult.index;
07147:
07148: // Nested alternative 1.
07149:
07150: yyResult = pIdentifier(yyChoice2);
07151: yyError = yyResult.select(yyError);
07152: if (yyResult.hasValue()) {
07153: final String v$g$3 = yyResult.semanticValue();
07154:
07155: yyBase = yyResult.index;
07156: yyResult = pSymbol(yyBase);
07157: yyError = yyResult.select(yyError);
07158: if (yyResult.hasValue("(")) {
07159:
07160: yyBase = yyResult.index;
07161: yyResult = pSymbol(yyBase);
07162: yyError = yyResult.select(yyError);
07163: if (yyResult.hasValue(")")) {
07164:
07165: yyOption1 = yyResult.index;
07166: yyOpValue1 = null;
07167:
07168: yyResult = pDefaultValue(yyOption1);
07169: yyError = yyResult.select(yyError);
07170: if (yyResult.hasValue()) {
07171: final Node v$el$1 = yyResult
07172: .semanticValue();
07173:
07174: yyOption1 = yyResult.index;
07175: yyOpValue1 = v$el$1;
07176: }
07177: { // Start scope for v$g$4.
07178: final Node v$g$4 = yyOpValue1;
07179:
07180: yyBase = yyOption1;
07181: yyResult = pSymbol(yyBase);
07182: yyError = yyResult.select(yyError);
07183: if (yyResult.hasValue(";")) {
07184:
07185: yyValue = GNode.create(
07186: "AnnotationMethod", v$g$1,
07187: v$g$2, v$g$3, v$g$4);
07188: yyValue
07189: .setLocation(location(yyStart));
07190:
07191: return yyResult.createValue(
07192: yyValue, yyError);
07193: } else {
07194: yyError = yyError.select(
07195: "\";\" expected", yyBase);
07196: }
07197: } // End scope for v$g$4.
07198: } else {
07199: yyError = yyError.select("\")\" expected",
07200: yyBase);
07201: }
07202: } else {
07203: yyError = yyError.select("\"(\" expected",
07204: yyBase);
07205: }
07206: }
07207:
07208: // Nested alternative 2.
07209:
07210: yyResult = pDeclarators(yyChoice2);
07211: yyError = yyResult.select(yyError);
07212: if (yyResult.hasValue()) {
07213: final Node v$g$3 = yyResult.semanticValue();
07214:
07215: yyBase = yyResult.index;
07216: yyResult = pSymbol(yyBase);
07217: yyError = yyResult.select(yyError);
07218: if (yyResult.hasValue(";")) {
07219:
07220: yyValue = GNode.create("FieldDeclaration",
07221: v$g$1, v$g$2, v$g$3);
07222: yyValue.setLocation(location(yyStart));
07223:
07224: return yyResult.createValue(yyValue, yyError);
07225: } else {
07226: yyError = yyError.select("\";\" expected",
07227: yyBase);
07228: }
07229: }
07230: }
07231:
07232: // Nested alternative 2.
07233:
07234: yyBase = yyChoice1;
07235: yyResult = pWord(yyBase);
07236: yyError = yyResult.select(yyError);
07237: if (yyResult.hasValue("class")) {
07238:
07239: yyResult = pIdentifier(yyResult.index);
07240: yyError = yyResult.select(yyError);
07241: if (yyResult.hasValue()) {
07242: final String v$g$2 = yyResult.semanticValue();
07243:
07244: yyOption1 = yyResult.index;
07245: yyOpValue1 = null;
07246:
07247: yyResult = pTypeParameters(yyOption1);
07248: yyError = yyResult.select(yyError);
07249: if (yyResult.hasValue()) {
07250: final Node v$el$1 = yyResult.semanticValue();
07251:
07252: yyOption1 = yyResult.index;
07253: yyOpValue1 = v$el$1;
07254: }
07255: { // Start scope for v$g$3.
07256: final Node v$g$3 = yyOpValue1;
07257:
07258: yyOpValue1 = null;
07259:
07260: yyResult = pExtension(yyOption1);
07261: yyError = yyResult.select(yyError);
07262: if (yyResult.hasValue()) {
07263: final Node v$el$2 = yyResult
07264: .semanticValue();
07265:
07266: yyOption1 = yyResult.index;
07267: yyOpValue1 = v$el$2;
07268: }
07269: { // Start scope for v$g$4.
07270: final Node v$g$4 = yyOpValue1;
07271:
07272: yyOpValue1 = null;
07273:
07274: yyResult = pImplementation(yyOption1);
07275: yyError = yyResult.select(yyError);
07276: if (yyResult.hasValue()) {
07277: final Node v$el$3 = yyResult
07278: .semanticValue();
07279:
07280: yyOption1 = yyResult.index;
07281: yyOpValue1 = v$el$3;
07282: }
07283: { // Start scope for v$g$5.
07284: final Node v$g$5 = yyOpValue1;
07285:
07286: yyResult = pClassBody(yyOption1);
07287: yyError = yyResult.select(yyError);
07288: if (yyResult.hasValue()) {
07289: final Node v$g$6 = yyResult
07290: .semanticValue();
07291:
07292: yyValue = GNode.create(
07293: "ClassDeclaration", v$g$1,
07294: v$g$2, v$g$3, v$g$4, v$g$5,
07295: v$g$6);
07296: yyValue
07297: .setLocation(location(yyStart));
07298:
07299: return yyResult.createValue(
07300: yyValue, yyError);
07301: }
07302: } // End scope for v$g$5.
07303: } // End scope for v$g$4.
07304: } // End scope for v$g$3.
07305: }
07306: } else {
07307: yyError = yyError.select("\"class\" expected", yyBase);
07308: }
07309:
07310: // Nested alternative 3.
07311:
07312: yyBase = yyChoice1;
07313: yyResult = pWord(yyBase);
07314: yyError = yyResult.select(yyError);
07315: if (yyResult.hasValue("interface")) {
07316:
07317: yyResult = pIdentifier(yyResult.index);
07318: yyError = yyResult.select(yyError);
07319: if (yyResult.hasValue()) {
07320: final String v$g$2 = yyResult.semanticValue();
07321:
07322: yyOption1 = yyResult.index;
07323: yyOpValue1 = null;
07324:
07325: yyResult = pTypeParameters(yyOption1);
07326: yyError = yyResult.select(yyError);
07327: if (yyResult.hasValue()) {
07328: final Node v$el$1 = yyResult.semanticValue();
07329:
07330: yyOption1 = yyResult.index;
07331: yyOpValue1 = v$el$1;
07332: }
07333: { // Start scope for v$g$3.
07334: final Node v$g$3 = yyOpValue1;
07335:
07336: yyOpValue1 = null;
07337:
07338: yyResult = pExtension(yyOption1);
07339: yyError = yyResult.select(yyError);
07340: if (yyResult.hasValue()) {
07341: final Node v$el$2 = yyResult
07342: .semanticValue();
07343:
07344: yyOption1 = yyResult.index;
07345: yyOpValue1 = v$el$2;
07346: }
07347: { // Start scope for v$g$4.
07348: final Node v$g$4 = yyOpValue1;
07349:
07350: yyResult = pClassBody(yyOption1);
07351: yyError = yyResult.select(yyError);
07352: if (yyResult.hasValue()) {
07353: final Node v$g$5 = yyResult
07354: .semanticValue();
07355:
07356: yyValue = GNode.create(
07357: "InterfaceDeclaration", v$g$1,
07358: v$g$2, v$g$3, v$g$4, v$g$5);
07359: yyValue.setLocation(location(yyStart));
07360:
07361: return yyResult.createValue(yyValue,
07362: yyError);
07363: }
07364: } // End scope for v$g$4.
07365: } // End scope for v$g$3.
07366: }
07367: } else {
07368: yyError = yyError.select("\"interface\" expected",
07369: yyBase);
07370: }
07371:
07372: // Nested alternative 4.
07373:
07374: yyBase = yyChoice1;
07375: yyResult = pWord(yyBase);
07376: yyError = yyResult.select(yyError);
07377: if (yyResult.hasValue("enum")) {
07378:
07379: yyResult = pIdentifier(yyResult.index);
07380: yyError = yyResult.select(yyError);
07381: if (yyResult.hasValue()) {
07382: final String v$g$2 = yyResult.semanticValue();
07383:
07384: yyOption1 = yyResult.index;
07385: yyOpValue1 = null;
07386:
07387: yyResult = pImplementation(yyOption1);
07388: yyError = yyResult.select(yyError);
07389: if (yyResult.hasValue()) {
07390: final Node v$el$1 = yyResult.semanticValue();
07391:
07392: yyOption1 = yyResult.index;
07393: yyOpValue1 = v$el$1;
07394: }
07395: { // Start scope for v$g$3.
07396: final Node v$g$3 = yyOpValue1;
07397:
07398: yyBase = yyOption1;
07399: yyResult = pSymbol(yyBase);
07400: yyError = yyResult.select(yyError);
07401: if (yyResult.hasValue("{")) {
07402:
07403: yyOption1 = yyResult.index;
07404: yyOpValue1 = null;
07405:
07406: yyResult = pEnumConstants(yyOption1);
07407: yyError = yyResult.select(yyError);
07408: if (yyResult.hasValue()) {
07409: final Node v$el$2 = yyResult
07410: .semanticValue();
07411:
07412: yyOption1 = yyResult.index;
07413: yyOpValue1 = v$el$2;
07414: }
07415: { // Start scope for v$g$4.
07416: final Node v$g$4 = yyOpValue1;
07417:
07418: yyBase = yyOption1;
07419: yyResult = pSymbol(yyBase);
07420: yyError = yyResult.select(yyError);
07421: if (yyResult.hasValue(",")) {
07422:
07423: yyOption1 = yyResult.index;
07424: } else {
07425: yyError = yyError.select(
07426: "\",\" expected", yyBase);
07427: }
07428:
07429: yyOpValue1 = null;
07430:
07431: yyResult = pEnumMembers(yyOption1);
07432: yyError = yyResult.select(yyError);
07433: if (yyResult.hasValue()) {
07434: final Node v$el$3 = yyResult
07435: .semanticValue();
07436:
07437: yyOption1 = yyResult.index;
07438: yyOpValue1 = v$el$3;
07439: }
07440: { // Start scope for v$g$5.
07441: final Node v$g$5 = yyOpValue1;
07442:
07443: yyBase = yyOption1;
07444: yyResult = pSymbol(yyBase);
07445: yyError = yyResult.select(yyError);
07446: if (yyResult.hasValue("}")) {
07447:
07448: yyValue = GNode.create(
07449: "EnumDeclaration",
07450: v$g$1, v$g$2, v$g$3,
07451: v$g$4, v$g$5);
07452: yyValue
07453: .setLocation(location(yyStart));
07454:
07455: return yyResult.createValue(
07456: yyValue, yyError);
07457: } else {
07458: yyError = yyError.select(
07459: "\"}\" expected",
07460: yyBase);
07461: }
07462: } // End scope for v$g$5.
07463: } // End scope for v$g$4.
07464: } else {
07465: yyError = yyError.select("\"{\" expected",
07466: yyBase);
07467: }
07468: } // End scope for v$g$3.
07469: }
07470: } else {
07471: yyError = yyError.select("\"enum\" expected", yyBase);
07472: }
07473:
07474: // Nested alternative 5.
07475:
07476: yyBase = yyChoice1;
07477: yyResult = pSymbol(yyBase);
07478: yyError = yyResult.select(yyError);
07479: if (yyResult.hasValue("@")) {
07480:
07481: yyBase = yyResult.index;
07482: yyResult = pWord(yyBase);
07483: yyError = yyResult.select(yyError);
07484: if (yyResult.hasValue("interface")) {
07485:
07486: yyResult = pIdentifier(yyResult.index);
07487: yyError = yyResult.select(yyError);
07488: if (yyResult.hasValue()) {
07489: final String v$g$2 = yyResult.semanticValue();
07490:
07491: yyResult = pAnnotationBody(yyResult.index);
07492: yyError = yyResult.select(yyError);
07493: if (yyResult.hasValue()) {
07494: final Node v$g$3 = yyResult.semanticValue();
07495:
07496: yyValue = GNode.create(
07497: "AnnotationDeclaration", v$g$1,
07498: v$g$2, v$g$3);
07499: yyValue.setLocation(location(yyStart));
07500:
07501: return yyResult.createValue(yyValue,
07502: yyError);
07503: }
07504: }
07505: } else {
07506: yyError = yyError.select("\"interface\" expected",
07507: yyBase);
07508: }
07509: } else {
07510: yyError = yyError.select("\"@\" expected", yyBase);
07511: }
07512: }
07513:
07514: // Done.
07515: return yyError;
07516: }
07517:
07518: // =========================================================================
07519:
07520: /**
07521: * Parse nonterminal xtc.lang.JavaFive.DefaultValue.
07522: *
07523: * @param yyStart The index.
07524: * @return The result.
07525: * @throws IOException Signals an I/O error.
07526: */
07527: private Result pDefaultValue(final int yyStart) throws IOException {
07528: Result yyResult;
07529: Node yyValue;
07530: ParseError yyError = ParseError.DUMMY;
07531:
07532: // Alternative <Default>.
07533:
07534: yyResult = pWord(yyStart);
07535: yyError = yyResult.select(yyError);
07536: if (yyResult.hasValue("default")) {
07537:
07538: yyResult = pElementValue(yyResult.index);
07539: yyError = yyResult.select(yyError);
07540: if (yyResult.hasValue()) {
07541: final Node v$g$1 = yyResult.semanticValue();
07542:
07543: yyValue = GNode.create("DefaultValue", v$g$1);
07544: yyValue.setLocation(location(yyStart));
07545:
07546: return yyResult.createValue(yyValue, yyError);
07547: }
07548: }
07549:
07550: // Done.
07551: yyError = yyError.select("default value expected", yyStart);
07552: return yyError;
07553: }
07554:
07555: // =========================================================================
07556:
07557: /**
07558: * Parse nonterminal xtc.lang.JavaFive.EnumConstants.
07559: *
07560: * @param yyStart The index.
07561: * @return The result.
07562: * @throws IOException Signals an I/O error.
07563: */
07564: private Result pEnumConstants(final int yyStart) throws IOException {
07565: Result yyResult;
07566: int yyBase;
07567: int yyRepetition1;
07568: Pair<Node> yyRepValue1;
07569: Node yyValue;
07570: ParseError yyError = ParseError.DUMMY;
07571:
07572: // Alternative <Constants>.
07573:
07574: yyResult = pEnumConstant(yyStart);
07575: yyError = yyResult.select(yyError);
07576: if (yyResult.hasValue()) {
07577: final Node v$g$1 = yyResult.semanticValue();
07578:
07579: yyRepetition1 = yyResult.index;
07580: yyRepValue1 = Pair.empty();
07581: while (true) {
07582:
07583: yyBase = yyRepetition1;
07584: yyResult = pSymbol(yyBase);
07585: yyError = yyResult.select(yyError);
07586: if (yyResult.hasValue(",")) {
07587:
07588: yyResult = pEnumConstant(yyResult.index);
07589: yyError = yyResult.select(yyError);
07590: if (yyResult.hasValue()) {
07591: final Node v$el$1 = yyResult.semanticValue();
07592:
07593: yyRepetition1 = yyResult.index;
07594: yyRepValue1 = new Pair<Node>(v$el$1,
07595: yyRepValue1);
07596: continue;
07597: }
07598: } else {
07599: yyError = yyError.select("\",\" expected", yyBase);
07600: }
07601: break;
07602: }
07603: { // Start scope for v$g$2.
07604: final Pair<Node> v$g$2 = yyRepValue1.reverse();
07605:
07606: yyValue = GNode.createFromPair("EnumConstants", v$g$1,
07607: v$g$2);
07608: yyValue.setLocation(location(yyStart));
07609:
07610: return new SemanticValue(yyValue, yyRepetition1,
07611: yyError);
07612: } // End scope for v$g$2.
07613: }
07614:
07615: // Done.
07616: return yyError;
07617: }
07618:
07619: // =========================================================================
07620:
07621: /**
07622: * Parse nonterminal xtc.lang.JavaFive.EnumConstant.
07623: *
07624: * @param yyStart The index.
07625: * @return The result.
07626: * @throws IOException Signals an I/O error.
07627: */
07628: private Result pEnumConstant(final int yyStart) throws IOException {
07629: Result yyResult;
07630: int yyOption1;
07631: Node yyOpValue1;
07632: Node yyValue;
07633: ParseError yyError = ParseError.DUMMY;
07634:
07635: // Alternative 1.
07636:
07637: yyOption1 = yyStart;
07638: yyOpValue1 = null;
07639:
07640: yyResult = pAnnotations(yyOption1);
07641: yyError = yyResult.select(yyError);
07642: if (yyResult.hasValue()) {
07643: final Node v$el$1 = yyResult.semanticValue();
07644:
07645: yyOption1 = yyResult.index;
07646: yyOpValue1 = v$el$1;
07647: }
07648: { // Start scope for v$g$1.
07649: final Node v$g$1 = yyOpValue1;
07650:
07651: yyResult = pIdentifier(yyOption1);
07652: yyError = yyResult.select(yyError);
07653: if (yyResult.hasValue()) {
07654: final String v$g$2 = yyResult.semanticValue();
07655:
07656: yyOption1 = yyResult.index;
07657: yyOpValue1 = null;
07658:
07659: yyResult = pArguments(yyOption1);
07660: yyError = yyResult.select(yyError);
07661: if (yyResult.hasValue()) {
07662: final Node v$el$2 = yyResult.semanticValue();
07663:
07664: yyOption1 = yyResult.index;
07665: yyOpValue1 = v$el$2;
07666: }
07667: { // Start scope for v$g$3.
07668: final Node v$g$3 = yyOpValue1;
07669:
07670: yyOpValue1 = null;
07671:
07672: yyResult = pClassBody(yyOption1);
07673: yyError = yyResult.select(yyError);
07674: if (yyResult.hasValue()) {
07675: final Node v$el$3 = yyResult.semanticValue();
07676:
07677: yyOption1 = yyResult.index;
07678: yyOpValue1 = v$el$3;
07679: }
07680: { // Start scope for v$g$4.
07681: final Node v$g$4 = yyOpValue1;
07682:
07683: yyValue = GNode.create("EnumConstant", v$g$1,
07684: v$g$2, v$g$3, v$g$4);
07685: yyValue.setLocation(location(yyStart));
07686:
07687: return new SemanticValue(yyValue, yyOption1,
07688: yyError);
07689: } // End scope for v$g$4.
07690: } // End scope for v$g$3.
07691: }
07692: } // End scope for v$g$1.
07693:
07694: // Done.
07695: return yyError;
07696: }
07697:
07698: // =========================================================================
07699:
07700: /**
07701: * Parse nonterminal xtc.lang.JavaFive.EnumMembers.
07702: *
07703: * @param yyStart The index.
07704: * @return The result.
07705: * @throws IOException Signals an I/O error.
07706: */
07707: private Result pEnumMembers(final int yyStart) throws IOException {
07708: Result yyResult;
07709: int yyRepetition1;
07710: Pair<Node> yyRepValue1;
07711: Node yyValue;
07712: ParseError yyError = ParseError.DUMMY;
07713:
07714: // Alternative 1.
07715:
07716: yyResult = pSymbol(yyStart);
07717: yyError = yyResult.select(yyError);
07718: if (yyResult.hasValue(";")) {
07719:
07720: yyRepetition1 = yyResult.index;
07721: yyRepValue1 = Pair.empty();
07722: while (true) {
07723:
07724: yyResult = pDeclaration(yyRepetition1);
07725: yyError = yyResult.select(yyError);
07726: if (yyResult.hasValue()) {
07727: final Node v$el$1 = yyResult.semanticValue();
07728:
07729: yyRepetition1 = yyResult.index;
07730: yyRepValue1 = new Pair<Node>(v$el$1, yyRepValue1);
07731: continue;
07732: }
07733: break;
07734: }
07735: { // Start scope for v$g$1.
07736: final Pair<Node> v$g$1 = yyRepValue1.reverse();
07737:
07738: yyValue = GNode.createFromPair("EnumMembers", v$g$1);
07739: yyValue.setLocation(location(yyStart));
07740:
07741: return new SemanticValue(yyValue, yyRepetition1,
07742: yyError);
07743: } // End scope for v$g$1.
07744: }
07745:
07746: // Done.
07747: yyError = yyError.select("enum members expected", yyStart);
07748: return yyError;
07749: }
07750:
07751: // =========================================================================
07752:
07753: /**
07754: * Parse nonterminal xtc.lang.JavaFiveType.ResultType.
07755: *
07756: * @param yyStart The index.
07757: * @return The result.
07758: * @throws IOException Signals an I/O error.
07759: */
07760: private Result pResultType(final int yyStart) throws IOException {
07761: JavaFiveParserColumn yyColumn = (JavaFiveParserColumn) column(yyStart);
07762: if (null == yyColumn.chunk3)
07763: yyColumn.chunk3 = new Chunk3();
07764: if (null == yyColumn.chunk3.fResultType)
07765: yyColumn.chunk3.fResultType = pResultType$1(yyStart);
07766: return yyColumn.chunk3.fResultType;
07767: }
07768:
07769: /** Actually parse xtc.lang.JavaFiveType.ResultType. */
07770: private Result pResultType$1(final int yyStart) throws IOException {
07771: Result yyResult;
07772: Node yyValue;
07773: ParseError yyError = ParseError.DUMMY;
07774:
07775: // Alternative <Void>.
07776:
07777: yyResult = pVoidType(yyStart);
07778: yyError = yyResult.select(yyError);
07779: if (yyResult.hasValue()) {
07780: yyValue = yyResult.semanticValue();
07781:
07782: return yyResult.createValue(yyValue, yyError);
07783: }
07784:
07785: // Alternative <Regular>.
07786:
07787: yyResult = pType(yyStart);
07788: yyError = yyResult.select(yyError);
07789: if (yyResult.hasValue()) {
07790: yyValue = yyResult.semanticValue();
07791:
07792: return yyResult.createValue(yyValue, yyError);
07793: }
07794:
07795: // Done.
07796: return yyError;
07797: }
07798:
07799: // =========================================================================
07800:
07801: /**
07802: * Parse nonterminal xtc.lang.JavaFiveType.VoidType.
07803: *
07804: * @param yyStart The index.
07805: * @return The result.
07806: * @throws IOException Signals an I/O error.
07807: */
07808: private Result pVoidType(final int yyStart) throws IOException {
07809: Result yyResult;
07810: Node yyValue;
07811: ParseError yyError = ParseError.DUMMY;
07812:
07813: // Alternative <Void>.
07814:
07815: yyResult = pWord(yyStart);
07816: yyError = yyResult.select(yyError);
07817: if (yyResult.hasValue("void")) {
07818:
07819: yyValue = GNode.create("VoidType", false);
07820: yyValue.setLocation(location(yyStart));
07821:
07822: return yyResult.createValue(yyValue, yyError);
07823: }
07824:
07825: // Done.
07826: yyError = yyError.select("void type expected", yyStart);
07827: return yyError;
07828: }
07829:
07830: // =========================================================================
07831:
07832: /**
07833: * Parse nonterminal xtc.lang.JavaFiveType.Type.
07834: *
07835: * @param yyStart The index.
07836: * @return The result.
07837: * @throws IOException Signals an I/O error.
07838: */
07839: private Result pType(final int yyStart) throws IOException {
07840: JavaFiveParserColumn yyColumn = (JavaFiveParserColumn) column(yyStart);
07841: if (null == yyColumn.chunk3)
07842: yyColumn.chunk3 = new Chunk3();
07843: if (null == yyColumn.chunk3.fType)
07844: yyColumn.chunk3.fType = pType$1(yyStart);
07845: return yyColumn.chunk3.fType;
07846: }
07847:
07848: /** Actually parse xtc.lang.JavaFiveType.Type. */
07849: private Result pType$1(final int yyStart) throws IOException {
07850: Result yyResult;
07851: int yyOption1;
07852: Node yyOpValue1;
07853: Node yyValue;
07854: ParseError yyError = ParseError.DUMMY;
07855:
07856: // Alternative <Type>.
07857:
07858: yyResult = pTypeName(yyStart);
07859: yyError = yyResult.select(yyError);
07860: if (yyResult.hasValue()) {
07861: final Node v$g$1 = yyResult.semanticValue();
07862:
07863: yyOption1 = yyResult.index;
07864: yyOpValue1 = null;
07865:
07866: yyResult = pDimensions(yyOption1);
07867: yyError = yyResult.select(yyError);
07868: if (yyResult.hasValue()) {
07869: final Node v$el$1 = yyResult.semanticValue();
07870:
07871: yyOption1 = yyResult.index;
07872: yyOpValue1 = v$el$1;
07873: }
07874: { // Start scope for v$g$2.
07875: final Node v$g$2 = yyOpValue1;
07876:
07877: yyValue = GNode.create("Type", v$g$1, v$g$2);
07878: yyValue.setLocation(location(yyStart));
07879:
07880: return new SemanticValue(yyValue, yyOption1, yyError);
07881: } // End scope for v$g$2.
07882: }
07883:
07884: // Done.
07885: return yyError;
07886: }
07887:
07888: // =========================================================================
07889:
07890: /**
07891: * Parse nonterminal xtc.lang.JavaFiveType.TypeName.
07892: *
07893: * @param yyStart The index.
07894: * @return The result.
07895: * @throws IOException Signals an I/O error.
07896: */
07897: private Result pTypeName(final int yyStart) throws IOException {
07898: JavaFiveParserColumn yyColumn = (JavaFiveParserColumn) column(yyStart);
07899: if (null == yyColumn.chunk3)
07900: yyColumn.chunk3 = new Chunk3();
07901: if (null == yyColumn.chunk3.fTypeName)
07902: yyColumn.chunk3.fTypeName = pTypeName$1(yyStart);
07903: return yyColumn.chunk3.fTypeName;
07904: }
07905:
07906: /** Actually parse xtc.lang.JavaFiveType.TypeName. */
07907: private Result pTypeName$1(final int yyStart) throws IOException {
07908: Result yyResult;
07909: Node yyValue;
07910: ParseError yyError = ParseError.DUMMY;
07911:
07912: // Alternative <Basic>.
07913:
07914: yyResult = pPrimitiveType(yyStart);
07915: yyError = yyResult.select(yyError);
07916: if (yyResult.hasValue()) {
07917: yyValue = yyResult.semanticValue();
07918:
07919: return yyResult.createValue(yyValue, yyError);
07920: }
07921:
07922: // Alternative <Class>.
07923:
07924: yyResult = pClassType(yyStart);
07925: yyError = yyResult.select(yyError);
07926: if (yyResult.hasValue()) {
07927: yyValue = yyResult.semanticValue();
07928:
07929: return yyResult.createValue(yyValue, yyError);
07930: }
07931:
07932: // Done.
07933: return yyError;
07934: }
07935:
07936: // =========================================================================
07937:
07938: /**
07939: * Parse nonterminal xtc.lang.JavaFiveType.PrimitiveType.
07940: *
07941: * @param yyStart The index.
07942: * @return The result.
07943: * @throws IOException Signals an I/O error.
07944: */
07945: private Result pPrimitiveType(final int yyStart) throws IOException {
07946: JavaFiveParserColumn yyColumn = (JavaFiveParserColumn) column(yyStart);
07947: if (null == yyColumn.chunk3)
07948: yyColumn.chunk3 = new Chunk3();
07949: if (null == yyColumn.chunk3.fPrimitiveType)
07950: yyColumn.chunk3.fPrimitiveType = pPrimitiveType$1(yyStart);
07951: return yyColumn.chunk3.fPrimitiveType;
07952: }
07953:
07954: /** Actually parse xtc.lang.JavaFiveType.PrimitiveType. */
07955: private Result pPrimitiveType$1(final int yyStart)
07956: throws IOException {
07957: Result yyResult;
07958: Node yyValue;
07959: ParseError yyError = ParseError.DUMMY;
07960:
07961: // Alternative <Byte>.
07962:
07963: yyResult = pWord(yyStart);
07964: yyError = yyResult.select(yyError);
07965: if (yyResult.hasValue("byte")) {
07966: final String v$g$1 = "byte";
07967:
07968: yyValue = GNode.create("PrimitiveType", v$g$1);
07969: yyValue.setLocation(location(yyStart));
07970:
07971: return yyResult.createValue(yyValue, yyError);
07972: }
07973:
07974: // Alternative <Short>.
07975:
07976: yyResult = pWord(yyStart);
07977: yyError = yyResult.select(yyError);
07978: if (yyResult.hasValue("short")) {
07979: final String v$g$2 = "short";
07980:
07981: yyValue = GNode.create("PrimitiveType", v$g$2);
07982: yyValue.setLocation(location(yyStart));
07983:
07984: return yyResult.createValue(yyValue, yyError);
07985: }
07986:
07987: // Alternative <Char>.
07988:
07989: yyResult = pWord(yyStart);
07990: yyError = yyResult.select(yyError);
07991: if (yyResult.hasValue("char")) {
07992: final String v$g$3 = "char";
07993:
07994: yyValue = GNode.create("PrimitiveType", v$g$3);
07995: yyValue.setLocation(location(yyStart));
07996:
07997: return yyResult.createValue(yyValue, yyError);
07998: }
07999:
08000: // Alternative <Int>.
08001:
08002: yyResult = pWord(yyStart);
08003: yyError = yyResult.select(yyError);
08004: if (yyResult.hasValue("int")) {
08005: final String v$g$4 = "int";
08006:
08007: yyValue = GNode.create("PrimitiveType", v$g$4);
08008: yyValue.setLocation(location(yyStart));
08009:
08010: return yyResult.createValue(yyValue, yyError);
08011: }
08012:
08013: // Alternative <Long>.
08014:
08015: yyResult = pWord(yyStart);
08016: yyError = yyResult.select(yyError);
08017: if (yyResult.hasValue("long")) {
08018: final String v$g$5 = "long";
08019:
08020: yyValue = GNode.create("PrimitiveType", v$g$5);
08021: yyValue.setLocation(location(yyStart));
08022:
08023: return yyResult.createValue(yyValue, yyError);
08024: }
08025:
08026: // Alternative <Float>.
08027:
08028: yyResult = pWord(yyStart);
08029: yyError = yyResult.select(yyError);
08030: if (yyResult.hasValue("float")) {
08031: final String v$g$6 = "float";
08032:
08033: yyValue = GNode.create("PrimitiveType", v$g$6);
08034: yyValue.setLocation(location(yyStart));
08035:
08036: return yyResult.createValue(yyValue, yyError);
08037: }
08038:
08039: // Alternative <Double>.
08040:
08041: yyResult = pWord(yyStart);
08042: yyError = yyResult.select(yyError);
08043: if (yyResult.hasValue("double")) {
08044: final String v$g$7 = "double";
08045:
08046: yyValue = GNode.create("PrimitiveType", v$g$7);
08047: yyValue.setLocation(location(yyStart));
08048:
08049: return yyResult.createValue(yyValue, yyError);
08050: }
08051:
08052: // Alternative <Boolean>.
08053:
08054: yyResult = pWord(yyStart);
08055: yyError = yyResult.select(yyError);
08056: if (yyResult.hasValue("boolean")) {
08057: final String v$g$8 = "boolean";
08058:
08059: yyValue = GNode.create("PrimitiveType", v$g$8);
08060: yyValue.setLocation(location(yyStart));
08061:
08062: return yyResult.createValue(yyValue, yyError);
08063: }
08064:
08065: // Done.
08066: yyError = yyError.select("primitive type expected", yyStart);
08067: return yyError;
08068: }
08069:
08070: // =========================================================================
08071:
08072: /**
08073: * Parse nonterminal xtc.lang.JavaFiveType.ClassType.
08074: *
08075: * @param yyStart The index.
08076: * @return The result.
08077: * @throws IOException Signals an I/O error.
08078: */
08079: private Result pClassType(final int yyStart) throws IOException {
08080: int yyC;
08081: Result yyResult;
08082: boolean yyPredMatched;
08083: Node yyValue;
08084: ParseError yyError = ParseError.DUMMY;
08085:
08086: // Alternative <Name>.
08087:
08088: yyResult = pQualifiedIdentifier(yyStart);
08089: yyError = yyResult.select(yyError);
08090: if (yyResult.hasValue()) {
08091: yyValue = yyResult.semanticValue();
08092:
08093: yyPredMatched = false;
08094:
08095: yyC = character(yyResult.index);
08096: if ('<' == yyC) {
08097:
08098: yyPredMatched = true;
08099: }
08100:
08101: if (!yyPredMatched) {
08102:
08103: return yyResult.createValue(yyValue, yyError);
08104: } else {
08105: yyError = yyError
08106: .select("class type expected", yyStart);
08107: }
08108: }
08109:
08110: // Alternative <Instantiated>.
08111:
08112: yyResult = pInstantiatedType(yyStart);
08113: yyError = yyResult.select(yyError);
08114: if (yyResult.hasValue()) {
08115: yyValue = yyResult.semanticValue();
08116:
08117: return yyResult.createValue(yyValue, yyError);
08118: }
08119:
08120: // Done.
08121: return yyError;
08122: }
08123:
08124: // =========================================================================
08125:
08126: /**
08127: * Parse nonterminal xtc.lang.JavaFiveType.Dimensions.
08128: *
08129: * @param yyStart The index.
08130: * @return The result.
08131: * @throws IOException Signals an I/O error.
08132: */
08133: private Result pDimensions(final int yyStart) throws IOException {
08134: JavaFiveParserColumn yyColumn = (JavaFiveParserColumn) column(yyStart);
08135: if (null == yyColumn.chunk3)
08136: yyColumn.chunk3 = new Chunk3();
08137: if (null == yyColumn.chunk3.fDimensions)
08138: yyColumn.chunk3.fDimensions = pDimensions$1(yyStart);
08139: return yyColumn.chunk3.fDimensions;
08140: }
08141:
08142: /** Actually parse xtc.lang.JavaFiveType.Dimensions. */
08143: private Result pDimensions$1(final int yyStart) throws IOException {
08144: Result yyResult;
08145: Node yyValue;
08146: ParseError yyError = ParseError.DUMMY;
08147:
08148: // Alternative 1.
08149:
08150: yyResult = pDimensions$$Plus1(yyStart);
08151: yyError = yyResult.select(yyError);
08152: if (yyResult.hasValue()) {
08153: final Pair<String> v$g$1 = yyResult.semanticValue();
08154:
08155: yyValue = GNode.createFromPair("Dimensions", v$g$1);
08156: yyValue.setLocation(location(yyStart));
08157:
08158: return yyResult.createValue(yyValue, yyError);
08159: }
08160:
08161: // Done.
08162: return yyError;
08163: }
08164:
08165: // =========================================================================
08166:
08167: /**
08168: * Parse synthetic nonterminal xtc.lang.JavaFive.Dimensions$$Plus1.
08169: *
08170: * @param yyStart The index.
08171: * @return The result.
08172: * @throws IOException Signals an I/O error.
08173: */
08174: private Result pDimensions$$Plus1(final int yyStart)
08175: throws IOException {
08176: JavaFiveParserColumn yyColumn = (JavaFiveParserColumn) column(yyStart);
08177: if (null == yyColumn.chunk3)
08178: yyColumn.chunk3 = new Chunk3();
08179: if (null == yyColumn.chunk3.fDimensions$$Plus1)
08180: yyColumn.chunk3.fDimensions$$Plus1 = pDimensions$$Plus1$1(yyStart);
08181: return yyColumn.chunk3.fDimensions$$Plus1;
08182: }
08183:
08184: /** Actually parse xtc.lang.JavaFive.Dimensions$$Plus1. */
08185: private Result pDimensions$$Plus1$1(final int yyStart)
08186: throws IOException {
08187: Result yyResult;
08188: int yyBase;
08189: Pair<String> yyValue;
08190: ParseError yyError = ParseError.DUMMY;
08191:
08192: // Alternative 1.
08193:
08194: yyResult = pSymbol(yyStart);
08195: yyError = yyResult.select(yyError);
08196: if (yyResult.hasValue("[")) {
08197: final String v$el$1 = "[";
08198:
08199: yyBase = yyResult.index;
08200: yyResult = pSymbol(yyBase);
08201: yyError = yyResult.select(yyError);
08202: if (yyResult.hasValue("]")) {
08203:
08204: final int yyChoice1 = yyResult.index;
08205:
08206: // Nested alternative 1.
08207:
08208: yyResult = pDimensions$$Plus1(yyChoice1);
08209: yyError = yyResult.select(yyError);
08210: if (yyResult.hasValue()) {
08211: final Pair<String> v$2 = yyResult.semanticValue();
08212:
08213: yyValue = new Pair<String>(v$el$1, v$2);
08214:
08215: return yyResult.createValue(yyValue, yyError);
08216: }
08217:
08218: // Nested alternative 2.
08219:
08220: yyValue = new Pair<String>(v$el$1);
08221:
08222: return new SemanticValue(yyValue, yyChoice1, yyError);
08223: } else {
08224: yyError = yyError.select("\"]\" expected", yyBase);
08225: }
08226: }
08227:
08228: // Done.
08229: yyError = yyError.select("dimensions expected", yyStart);
08230: return yyError;
08231: }
08232:
08233: // =========================================================================
08234:
08235: /**
08236: * Parse nonterminal xtc.lang.JavaFiveType.TypeParameters.
08237: *
08238: * @param yyStart The index.
08239: * @return The result.
08240: * @throws IOException Signals an I/O error.
08241: */
08242: private Result pTypeParameters(final int yyStart)
08243: throws IOException {
08244: JavaFiveParserColumn yyColumn = (JavaFiveParserColumn) column(yyStart);
08245: if (null == yyColumn.chunk3)
08246: yyColumn.chunk3 = new Chunk3();
08247: if (null == yyColumn.chunk3.fTypeParameters)
08248: yyColumn.chunk3.fTypeParameters = pTypeParameters$1(yyStart);
08249: return yyColumn.chunk3.fTypeParameters;
08250: }
08251:
08252: /** Actually parse xtc.lang.JavaFiveType.TypeParameters. */
08253: private Result pTypeParameters$1(final int yyStart)
08254: throws IOException {
08255: int yyC;
08256: int yyIndex;
08257: Result yyResult;
08258: int yyBase;
08259: Node yyValue;
08260: ParseError yyError = ParseError.DUMMY;
08261:
08262: // Alternative <Parameters>.
08263:
08264: yyC = character(yyStart);
08265: if ('<' == yyC) {
08266: yyIndex = yyStart + 1;
08267:
08268: yyResult = pSpacing(yyIndex);
08269: yyError = yyResult.select(yyError);
08270: if (yyResult.hasValue()) {
08271:
08272: yyResult = pTypeParameter(yyResult.index);
08273: yyError = yyResult.select(yyError);
08274: if (yyResult.hasValue()) {
08275: final Node v$g$1 = yyResult.semanticValue();
08276:
08277: yyResult = pTypeParameters$$Star1(yyResult.index);
08278: yyError = yyResult.select(yyError);
08279: if (yyResult.hasValue()) {
08280: final Pair<Node> v$g$2 = yyResult
08281: .semanticValue();
08282:
08283: yyBase = yyResult.index;
08284: yyC = character(yyBase);
08285: if ('>' == yyC) {
08286: yyIndex = yyResult.index + 1;
08287:
08288: yyResult = pSpacing(yyIndex);
08289: yyError = yyResult.select(yyError);
08290: if (yyResult.hasValue()) {
08291:
08292: yyValue = GNode.createFromPair(
08293: "TypeParameters", v$g$1, v$g$2);
08294: yyValue.setLocation(location(yyStart));
08295:
08296: return yyResult.createValue(yyValue,
08297: yyError);
08298: }
08299: } else {
08300: yyError = yyError.select("\">\" expected",
08301: yyBase);
08302: }
08303: }
08304: }
08305: }
08306: }
08307:
08308: // Done.
08309: yyError = yyError.select("type parameters expected", yyStart);
08310: return yyError;
08311: }
08312:
08313: // =========================================================================
08314:
08315: /**
08316: * Parse synthetic nonterminal xtc.lang.JavaFive.TypeParameters$$Star1.
08317: *
08318: * @param yyStart The index.
08319: * @return The result.
08320: * @throws IOException Signals an I/O error.
08321: */
08322: private Result pTypeParameters$$Star1(final int yyStart)
08323: throws IOException {
08324:
08325: JavaFiveParserColumn yyColumn = (JavaFiveParserColumn) column(yyStart);
08326: if (null == yyColumn.chunk3)
08327: yyColumn.chunk3 = new Chunk3();
08328: if (null == yyColumn.chunk3.fTypeParameters$$Star1)
08329: yyColumn.chunk3.fTypeParameters$$Star1 = pTypeParameters$$Star1$1(yyStart);
08330: return yyColumn.chunk3.fTypeParameters$$Star1;
08331: }
08332:
08333: /** Actually parse xtc.lang.JavaFive.TypeParameters$$Star1. */
08334: private Result pTypeParameters$$Star1$1(final int yyStart)
08335: throws IOException {
08336:
08337: Result yyResult;
08338: Pair<Node> yyValue;
08339: ParseError yyError = ParseError.DUMMY;
08340:
08341: // Alternative 1.
08342:
08343: yyResult = pSymbol(yyStart);
08344: yyError = yyResult.select(yyError);
08345: if (yyResult.hasValue(",")) {
08346:
08347: yyResult = pTypeParameter(yyResult.index);
08348: yyError = yyResult.select(yyError);
08349: if (yyResult.hasValue()) {
08350: final Node v$el$1 = yyResult.semanticValue();
08351:
08352: yyResult = pTypeParameters$$Star1(yyResult.index);
08353: yyError = yyResult.select(yyError);
08354: if (yyResult.hasValue()) {
08355: final Pair<Node> v$2 = yyResult.semanticValue();
08356:
08357: yyValue = new Pair<Node>(v$el$1, v$2);
08358:
08359: return yyResult.createValue(yyValue, yyError);
08360: }
08361: }
08362: }
08363:
08364: // Alternative 2.
08365:
08366: yyValue = Pair.empty();
08367:
08368: return new SemanticValue(yyValue, yyStart, yyError);
08369: }
08370:
08371: // =========================================================================
08372:
08373: /**
08374: * Parse nonterminal xtc.lang.JavaFiveType.TypeParameter.
08375: *
08376: * @param yyStart The index.
08377: * @return The result.
08378: * @throws IOException Signals an I/O error.
08379: */
08380: private Result pTypeParameter(final int yyStart) throws IOException {
08381: JavaFiveParserColumn yyColumn = (JavaFiveParserColumn) column(yyStart);
08382: if (null == yyColumn.chunk3)
08383: yyColumn.chunk3 = new Chunk3();
08384: if (null == yyColumn.chunk3.fTypeParameter)
08385: yyColumn.chunk3.fTypeParameter = pTypeParameter$1(yyStart);
08386: return yyColumn.chunk3.fTypeParameter;
08387: }
08388:
08389: /** Actually parse xtc.lang.JavaFiveType.TypeParameter. */
08390: private Result pTypeParameter$1(final int yyStart)
08391: throws IOException {
08392: Result yyResult;
08393: int yyBase;
08394: int yyOption1;
08395: Node yyOpValue1;
08396: Node yyValue;
08397: ParseError yyError = ParseError.DUMMY;
08398:
08399: // Alternative <Parameter>.
08400:
08401: yyResult = pIdentifier(yyStart);
08402: yyError = yyResult.select(yyError);
08403: if (yyResult.hasValue()) {
08404: final String v$g$1 = yyResult.semanticValue();
08405:
08406: yyOption1 = yyResult.index;
08407: yyOpValue1 = null;
08408:
08409: yyBase = yyOption1;
08410: yyResult = pWord(yyBase);
08411: yyError = yyResult.select(yyError);
08412: if (yyResult.hasValue("extends")) {
08413:
08414: yyResult = pBound(yyResult.index);
08415: yyError = yyResult.select(yyError);
08416: if (yyResult.hasValue()) {
08417: final Node v$el$1 = yyResult.semanticValue();
08418:
08419: yyOption1 = yyResult.index;
08420: yyOpValue1 = v$el$1;
08421: }
08422: } else {
08423: yyError = yyError
08424: .select("\"extends\" expected", yyBase);
08425: }
08426: { // Start scope for v$g$2.
08427: final Node v$g$2 = yyOpValue1;
08428:
08429: yyValue = GNode.create("TypeParameter", v$g$1, v$g$2);
08430: yyValue.setLocation(location(yyStart));
08431:
08432: return new SemanticValue(yyValue, yyOption1, yyError);
08433: } // End scope for v$g$2.
08434: }
08435:
08436: // Done.
08437: return yyError;
08438: }
08439:
08440: // =========================================================================
08441:
08442: /**
08443: * Parse nonterminal xtc.lang.JavaFiveType.Bound.
08444: *
08445: * @param yyStart The index.
08446: * @return The result.
08447: * @throws IOException Signals an I/O error.
08448: */
08449: private Result pBound(final int yyStart) throws IOException {
08450: Result yyResult;
08451: int yyBase;
08452: int yyRepetition1;
08453: Pair<Node> yyRepValue1;
08454: Node yyValue;
08455: ParseError yyError = ParseError.DUMMY;
08456:
08457: // Alternative <Bound>.
08458:
08459: yyResult = pType(yyStart);
08460: yyError = yyResult.select(yyError);
08461: if (yyResult.hasValue()) {
08462: final Node v$g$1 = yyResult.semanticValue();
08463:
08464: yyRepetition1 = yyResult.index;
08465: yyRepValue1 = Pair.empty();
08466: while (true) {
08467:
08468: yyBase = yyRepetition1;
08469: yyResult = pSymbol(yyBase);
08470: yyError = yyResult.select(yyError);
08471: if (yyResult.hasValue("&")) {
08472:
08473: yyResult = pType(yyResult.index);
08474: yyError = yyResult.select(yyError);
08475: if (yyResult.hasValue()) {
08476: final Node v$el$1 = yyResult.semanticValue();
08477:
08478: yyRepetition1 = yyResult.index;
08479: yyRepValue1 = new Pair<Node>(v$el$1,
08480: yyRepValue1);
08481: continue;
08482: }
08483: } else {
08484: yyError = yyError.select("\"&\" expected", yyBase);
08485: }
08486: break;
08487: }
08488: { // Start scope for v$g$2.
08489: final Pair<Node> v$g$2 = yyRepValue1.reverse();
08490:
08491: yyValue = GNode.createFromPair("Bound", v$g$1, v$g$2);
08492: yyValue.setLocation(location(yyStart));
08493:
08494: return new SemanticValue(yyValue, yyRepetition1,
08495: yyError);
08496: } // End scope for v$g$2.
08497: }
08498:
08499: // Done.
08500: return yyError;
08501: }
08502:
08503: // =========================================================================
08504:
08505: /**
08506: * Parse nonterminal xtc.lang.JavaFiveType.TypeArguments.
08507: *
08508: * @param yyStart The index.
08509: * @return The result.
08510: * @throws IOException Signals an I/O error.
08511: */
08512: private Result pTypeArguments(final int yyStart) throws IOException {
08513: JavaFiveParserColumn yyColumn = (JavaFiveParserColumn) column(yyStart);
08514: if (null == yyColumn.chunk3)
08515: yyColumn.chunk3 = new Chunk3();
08516: if (null == yyColumn.chunk3.fTypeArguments)
08517: yyColumn.chunk3.fTypeArguments = pTypeArguments$1(yyStart);
08518: return yyColumn.chunk3.fTypeArguments;
08519: }
08520:
08521: /** Actually parse xtc.lang.JavaFiveType.TypeArguments. */
08522: private Result pTypeArguments$1(final int yyStart)
08523: throws IOException {
08524: int yyC;
08525: int yyIndex;
08526: Result yyResult;
08527: int yyBase;
08528: Node yyValue;
08529: ParseError yyError = ParseError.DUMMY;
08530:
08531: // Alternative <Arguments>.
08532:
08533: yyC = character(yyStart);
08534: if ('<' == yyC) {
08535: yyIndex = yyStart + 1;
08536:
08537: yyResult = pSpacing(yyIndex);
08538: yyError = yyResult.select(yyError);
08539: if (yyResult.hasValue()) {
08540:
08541: yyResult = pTypeArgument(yyResult.index);
08542: yyError = yyResult.select(yyError);
08543: if (yyResult.hasValue()) {
08544: final Node v$g$1 = yyResult.semanticValue();
08545:
08546: yyResult = pTypeArguments$$Star1(yyResult.index);
08547: yyError = yyResult.select(yyError);
08548: if (yyResult.hasValue()) {
08549: final Pair<Node> v$g$2 = yyResult
08550: .semanticValue();
08551:
08552: yyBase = yyResult.index;
08553: yyC = character(yyBase);
08554: if ('>' == yyC) {
08555: yyIndex = yyResult.index + 1;
08556:
08557: yyResult = pSpacing(yyIndex);
08558: yyError = yyResult.select(yyError);
08559: if (yyResult.hasValue()) {
08560:
08561: yyValue = GNode.createFromPair(
08562: "TypeArguments", v$g$1, v$g$2);
08563: yyValue.setLocation(location(yyStart));
08564:
08565: return yyResult.createValue(yyValue,
08566: yyError);
08567: }
08568: } else {
08569: yyError = yyError.select("\">\" expected",
08570: yyBase);
08571: }
08572: }
08573: }
08574: }
08575: }
08576:
08577: // Done.
08578: yyError = yyError.select("type arguments expected", yyStart);
08579: return yyError;
08580: }
08581:
08582: // =========================================================================
08583:
08584: /**
08585: * Parse synthetic nonterminal xtc.lang.JavaFive.TypeArguments$$Star1.
08586: *
08587: * @param yyStart The index.
08588: * @return The result.
08589: * @throws IOException Signals an I/O error.
08590: */
08591: private Result pTypeArguments$$Star1(final int yyStart)
08592: throws IOException {
08593: JavaFiveParserColumn yyColumn = (JavaFiveParserColumn) column(yyStart);
08594: if (null == yyColumn.chunk4)
08595: yyColumn.chunk4 = new Chunk4();
08596: if (null == yyColumn.chunk4.fTypeArguments$$Star1)
08597: yyColumn.chunk4.fTypeArguments$$Star1 = pTypeArguments$$Star1$1(yyStart);
08598: return yyColumn.chunk4.fTypeArguments$$Star1;
08599: }
08600:
08601: /** Actually parse xtc.lang.JavaFive.TypeArguments$$Star1. */
08602: private Result pTypeArguments$$Star1$1(final int yyStart)
08603: throws IOException {
08604:
08605: Result yyResult;
08606: Pair<Node> yyValue;
08607: ParseError yyError = ParseError.DUMMY;
08608:
08609: // Alternative 1.
08610:
08611: yyResult = pSymbol(yyStart);
08612: yyError = yyResult.select(yyError);
08613: if (yyResult.hasValue(",")) {
08614:
08615: yyResult = pTypeArgument(yyResult.index);
08616: yyError = yyResult.select(yyError);
08617: if (yyResult.hasValue()) {
08618: final Node v$el$1 = yyResult.semanticValue();
08619:
08620: yyResult = pTypeArguments$$Star1(yyResult.index);
08621: yyError = yyResult.select(yyError);
08622: if (yyResult.hasValue()) {
08623: final Pair<Node> v$2 = yyResult.semanticValue();
08624:
08625: yyValue = new Pair<Node>(v$el$1, v$2);
08626:
08627: return yyResult.createValue(yyValue, yyError);
08628: }
08629: }
08630: }
08631:
08632: // Alternative 2.
08633:
08634: yyValue = Pair.empty();
08635:
08636: return new SemanticValue(yyValue, yyStart, yyError);
08637: }
08638:
08639: // =========================================================================
08640:
08641: /**
08642: * Parse nonterminal xtc.lang.JavaFiveType.TypeArgument.
08643: *
08644: * @param yyStart The index.
08645: * @return The result.
08646: * @throws IOException Signals an I/O error.
08647: */
08648: private Result pTypeArgument(final int yyStart) throws IOException {
08649: JavaFiveParserColumn yyColumn = (JavaFiveParserColumn) column(yyStart);
08650: if (null == yyColumn.chunk4)
08651: yyColumn.chunk4 = new Chunk4();
08652: if (null == yyColumn.chunk4.fTypeArgument)
08653: yyColumn.chunk4.fTypeArgument = pTypeArgument$1(yyStart);
08654: return yyColumn.chunk4.fTypeArgument;
08655: }
08656:
08657: /** Actually parse xtc.lang.JavaFiveType.TypeArgument. */
08658: private Result pTypeArgument$1(final int yyStart)
08659: throws IOException {
08660: Result yyResult;
08661: Node yyValue;
08662: ParseError yyError = ParseError.DUMMY;
08663:
08664: // Alternative <Type>.
08665:
08666: yyResult = pType(yyStart);
08667: yyError = yyResult.select(yyError);
08668: if (yyResult.hasValue()) {
08669: yyValue = yyResult.semanticValue();
08670:
08671: return yyResult.createValue(yyValue, yyError);
08672: }
08673:
08674: // Alternative <Wildcard>.
08675:
08676: yyResult = pWildcard(yyStart);
08677: yyError = yyResult.select(yyError);
08678: if (yyResult.hasValue()) {
08679: yyValue = yyResult.semanticValue();
08680:
08681: return yyResult.createValue(yyValue, yyError);
08682: }
08683:
08684: // Done.
08685: return yyError;
08686: }
08687:
08688: // =========================================================================
08689:
08690: /**
08691: * Parse nonterminal xtc.lang.JavaFiveType.Wildcard.
08692: *
08693: * @param yyStart The index.
08694: * @return The result.
08695: * @throws IOException Signals an I/O error.
08696: */
08697: private Result pWildcard(final int yyStart) throws IOException {
08698: Result yyResult;
08699: int yyOption1;
08700: Node yyOpValue1;
08701: Node yyValue;
08702: ParseError yyError = ParseError.DUMMY;
08703:
08704: // Alternative <Wildcard>.
08705:
08706: yyResult = pSymbol(yyStart);
08707: yyError = yyResult.select(yyError);
08708: if (yyResult.hasValue("?")) {
08709:
08710: yyOption1 = yyResult.index;
08711: yyOpValue1 = null;
08712:
08713: yyResult = pWildcardBound(yyOption1);
08714: yyError = yyResult.select(yyError);
08715: if (yyResult.hasValue()) {
08716: final Node v$el$1 = yyResult.semanticValue();
08717:
08718: yyOption1 = yyResult.index;
08719: yyOpValue1 = v$el$1;
08720: }
08721: { // Start scope for v$g$1.
08722: final Node v$g$1 = yyOpValue1;
08723:
08724: yyValue = GNode.create("Wildcard", v$g$1);
08725: yyValue.setLocation(location(yyStart));
08726:
08727: return new SemanticValue(yyValue, yyOption1, yyError);
08728: } // End scope for v$g$1.
08729: }
08730:
08731: // Done.
08732: yyError = yyError.select("wildcard expected", yyStart);
08733: return yyError;
08734: }
08735:
08736: // =========================================================================
08737:
08738: /**
08739: * Parse nonterminal xtc.lang.JavaFiveType.WildcardBound.
08740: *
08741: * @param yyStart The index.
08742: * @return The result.
08743: * @throws IOException Signals an I/O error.
08744: */
08745: private Result pWildcardBound(final int yyStart) throws IOException {
08746: Result yyResult;
08747: Node yyValue;
08748: ParseError yyError = ParseError.DUMMY;
08749:
08750: // Alternative <Extends>.
08751:
08752: yyResult = pWord(yyStart);
08753: yyError = yyResult.select(yyError);
08754: if (yyResult.hasValue("extends")) {
08755: final String v$g$1 = "extends";
08756:
08757: yyResult = pType(yyResult.index);
08758: yyError = yyResult.select(yyError);
08759: if (yyResult.hasValue()) {
08760: final Node v$g$2 = yyResult.semanticValue();
08761:
08762: yyValue = GNode.create("WildcardBound", v$g$1, v$g$2);
08763: yyValue.setLocation(location(yyStart));
08764:
08765: return yyResult.createValue(yyValue, yyError);
08766: }
08767: }
08768:
08769: // Alternative <Super>.
08770:
08771: yyResult = pWord(yyStart);
08772: yyError = yyResult.select(yyError);
08773: if (yyResult.hasValue("super")) {
08774: final String v$g$3 = "super";
08775:
08776: yyResult = pType(yyResult.index);
08777: yyError = yyResult.select(yyError);
08778: if (yyResult.hasValue()) {
08779: final Node v$g$4 = yyResult.semanticValue();
08780:
08781: yyValue = GNode.create("WildcardBound", v$g$3, v$g$4);
08782: yyValue.setLocation(location(yyStart));
08783:
08784: return yyResult.createValue(yyValue, yyError);
08785: }
08786: }
08787:
08788: // Done.
08789: yyError = yyError.select("wildcard bound expected", yyStart);
08790: return yyError;
08791: }
08792:
08793: // =========================================================================
08794:
08795: /**
08796: * Parse nonterminal xtc.lang.JavaFiveType.InstantiatedType.
08797: *
08798: * @param yyStart The index.
08799: * @return The result.
08800: * @throws IOException Signals an I/O error.
08801: */
08802: private Result pInstantiatedType(final int yyStart)
08803: throws IOException {
08804: Result yyResult;
08805: int yyBase;
08806: int yyRepetition1;
08807: Pair<Node> yyRepValue1;
08808: Node yyValue;
08809: ParseError yyError = ParseError.DUMMY;
08810:
08811: // Alternative <Reference>.
08812:
08813: yyResult = pTypeInstantiation(yyStart);
08814: yyError = yyResult.select(yyError);
08815: if (yyResult.hasValue()) {
08816: final Node v$g$1 = yyResult.semanticValue();
08817:
08818: yyRepetition1 = yyResult.index;
08819: yyRepValue1 = Pair.empty();
08820: while (true) {
08821:
08822: yyBase = yyRepetition1;
08823: yyResult = pSymbol(yyBase);
08824: yyError = yyResult.select(yyError);
08825: if (yyResult.hasValue(".")) {
08826:
08827: yyResult = pTypeInstantiation(yyResult.index);
08828: yyError = yyResult.select(yyError);
08829: if (yyResult.hasValue()) {
08830: final Node v$el$1 = yyResult.semanticValue();
08831:
08832: yyRepetition1 = yyResult.index;
08833: yyRepValue1 = new Pair<Node>(v$el$1,
08834: yyRepValue1);
08835: continue;
08836: }
08837: } else {
08838: yyError = yyError.select("\".\" expected", yyBase);
08839: }
08840: break;
08841: }
08842: { // Start scope for v$g$2.
08843: final Pair<Node> v$g$2 = yyRepValue1.reverse();
08844:
08845: yyValue = GNode.createFromPair("InstantiatedType",
08846: v$g$1, v$g$2);
08847: yyValue.setLocation(location(yyStart));
08848:
08849: return new SemanticValue(yyValue, yyRepetition1,
08850: yyError);
08851: } // End scope for v$g$2.
08852: }
08853:
08854: // Done.
08855: return yyError;
08856: }
08857:
08858: // =========================================================================
08859:
08860: /**
08861: * Parse nonterminal xtc.lang.JavaFiveType.TypeInstantiation.
08862: *
08863: * @param yyStart The index.
08864: * @return The result.
08865: * @throws IOException Signals an I/O error.
08866: */
08867: private Result pTypeInstantiation(final int yyStart)
08868: throws IOException {
08869: JavaFiveParserColumn yyColumn = (JavaFiveParserColumn) column(yyStart);
08870: if (null == yyColumn.chunk4)
08871: yyColumn.chunk4 = new Chunk4();
08872: if (null == yyColumn.chunk4.fTypeInstantiation)
08873: yyColumn.chunk4.fTypeInstantiation = pTypeInstantiation$1(yyStart);
08874: return yyColumn.chunk4.fTypeInstantiation;
08875: }
08876:
08877: /** Actually parse xtc.lang.JavaFiveType.TypeInstantiation. */
08878: private Result pTypeInstantiation$1(final int yyStart)
08879: throws IOException {
08880: Result yyResult;
08881: int yyOption1;
08882: Node yyOpValue1;
08883: Node yyValue;
08884: ParseError yyError = ParseError.DUMMY;
08885:
08886: // Alternative <Instantiation>.
08887:
08888: yyResult = pIdentifier(yyStart);
08889: yyError = yyResult.select(yyError);
08890: if (yyResult.hasValue()) {
08891: final String v$g$1 = yyResult.semanticValue();
08892:
08893: yyOption1 = yyResult.index;
08894: yyOpValue1 = null;
08895:
08896: yyResult = pTypeArguments(yyOption1);
08897: yyError = yyResult.select(yyError);
08898: if (yyResult.hasValue()) {
08899: final Node v$el$1 = yyResult.semanticValue();
08900:
08901: yyOption1 = yyResult.index;
08902: yyOpValue1 = v$el$1;
08903: }
08904: { // Start scope for v$g$2.
08905: final Node v$g$2 = yyOpValue1;
08906:
08907: yyValue = GNode.create("TypeInstantiation", v$g$1,
08908: v$g$2);
08909: yyValue.setLocation(location(yyStart));
08910:
08911: return new SemanticValue(yyValue, yyOption1, yyError);
08912: } // End scope for v$g$2.
08913: }
08914:
08915: // Done.
08916: return yyError;
08917: }
08918:
08919: // =========================================================================
08920:
08921: /**
08922: * Parse nonterminal xtc.lang.JavaConstant.Literal.
08923: *
08924: * @param yyStart The index.
08925: * @return The result.
08926: * @throws IOException Signals an I/O error.
08927: */
08928: private Result pLiteral(final int yyStart) throws IOException {
08929: Result yyResult;
08930: Node yyValue;
08931: ParseError yyError = ParseError.DUMMY;
08932:
08933: // Alternative 1.
08934:
08935: yyResult = pFloatingPointLiteral(yyStart);
08936: yyError = yyResult.select(yyError);
08937: if (yyResult.hasValue()) {
08938: yyValue = yyResult.semanticValue();
08939:
08940: yyResult = pSpacing(yyResult.index);
08941: yyError = yyResult.select(yyError);
08942: if (yyResult.hasValue()) {
08943:
08944: return yyResult.createValue(yyValue, yyError);
08945: }
08946: }
08947:
08948: // Alternative 2.
08949:
08950: yyResult = pIntegerLiteral(yyStart);
08951: yyError = yyResult.select(yyError);
08952: if (yyResult.hasValue()) {
08953: yyValue = yyResult.semanticValue();
08954:
08955: yyResult = pSpacing(yyResult.index);
08956: yyError = yyResult.select(yyError);
08957: if (yyResult.hasValue()) {
08958:
08959: return yyResult.createValue(yyValue, yyError);
08960: }
08961: }
08962:
08963: // Alternative 3.
08964:
08965: yyResult = pCharacterLiteral(yyStart);
08966: yyError = yyResult.select(yyError);
08967: if (yyResult.hasValue()) {
08968: yyValue = yyResult.semanticValue();
08969:
08970: yyResult = pSpacing(yyResult.index);
08971: yyError = yyResult.select(yyError);
08972: if (yyResult.hasValue()) {
08973:
08974: return yyResult.createValue(yyValue, yyError);
08975: }
08976: }
08977:
08978: // Alternative 4.
08979:
08980: yyResult = pStringLiteral(yyStart);
08981: yyError = yyResult.select(yyError);
08982: if (yyResult.hasValue()) {
08983: yyValue = yyResult.semanticValue();
08984:
08985: yyResult = pSpacing(yyResult.index);
08986: yyError = yyResult.select(yyError);
08987: if (yyResult.hasValue()) {
08988:
08989: return yyResult.createValue(yyValue, yyError);
08990: }
08991: }
08992:
08993: // Alternative 5.
08994:
08995: yyResult = pWord(yyStart);
08996: yyError = yyResult.select(yyError);
08997: if (yyResult.hasValue("true")) {
08998: final String v$g$1 = "true";
08999:
09000: yyValue = GNode.create("BooleanLiteral", v$g$1);
09001: yyValue.setLocation(location(yyStart));
09002:
09003: return yyResult.createValue(yyValue, yyError);
09004: }
09005:
09006: // Alternative 6.
09007:
09008: yyResult = pWord(yyStart);
09009: yyError = yyResult.select(yyError);
09010: if (yyResult.hasValue("false")) {
09011: final String v$g$2 = "false";
09012:
09013: yyValue = GNode.create("BooleanLiteral", v$g$2);
09014: yyValue.setLocation(location(yyStart));
09015:
09016: return yyResult.createValue(yyValue, yyError);
09017: }
09018:
09019: // Alternative 7.
09020:
09021: yyResult = pWord(yyStart);
09022: yyError = yyResult.select(yyError);
09023: if (yyResult.hasValue("null")) {
09024:
09025: yyValue = GNode.create("NullLiteral", false);
09026: yyValue.setLocation(location(yyStart));
09027:
09028: return yyResult.createValue(yyValue, yyError);
09029: }
09030:
09031: // Done.
09032: yyError = yyError.select("literal expected", yyStart);
09033: return yyError;
09034: }
09035:
09036: // =========================================================================
09037:
09038: /**
09039: * Parse nonterminal xtc.lang.JavaConstant.IntegerLiteral.
09040: *
09041: * @param yyStart The index.
09042: * @return The result.
09043: * @throws IOException Signals an I/O error.
09044: */
09045: private Result pIntegerLiteral(final int yyStart)
09046: throws IOException {
09047: Result yyResult;
09048: Node yyValue;
09049: ParseError yyError = ParseError.DUMMY;
09050:
09051: // Alternative <Hex>.
09052:
09053: yyResult = pHexLiteral(yyStart);
09054: yyError = yyResult.select(yyError);
09055: if (yyResult.hasValue()) {
09056: final String v$g$1 = yyResult.semanticValue();
09057:
09058: yyValue = GNode.create("IntegerLiteral", v$g$1);
09059: yyValue.setLocation(location(yyStart));
09060:
09061: return yyResult.createValue(yyValue, yyError);
09062: }
09063:
09064: // Alternative <Octal>.
09065:
09066: yyResult = pOctalLiteral(yyStart);
09067: yyError = yyResult.select(yyError);
09068: if (yyResult.hasValue()) {
09069: final String v$g$2 = yyResult.semanticValue();
09070:
09071: yyValue = GNode.create("IntegerLiteral", v$g$2);
09072: yyValue.setLocation(location(yyStart));
09073:
09074: return yyResult.createValue(yyValue, yyError);
09075: }
09076:
09077: // Alternative <Decimal>.
09078:
09079: yyResult = pDecimalLiteral(yyStart);
09080: yyError = yyResult.select(yyError);
09081: if (yyResult.hasValue()) {
09082: final String v$g$3 = yyResult.semanticValue();
09083:
09084: yyValue = GNode.create("IntegerLiteral", v$g$3);
09085: yyValue.setLocation(location(yyStart));
09086:
09087: return yyResult.createValue(yyValue, yyError);
09088: }
09089:
09090: // Done.
09091: return yyError;
09092: }
09093:
09094: // =========================================================================
09095:
09096: /**
09097: * Parse nonterminal xtc.lang.JavaConstant.HexLiteral.
09098: *
09099: * @param yyStart The index.
09100: * @return The result.
09101: * @throws IOException Signals an I/O error.
09102: */
09103: private Result pHexLiteral(final int yyStart) throws IOException {
09104: int yyC;
09105: int yyIndex;
09106: Result yyResult;
09107: int yyOption1;
09108: String yyValue;
09109: ParseError yyError = ParseError.DUMMY;
09110:
09111: // Alternative 1.
09112:
09113: yyResult = pHexNumeral(yyStart);
09114: yyError = yyResult.select(yyError);
09115: if (yyResult.hasValue()) {
09116:
09117: yyOption1 = yyResult.index;
09118:
09119: yyC = character(yyOption1);
09120: if (-1 != yyC) {
09121: yyIndex = yyOption1 + 1;
09122:
09123: switch (yyC) {
09124: case 'L':
09125: case 'l': {
09126: yyOption1 = yyIndex;
09127: }
09128:
09129: default:
09130: /* No match. */
09131: }
09132: }
09133:
09134: yyValue = difference(yyStart, yyOption1);
09135:
09136: return new SemanticValue(yyValue, yyOption1, yyError);
09137: }
09138:
09139: // Done.
09140: yyError = yyError.select("hex literal expected", yyStart);
09141: return yyError;
09142: }
09143:
09144: // =========================================================================
09145:
09146: /**
09147: * Parse nonterminal xtc.lang.JavaConstant.OctalLiteral.
09148: *
09149: * @param yyStart The index.
09150: * @return The result.
09151: * @throws IOException Signals an I/O error.
09152: */
09153: private Result pOctalLiteral(final int yyStart) throws IOException {
09154: int yyC;
09155: int yyIndex;
09156: Result yyResult;
09157: int yyOption1;
09158: String yyValue;
09159: ParseError yyError = ParseError.DUMMY;
09160:
09161: // Alternative 1.
09162:
09163: yyResult = pOctalNumeral(yyStart);
09164: yyError = yyResult.select(yyError);
09165: if (yyResult.hasValue()) {
09166:
09167: yyOption1 = yyResult.index;
09168:
09169: yyC = character(yyOption1);
09170: if (-1 != yyC) {
09171: yyIndex = yyOption1 + 1;
09172:
09173: switch (yyC) {
09174: case 'L':
09175: case 'l': {
09176: yyOption1 = yyIndex;
09177: }
09178:
09179: default:
09180: /* No match. */
09181: }
09182: }
09183:
09184: yyValue = difference(yyStart, yyOption1);
09185:
09186: return new SemanticValue(yyValue, yyOption1, yyError);
09187: }
09188:
09189: // Done.
09190: yyError = yyError.select("octal literal expected", yyStart);
09191: return yyError;
09192: }
09193:
09194: // =========================================================================
09195:
09196: /**
09197: * Parse nonterminal xtc.lang.JavaConstant.DecimalLiteral.
09198: *
09199: * @param yyStart The index.
09200: * @return The result.
09201: * @throws IOException Signals an I/O error.
09202: */
09203: private Result pDecimalLiteral(final int yyStart)
09204: throws IOException {
09205: int yyC;
09206: int yyIndex;
09207: Result yyResult;
09208: int yyOption1;
09209: String yyValue;
09210: ParseError yyError = ParseError.DUMMY;
09211:
09212: // Alternative 1.
09213:
09214: yyResult = pDecimalNumeral(yyStart);
09215: yyError = yyResult.select(yyError);
09216: if (yyResult.hasValue()) {
09217:
09218: yyOption1 = yyResult.index;
09219:
09220: yyC = character(yyOption1);
09221: if (-1 != yyC) {
09222: yyIndex = yyOption1 + 1;
09223:
09224: switch (yyC) {
09225: case 'L':
09226: case 'l': {
09227: yyOption1 = yyIndex;
09228: }
09229:
09230: default:
09231: /* No match. */
09232: }
09233: }
09234:
09235: yyValue = difference(yyStart, yyOption1);
09236:
09237: return new SemanticValue(yyValue, yyOption1, yyError);
09238: }
09239:
09240: // Done.
09241: yyError = yyError.select("decimal literal expected", yyStart);
09242: return yyError;
09243: }
09244:
09245: // =========================================================================
09246:
09247: /**
09248: * Parse nonterminal xtc.lang.JavaConstant.DecimalNumeral.
09249: *
09250: * @param yyStart The index.
09251: * @return The result.
09252: * @throws IOException Signals an I/O error.
09253: */
09254: private Result pDecimalNumeral(final int yyStart)
09255: throws IOException {
09256: int yyC;
09257: int yyIndex;
09258: int yyRepetition1;
09259: Void yyValue;
09260: ParseError yyError = ParseError.DUMMY;
09261:
09262: // Alternative 1.
09263:
09264: yyC = character(yyStart);
09265: if (-1 != yyC) {
09266: yyIndex = yyStart + 1;
09267:
09268: switch (yyC) {
09269: case '0': {
09270: yyValue = null;
09271:
09272: return new SemanticValue(yyValue, yyIndex, yyError);
09273: }
09274:
09275: case '1':
09276: case '2':
09277: case '3':
09278: case '4':
09279: case '5':
09280: case '6':
09281: case '7':
09282: case '8':
09283: case '9': {
09284: yyRepetition1 = yyIndex;
09285: while (true) {
09286:
09287: yyC = character(yyRepetition1);
09288: if (-1 != yyC) {
09289: yyIndex = yyRepetition1 + 1;
09290:
09291: switch (yyC) {
09292: case '0':
09293: case '1':
09294: case '2':
09295: case '3':
09296: case '4':
09297: case '5':
09298: case '6':
09299: case '7':
09300: case '8':
09301: case '9': {
09302: yyRepetition1 = yyIndex;
09303: continue;
09304: }
09305:
09306: default:
09307: /* No match. */
09308: }
09309: }
09310: break;
09311: }
09312:
09313: yyValue = null;
09314:
09315: return new SemanticValue(yyValue, yyRepetition1,
09316: yyError);
09317: }
09318:
09319: default:
09320: /* No match. */
09321: }
09322: }
09323:
09324: // Done.
09325: yyError = yyError.select("decimal numeral expected", yyStart);
09326: return yyError;
09327: }
09328:
09329: // =========================================================================
09330:
09331: /**
09332: * Parse nonterminal xtc.lang.JavaConstant.HexNumeral.
09333: *
09334: * @param yyStart The index.
09335: * @return The result.
09336: * @throws IOException Signals an I/O error.
09337: */
09338: private Result pHexNumeral(final int yyStart) throws IOException {
09339: int yyC;
09340: int yyIndex;
09341: int yyRepetition1;
09342: boolean yyRepeated1;
09343: Void yyValue;
09344: ParseError yyError = ParseError.DUMMY;
09345:
09346: // Alternative 1.
09347:
09348: yyC = character(yyStart);
09349: if ('0' == yyC) {
09350: yyIndex = yyStart + 1;
09351:
09352: yyC = character(yyIndex);
09353: if (-1 != yyC) {
09354: yyIndex = yyIndex + 1;
09355:
09356: switch (yyC) {
09357: case 'X':
09358: case 'x': {
09359: yyRepetition1 = yyIndex;
09360: yyRepeated1 = false;
09361: while (true) {
09362:
09363: yyC = character(yyRepetition1);
09364: if (-1 != yyC) {
09365: yyIndex = yyRepetition1 + 1;
09366:
09367: switch (yyC) {
09368: case '0':
09369: case '1':
09370: case '2':
09371: case '3':
09372: case '4':
09373: case '5':
09374: case '6':
09375: case '7':
09376: case '8':
09377: case '9':
09378: case 'A':
09379: case 'B':
09380: case 'C':
09381: case 'D':
09382: case 'E':
09383: case 'F':
09384: case 'a':
09385: case 'b':
09386: case 'c':
09387: case 'd':
09388: case 'e':
09389: case 'f': {
09390: yyRepetition1 = yyIndex;
09391: yyRepeated1 = true;
09392: continue;
09393: }
09394:
09395: default:
09396: /* No match. */
09397: }
09398: }
09399: break;
09400: }
09401:
09402: if (yyRepeated1) {
09403:
09404: yyValue = null;
09405:
09406: return new SemanticValue(yyValue,
09407: yyRepetition1, yyError);
09408: }
09409: }
09410: break;
09411:
09412: default:
09413: /* No match. */
09414: }
09415: }
09416: }
09417:
09418: // Done.
09419: yyError = yyError.select("hex numeral expected", yyStart);
09420: return yyError;
09421: }
09422:
09423: // =========================================================================
09424:
09425: /**
09426: * Parse nonterminal xtc.lang.JavaConstant.OctalNumeral.
09427: *
09428: * @param yyStart The index.
09429: * @return The result.
09430: * @throws IOException Signals an I/O error.
09431: */
09432: private Result pOctalNumeral(final int yyStart) throws IOException {
09433: int yyC;
09434: int yyIndex;
09435: int yyRepetition1;
09436: boolean yyRepeated1;
09437: Void yyValue;
09438: ParseError yyError = ParseError.DUMMY;
09439:
09440: // Alternative 1.
09441:
09442: yyC = character(yyStart);
09443: if ('0' == yyC) {
09444: yyIndex = yyStart + 1;
09445:
09446: yyRepetition1 = yyIndex;
09447: yyRepeated1 = false;
09448: while (true) {
09449:
09450: yyC = character(yyRepetition1);
09451: if (-1 != yyC) {
09452: yyIndex = yyRepetition1 + 1;
09453:
09454: switch (yyC) {
09455: case '0':
09456: case '1':
09457: case '2':
09458: case '3':
09459: case '4':
09460: case '5':
09461: case '6':
09462: case '7': {
09463: yyRepetition1 = yyIndex;
09464: yyRepeated1 = true;
09465: continue;
09466: }
09467:
09468: default:
09469: /* No match. */
09470: }
09471: }
09472: break;
09473: }
09474:
09475: if (yyRepeated1) {
09476:
09477: yyValue = null;
09478:
09479: return new SemanticValue(yyValue, yyRepetition1,
09480: yyError);
09481: }
09482: }
09483:
09484: // Done.
09485: yyError = yyError.select("octal numeral expected", yyStart);
09486: return yyError;
09487: }
09488:
09489: // =========================================================================
09490:
09491: /**
09492: * Parse nonterminal xtc.lang.JavaConstant.FloatingPointLiteral.
09493: *
09494: * @param yyStart The index.
09495: * @return The result.
09496: * @throws IOException Signals an I/O error.
09497: */
09498: private Result pFloatingPointLiteral(final int yyStart)
09499: throws IOException {
09500: Result yyResult;
09501: Node yyValue;
09502: ParseError yyError = ParseError.DUMMY;
09503:
09504: // Alternative 1.
09505:
09506: yyResult = pFloatingPointString(yyStart);
09507: yyError = yyResult.select(yyError);
09508: if (yyResult.hasValue()) {
09509: final String v$g$1 = yyResult.semanticValue();
09510:
09511: yyValue = GNode.create("FloatingPointLiteral", v$g$1);
09512: yyValue.setLocation(location(yyStart));
09513:
09514: return yyResult.createValue(yyValue, yyError);
09515: }
09516:
09517: // Done.
09518: return yyError;
09519: }
09520:
09521: // =========================================================================
09522:
09523: /**
09524: * Parse nonterminal xtc.lang.JavaConstant.FloatingPointString.
09525: *
09526: * @param yyStart The index.
09527: * @return The result.
09528: * @throws IOException Signals an I/O error.
09529: */
09530: private Result pFloatingPointString(final int yyStart)
09531: throws IOException {
09532: int yyC;
09533: int yyIndex;
09534: Result yyResult;
09535: int yyRepetition1;
09536: boolean yyRepeated1;
09537: int yyOption1;
09538: String yyValue;
09539: ParseError yyError = ParseError.DUMMY;
09540:
09541: // Alternative 1.
09542:
09543: yyRepetition1 = yyStart;
09544: yyRepeated1 = false;
09545: while (true) {
09546:
09547: yyC = character(yyRepetition1);
09548: if (-1 != yyC) {
09549: yyIndex = yyRepetition1 + 1;
09550:
09551: switch (yyC) {
09552: case '0':
09553: case '1':
09554: case '2':
09555: case '3':
09556: case '4':
09557: case '5':
09558: case '6':
09559: case '7':
09560: case '8':
09561: case '9': {
09562: yyRepetition1 = yyIndex;
09563: yyRepeated1 = true;
09564: continue;
09565: }
09566:
09567: default:
09568: /* No match. */
09569: }
09570: }
09571: break;
09572: }
09573:
09574: if (yyRepeated1) {
09575:
09576: yyC = character(yyRepetition1);
09577: if ('.' == yyC) {
09578: yyIndex = yyRepetition1 + 1;
09579:
09580: yyRepetition1 = yyIndex;
09581: while (true) {
09582:
09583: yyC = character(yyRepetition1);
09584: if (-1 != yyC) {
09585: yyIndex = yyRepetition1 + 1;
09586:
09587: switch (yyC) {
09588: case '0':
09589: case '1':
09590: case '2':
09591: case '3':
09592: case '4':
09593: case '5':
09594: case '6':
09595: case '7':
09596: case '8':
09597: case '9': {
09598: yyRepetition1 = yyIndex;
09599: continue;
09600: }
09601:
09602: default:
09603: /* No match. */
09604: }
09605: }
09606: break;
09607: }
09608:
09609: yyOption1 = yyRepetition1;
09610:
09611: yyResult = pExponent(yyOption1);
09612: yyError = yyResult.select(yyError);
09613: if (yyResult.hasValue()) {
09614:
09615: yyOption1 = yyResult.index;
09616: }
09617:
09618: yyC = character(yyOption1);
09619: if (-1 != yyC) {
09620: yyIndex = yyOption1 + 1;
09621:
09622: switch (yyC) {
09623: case 'D':
09624: case 'F':
09625: case 'd':
09626: case 'f': {
09627: yyOption1 = yyIndex;
09628: }
09629:
09630: default:
09631: /* No match. */
09632: }
09633: }
09634:
09635: yyValue = difference(yyStart, yyOption1);
09636:
09637: return new SemanticValue(yyValue, yyOption1, yyError);
09638: }
09639: }
09640:
09641: // Alternative 2.
09642:
09643: yyC = character(yyStart);
09644: if ('.' == yyC) {
09645: yyIndex = yyStart + 1;
09646:
09647: yyRepetition1 = yyIndex;
09648: yyRepeated1 = false;
09649: while (true) {
09650:
09651: yyC = character(yyRepetition1);
09652: if (-1 != yyC) {
09653: yyIndex = yyRepetition1 + 1;
09654:
09655: switch (yyC) {
09656: case '0':
09657: case '1':
09658: case '2':
09659: case '3':
09660: case '4':
09661: case '5':
09662: case '6':
09663: case '7':
09664: case '8':
09665: case '9': {
09666: yyRepetition1 = yyIndex;
09667: yyRepeated1 = true;
09668: continue;
09669: }
09670:
09671: default:
09672: /* No match. */
09673: }
09674: }
09675: break;
09676: }
09677:
09678: if (yyRepeated1) {
09679:
09680: yyOption1 = yyRepetition1;
09681:
09682: yyResult = pExponent(yyOption1);
09683: yyError = yyResult.select(yyError);
09684: if (yyResult.hasValue()) {
09685:
09686: yyOption1 = yyResult.index;
09687: }
09688:
09689: yyC = character(yyOption1);
09690: if (-1 != yyC) {
09691: yyIndex = yyOption1 + 1;
09692:
09693: switch (yyC) {
09694: case 'D':
09695: case 'F':
09696: case 'd':
09697: case 'f': {
09698: yyOption1 = yyIndex;
09699: }
09700:
09701: default:
09702: /* No match. */
09703: }
09704: }
09705:
09706: yyValue = difference(yyStart, yyOption1);
09707:
09708: return new SemanticValue(yyValue, yyOption1, yyError);
09709: }
09710: }
09711:
09712: // Alternative 3.
09713:
09714: yyRepetition1 = yyStart;
09715: yyRepeated1 = false;
09716: while (true) {
09717:
09718: yyC = character(yyRepetition1);
09719: if (-1 != yyC) {
09720: yyIndex = yyRepetition1 + 1;
09721:
09722: switch (yyC) {
09723: case '0':
09724: case '1':
09725: case '2':
09726: case '3':
09727: case '4':
09728: case '5':
09729: case '6':
09730: case '7':
09731: case '8':
09732: case '9': {
09733: yyRepetition1 = yyIndex;
09734: yyRepeated1 = true;
09735: continue;
09736: }
09737:
09738: default:
09739: /* No match. */
09740: }
09741: }
09742: break;
09743: }
09744:
09745: if (yyRepeated1) {
09746:
09747: final int yyChoice1 = yyRepetition1;
09748:
09749: // Nested alternative 1.
09750:
09751: yyResult = pExponent(yyChoice1);
09752: yyError = yyResult.select(yyError);
09753: if (yyResult.hasValue()) {
09754:
09755: yyOption1 = yyResult.index;
09756:
09757: yyC = character(yyOption1);
09758: if (-1 != yyC) {
09759: yyIndex = yyOption1 + 1;
09760:
09761: switch (yyC) {
09762: case 'D':
09763: case 'F':
09764: case 'd':
09765: case 'f': {
09766: yyOption1 = yyIndex;
09767: }
09768:
09769: default:
09770: /* No match. */
09771: }
09772: }
09773:
09774: yyValue = difference(yyStart, yyOption1);
09775:
09776: return new SemanticValue(yyValue, yyOption1, yyError);
09777: }
09778:
09779: // Nested alternative 2.
09780:
09781: yyOption1 = yyChoice1;
09782:
09783: yyResult = pExponent(yyOption1);
09784: yyError = yyResult.select(yyError);
09785: if (yyResult.hasValue()) {
09786:
09787: yyOption1 = yyResult.index;
09788: }
09789:
09790: yyC = character(yyOption1);
09791: if (-1 != yyC) {
09792: yyIndex = yyOption1 + 1;
09793:
09794: switch (yyC) {
09795: case 'D':
09796: case 'F':
09797: case 'd':
09798: case 'f': {
09799: yyValue = difference(yyStart, yyIndex);
09800:
09801: return new SemanticValue(yyValue, yyIndex, yyError);
09802: }
09803:
09804: default:
09805: /* No match. */
09806: }
09807: }
09808: }
09809:
09810: // Done.
09811: yyError = yyError.select("floating point string expected",
09812: yyStart);
09813: return yyError;
09814: }
09815:
09816: // =========================================================================
09817:
09818: /**
09819: * Parse nonterminal xtc.lang.JavaConstant.Exponent.
09820: *
09821: * @param yyStart The index.
09822: * @return The result.
09823: * @throws IOException Signals an I/O error.
09824: */
09825: private Result pExponent(final int yyStart) throws IOException {
09826: int yyC;
09827: int yyIndex;
09828: int yyRepetition1;
09829: boolean yyRepeated1;
09830: int yyOption1;
09831: Void yyValue;
09832: ParseError yyError = ParseError.DUMMY;
09833:
09834: // Alternative 1.
09835:
09836: yyC = character(yyStart);
09837: if (-1 != yyC) {
09838: yyIndex = yyStart + 1;
09839:
09840: switch (yyC) {
09841: case 'E':
09842: case 'e': {
09843: yyOption1 = yyIndex;
09844:
09845: yyC = character(yyOption1);
09846: if (-1 != yyC) {
09847: yyIndex = yyOption1 + 1;
09848:
09849: switch (yyC) {
09850: case '+':
09851: case '-': {
09852: yyOption1 = yyIndex;
09853: }
09854:
09855: default:
09856: /* No match. */
09857: }
09858: }
09859:
09860: yyRepetition1 = yyOption1;
09861: yyRepeated1 = false;
09862: while (true) {
09863:
09864: yyC = character(yyRepetition1);
09865: if (-1 != yyC) {
09866: yyIndex = yyRepetition1 + 1;
09867:
09868: switch (yyC) {
09869: case '0':
09870: case '1':
09871: case '2':
09872: case '3':
09873: case '4':
09874: case '5':
09875: case '6':
09876: case '7':
09877: case '8':
09878: case '9': {
09879: yyRepetition1 = yyIndex;
09880: yyRepeated1 = true;
09881: continue;
09882: }
09883:
09884: default:
09885: /* No match. */
09886: }
09887: }
09888: break;
09889: }
09890:
09891: if (yyRepeated1) {
09892:
09893: yyValue = null;
09894:
09895: return new SemanticValue(yyValue, yyRepetition1,
09896: yyError);
09897: }
09898: }
09899: break;
09900:
09901: default:
09902: /* No match. */
09903: }
09904: }
09905:
09906: // Done.
09907: yyError = yyError.select("exponent expected", yyStart);
09908: return yyError;
09909: }
09910:
09911: // =========================================================================
09912:
09913: /**
09914: * Parse nonterminal xtc.lang.JavaConstant.CharacterLiteral.
09915: *
09916: * @param yyStart The index.
09917: * @return The result.
09918: * @throws IOException Signals an I/O error.
09919: */
09920: private Result pCharacterLiteral(final int yyStart)
09921: throws IOException {
09922: Result yyResult;
09923: Node yyValue;
09924: ParseError yyError = ParseError.DUMMY;
09925:
09926: // Alternative 1.
09927:
09928: yyResult = pCharacterConstant(yyStart);
09929: yyError = yyResult.select(yyError);
09930: if (yyResult.hasValue()) {
09931: final String v$g$1 = yyResult.semanticValue();
09932:
09933: yyValue = GNode.create("CharacterLiteral", v$g$1);
09934: yyValue.setLocation(location(yyStart));
09935:
09936: return yyResult.createValue(yyValue, yyError);
09937: }
09938:
09939: // Done.
09940: return yyError;
09941: }
09942:
09943: // =========================================================================
09944:
09945: /**
09946: * Parse nonterminal xtc.lang.JavaConstant.StringLiteral.
09947: *
09948: * @param yyStart The index.
09949: * @return The result.
09950: * @throws IOException Signals an I/O error.
09951: */
09952: private Result pStringLiteral(final int yyStart) throws IOException {
09953: Result yyResult;
09954: Node yyValue;
09955: ParseError yyError = ParseError.DUMMY;
09956:
09957: // Alternative 1.
09958:
09959: yyResult = pStringConstant(yyStart);
09960: yyError = yyResult.select(yyError);
09961: if (yyResult.hasValue()) {
09962: final String v$g$1 = yyResult.semanticValue();
09963:
09964: yyValue = GNode.create("StringLiteral", v$g$1);
09965: yyValue.setLocation(location(yyStart));
09966:
09967: return yyResult.createValue(yyValue, yyError);
09968: }
09969:
09970: // Done.
09971: return yyError;
09972: }
09973:
09974: // =========================================================================
09975:
09976: /**
09977: * Parse nonterminal xtc.lang.JavaConstant.CharacterConstant.
09978: *
09979: * @param yyStart The index.
09980: * @return The result.
09981: * @throws IOException Signals an I/O error.
09982: */
09983: private Result pCharacterConstant(final int yyStart)
09984: throws IOException {
09985: int yyC;
09986: int yyIndex;
09987: Result yyResult;
09988: String yyValue;
09989: ParseError yyError = ParseError.DUMMY;
09990:
09991: // Alternative 1.
09992:
09993: yyC = character(yyStart);
09994: if ('\'' == yyC) {
09995: yyIndex = yyStart + 1;
09996:
09997: yyResult = pCharacterConstant$$Choice1(yyIndex);
09998: yyError = yyResult.select(yyError);
09999: if (yyResult.hasValue()) {
10000:
10001: yyC = character(yyResult.index);
10002: if ('\'' == yyC) {
10003: yyIndex = yyResult.index + 1;
10004:
10005: yyValue = difference(yyStart, yyIndex);
10006:
10007: return new SemanticValue(yyValue, yyIndex, yyError);
10008: }
10009: }
10010: }
10011:
10012: // Done.
10013: yyError = yyError
10014: .select("character constant expected", yyStart);
10015: return yyError;
10016: }
10017:
10018: // =========================================================================
10019:
10020: /**
10021: * Parse synthetic nonterminal xtc.lang.JavaFive.CharacterConstant$$Choice1.
10022: *
10023: * @param yyStart The index.
10024: * @return The result.
10025: * @throws IOException Signals an I/O error.
10026: */
10027: private Result pCharacterConstant$$Choice1(final int yyStart)
10028: throws IOException {
10029:
10030: int yyC;
10031: int yyIndex;
10032: Void yyValue;
10033: ParseError yyError = ParseError.DUMMY;
10034:
10035: // Alternative 1.
10036:
10037: yyC = character(yyStart);
10038: if (-1 != yyC) {
10039: yyIndex = yyStart + 1;
10040:
10041: switch (yyC) {
10042: case '\\': {
10043: final int yyChoice1 = yyIndex;
10044:
10045: // Nested alternative 1.
10046:
10047: yyC = character(yyChoice1);
10048: if (-1 != yyC) {
10049: yyIndex = yyChoice1 + 1;
10050:
10051: switch (yyC) {
10052: case '\"':
10053: case '\'':
10054: case '\\':
10055: case 'b':
10056: case 'f':
10057: case 'n':
10058: case 'r':
10059: case 't': {
10060: yyValue = null;
10061:
10062: return new SemanticValue(yyValue, yyIndex,
10063: yyError);
10064: }
10065:
10066: case 'u': {
10067: yyC = character(yyIndex);
10068: if (-1 != yyC) {
10069: yyIndex = yyIndex + 1;
10070:
10071: switch (yyC) {
10072: case '0':
10073: case '1':
10074: case '2':
10075: case '3':
10076: case '4':
10077: case '5':
10078: case '6':
10079: case '7':
10080: case '8':
10081: case '9':
10082: case 'A':
10083: case 'B':
10084: case 'C':
10085: case 'D':
10086: case 'E':
10087: case 'F':
10088: case 'a':
10089: case 'b':
10090: case 'c':
10091: case 'd':
10092: case 'e':
10093: case 'f': {
10094: yyC = character(yyIndex);
10095: if (-1 != yyC) {
10096: yyIndex = yyIndex + 1;
10097:
10098: switch (yyC) {
10099: case '0':
10100: case '1':
10101: case '2':
10102: case '3':
10103: case '4':
10104: case '5':
10105: case '6':
10106: case '7':
10107: case '8':
10108: case '9':
10109: case 'A':
10110: case 'B':
10111: case 'C':
10112: case 'D':
10113: case 'E':
10114: case 'F':
10115: case 'a':
10116: case 'b':
10117: case 'c':
10118: case 'd':
10119: case 'e':
10120: case 'f': {
10121: yyC = character(yyIndex);
10122: if (-1 != yyC) {
10123: yyIndex = yyIndex + 1;
10124:
10125: switch (yyC) {
10126: case '0':
10127: case '1':
10128: case '2':
10129: case '3':
10130: case '4':
10131: case '5':
10132: case '6':
10133: case '7':
10134: case '8':
10135: case '9':
10136: case 'A':
10137: case 'B':
10138: case 'C':
10139: case 'D':
10140: case 'E':
10141: case 'F':
10142: case 'a':
10143: case 'b':
10144: case 'c':
10145: case 'd':
10146: case 'e':
10147: case 'f': {
10148: yyC = character(yyIndex);
10149: if (-1 != yyC) {
10150: yyIndex = yyIndex + 1;
10151:
10152: switch (yyC) {
10153: case '0':
10154: case '1':
10155: case '2':
10156: case '3':
10157: case '4':
10158: case '5':
10159: case '6':
10160: case '7':
10161: case '8':
10162: case '9':
10163: case 'A':
10164: case 'B':
10165: case 'C':
10166: case 'D':
10167: case 'E':
10168: case 'F':
10169: case 'a':
10170: case 'b':
10171: case 'c':
10172: case 'd':
10173: case 'e':
10174: case 'f': {
10175: yyValue = null;
10176:
10177: return new SemanticValue(
10178: yyValue,
10179: yyIndex,
10180: yyError);
10181: }
10182:
10183: default:
10184: /* No match. */
10185: }
10186: }
10187: }
10188: break;
10189:
10190: default:
10191: /* No match. */
10192: }
10193: }
10194: }
10195: break;
10196:
10197: default:
10198: /* No match. */
10199: }
10200: }
10201: }
10202: break;
10203:
10204: default:
10205: /* No match. */
10206: }
10207: }
10208: }
10209: break;
10210:
10211: default:
10212: /* No match. */
10213: }
10214: }
10215:
10216: // Nested alternative 2.
10217: { // Start scope for nested choice.
10218:
10219: final int yyChoice2 = yyChoice1;
10220:
10221: // Nested alternative 1.
10222:
10223: yyC = character(yyChoice2);
10224: if (-1 != yyC) {
10225: yyIndex = yyChoice2 + 1;
10226:
10227: switch (yyC) {
10228: case '0':
10229: case '1':
10230: case '2':
10231: case '3': {
10232: yyC = character(yyIndex);
10233: if (-1 != yyC) {
10234: yyIndex = yyIndex + 1;
10235:
10236: switch (yyC) {
10237: case '0':
10238: case '1':
10239: case '2':
10240: case '3':
10241: case '4':
10242: case '5':
10243: case '6':
10244: case '7': {
10245: yyC = character(yyIndex);
10246: if (-1 != yyC) {
10247: yyIndex = yyIndex + 1;
10248:
10249: switch (yyC) {
10250: case '0':
10251: case '1':
10252: case '2':
10253: case '3':
10254: case '4':
10255: case '5':
10256: case '6':
10257: case '7': {
10258: yyValue = null;
10259:
10260: return new SemanticValue(
10261: yyValue, yyIndex,
10262: yyError);
10263: }
10264:
10265: default:
10266: /* No match. */
10267: }
10268: }
10269: }
10270: break;
10271:
10272: default:
10273: /* No match. */
10274: }
10275: }
10276: }
10277: break;
10278:
10279: default:
10280: /* No match. */
10281: }
10282: }
10283:
10284: // Nested alternative 2.
10285:
10286: yyC = character(yyChoice2);
10287: if (-1 != yyC) {
10288: yyIndex = yyChoice2 + 1;
10289:
10290: switch (yyC) {
10291: case '0':
10292: case '1':
10293: case '2':
10294: case '3':
10295: case '4':
10296: case '5':
10297: case '6':
10298: case '7': {
10299: final int yyChoice3 = yyIndex;
10300:
10301: // Nested alternative 1.
10302:
10303: yyC = character(yyChoice3);
10304: if (-1 != yyC) {
10305: yyIndex = yyChoice3 + 1;
10306:
10307: switch (yyC) {
10308: case '0':
10309: case '1':
10310: case '2':
10311: case '3':
10312: case '4':
10313: case '5':
10314: case '6':
10315: case '7': {
10316: yyValue = null;
10317:
10318: return new SemanticValue(yyValue,
10319: yyIndex, yyError);
10320: }
10321:
10322: default:
10323: /* No match. */
10324: }
10325: }
10326:
10327: // Nested alternative 2.
10328:
10329: yyValue = null;
10330:
10331: return new SemanticValue(yyValue,
10332: yyChoice3, yyError);
10333: }
10334:
10335: default:
10336: /* No match. */
10337: }
10338: }
10339: } // End scope for nested choice.
10340: }
10341: break;
10342:
10343: default:
10344: /* No match. */
10345: }
10346: }
10347:
10348: // Alternative 2.
10349:
10350: yyC = character(yyStart);
10351: if (-1 != yyC) {
10352: yyIndex = yyStart + 1;
10353:
10354: switch (yyC) {
10355: case '\'':
10356: case '\\':
10357: /* No match. */
10358: break;
10359:
10360: default: {
10361: yyValue = null;
10362:
10363: return new SemanticValue(yyValue, yyIndex, yyError);
10364: }
10365: }
10366: }
10367:
10368: // Done.
10369: yyError = yyError
10370: .select("character constant expected", yyStart);
10371: return yyError;
10372: }
10373:
10374: // =========================================================================
10375:
10376: /**
10377: * Parse nonterminal xtc.lang.JavaConstant.StringConstant.
10378: *
10379: * @param yyStart The index.
10380: * @return The result.
10381: * @throws IOException Signals an I/O error.
10382: */
10383: private Result pStringConstant(final int yyStart)
10384: throws IOException {
10385: int yyC;
10386: int yyIndex;
10387: int yyRepetition1;
10388: String yyValue;
10389: ParseError yyError = ParseError.DUMMY;
10390:
10391: // Alternative 1.
10392:
10393: yyC = character(yyStart);
10394: if ('\"' == yyC) {
10395: yyIndex = yyStart + 1;
10396:
10397: yyRepetition1 = yyIndex;
10398: while (true) {
10399:
10400: final int yyChoice1 = yyRepetition1;
10401:
10402: // Nested alternative 1.
10403:
10404: yyC = character(yyChoice1);
10405: if (-1 != yyC) {
10406: yyIndex = yyChoice1 + 1;
10407:
10408: switch (yyC) {
10409: case '\\': {
10410: final int yyChoice2 = yyIndex;
10411:
10412: // Nested alternative 1.
10413:
10414: yyC = character(yyChoice2);
10415: if (-1 != yyC) {
10416: yyIndex = yyChoice2 + 1;
10417:
10418: switch (yyC) {
10419: case '\"':
10420: case '\'':
10421: case '\\':
10422: case 'b':
10423: case 'f':
10424: case 'n':
10425: case 'r':
10426: case 't': {
10427: yyRepetition1 = yyIndex;
10428: continue;
10429: }
10430:
10431: case 'u': {
10432: yyC = character(yyIndex);
10433: if (-1 != yyC) {
10434: yyIndex = yyIndex + 1;
10435:
10436: switch (yyC) {
10437: case '0':
10438: case '1':
10439: case '2':
10440: case '3':
10441: case '4':
10442: case '5':
10443: case '6':
10444: case '7':
10445: case '8':
10446: case '9':
10447: case 'A':
10448: case 'B':
10449: case 'C':
10450: case 'D':
10451: case 'E':
10452: case 'F':
10453: case 'a':
10454: case 'b':
10455: case 'c':
10456: case 'd':
10457: case 'e':
10458: case 'f': {
10459: yyC = character(yyIndex);
10460: if (-1 != yyC) {
10461: yyIndex = yyIndex + 1;
10462:
10463: switch (yyC) {
10464: case '0':
10465: case '1':
10466: case '2':
10467: case '3':
10468: case '4':
10469: case '5':
10470: case '6':
10471: case '7':
10472: case '8':
10473: case '9':
10474: case 'A':
10475: case 'B':
10476: case 'C':
10477: case 'D':
10478: case 'E':
10479: case 'F':
10480: case 'a':
10481: case 'b':
10482: case 'c':
10483: case 'd':
10484: case 'e':
10485: case 'f': {
10486: yyC = character(yyIndex);
10487: if (-1 != yyC) {
10488: yyIndex = yyIndex + 1;
10489:
10490: switch (yyC) {
10491: case '0':
10492: case '1':
10493: case '2':
10494: case '3':
10495: case '4':
10496: case '5':
10497: case '6':
10498: case '7':
10499: case '8':
10500: case '9':
10501: case 'A':
10502: case 'B':
10503: case 'C':
10504: case 'D':
10505: case 'E':
10506: case 'F':
10507: case 'a':
10508: case 'b':
10509: case 'c':
10510: case 'd':
10511: case 'e':
10512: case 'f': {
10513: yyC = character(yyIndex);
10514: if (-1 != yyC) {
10515: yyIndex = yyIndex + 1;
10516:
10517: switch (yyC) {
10518: case '0':
10519: case '1':
10520: case '2':
10521: case '3':
10522: case '4':
10523: case '5':
10524: case '6':
10525: case '7':
10526: case '8':
10527: case '9':
10528: case 'A':
10529: case 'B':
10530: case 'C':
10531: case 'D':
10532: case 'E':
10533: case 'F':
10534: case 'a':
10535: case 'b':
10536: case 'c':
10537: case 'd':
10538: case 'e':
10539: case 'f': {
10540: yyRepetition1 = yyIndex;
10541: continue;
10542: }
10543:
10544: default:
10545: /* No match. */
10546: }
10547: }
10548: }
10549: break;
10550:
10551: default:
10552: /* No match. */
10553: }
10554: }
10555: }
10556: break;
10557:
10558: default:
10559: /* No match. */
10560: }
10561: }
10562: }
10563: break;
10564:
10565: default:
10566: /* No match. */
10567: }
10568: }
10569: }
10570: break;
10571:
10572: default:
10573: /* No match. */
10574: }
10575: }
10576:
10577: // Nested alternative 2.
10578: { // Start scope for nested choice.
10579:
10580: final int yyChoice3 = yyChoice2;
10581:
10582: // Nested alternative 1.
10583:
10584: yyC = character(yyChoice3);
10585: if (-1 != yyC) {
10586: yyIndex = yyChoice3 + 1;
10587:
10588: switch (yyC) {
10589: case '0':
10590: case '1':
10591: case '2':
10592: case '3': {
10593: yyC = character(yyIndex);
10594: if (-1 != yyC) {
10595: yyIndex = yyIndex + 1;
10596:
10597: switch (yyC) {
10598: case '0':
10599: case '1':
10600: case '2':
10601: case '3':
10602: case '4':
10603: case '5':
10604: case '6':
10605: case '7': {
10606: yyC = character(yyIndex);
10607: if (-1 != yyC) {
10608: yyIndex = yyIndex + 1;
10609:
10610: switch (yyC) {
10611: case '0':
10612: case '1':
10613: case '2':
10614: case '3':
10615: case '4':
10616: case '5':
10617: case '6':
10618: case '7': {
10619: yyRepetition1 = yyIndex;
10620: continue;
10621: }
10622:
10623: default:
10624: /* No match. */
10625: }
10626: }
10627: }
10628: break;
10629:
10630: default:
10631: /* No match. */
10632: }
10633: }
10634: }
10635: break;
10636:
10637: default:
10638: /* No match. */
10639: }
10640: }
10641:
10642: // Nested alternative 2.
10643:
10644: yyC = character(yyChoice3);
10645: if (-1 != yyC) {
10646: yyIndex = yyChoice3 + 1;
10647:
10648: switch (yyC) {
10649: case '0':
10650: case '1':
10651: case '2':
10652: case '3':
10653: case '4':
10654: case '5':
10655: case '6':
10656: case '7': {
10657: final int yyChoice4 = yyIndex;
10658:
10659: // Nested alternative 1.
10660:
10661: yyC = character(yyChoice4);
10662: if (-1 != yyC) {
10663: yyIndex = yyChoice4 + 1;
10664:
10665: switch (yyC) {
10666: case '0':
10667: case '1':
10668: case '2':
10669: case '3':
10670: case '4':
10671: case '5':
10672: case '6':
10673: case '7': {
10674: yyRepetition1 = yyIndex;
10675: continue;
10676: }
10677:
10678: default:
10679: /* No match. */
10680: }
10681: }
10682:
10683: // Nested alternative 2.
10684:
10685: yyRepetition1 = yyChoice4;
10686: continue;
10687: }
10688:
10689: default:
10690: /* No match. */
10691: }
10692: }
10693: } // End scope for nested choice.
10694: }
10695: break;
10696:
10697: default:
10698: /* No match. */
10699: }
10700: }
10701:
10702: // Nested alternative 2.
10703:
10704: yyC = character(yyChoice1);
10705: if (-1 != yyC) {
10706: yyIndex = yyChoice1 + 1;
10707:
10708: switch (yyC) {
10709: case '\"':
10710: case '\\':
10711: /* No match. */
10712: break;
10713:
10714: default: {
10715: yyRepetition1 = yyIndex;
10716: continue;
10717: }
10718: }
10719: }
10720: break;
10721: }
10722:
10723: yyC = character(yyRepetition1);
10724: if ('\"' == yyC) {
10725: yyIndex = yyRepetition1 + 1;
10726:
10727: yyValue = difference(yyStart, yyIndex);
10728:
10729: return new SemanticValue(yyValue, yyIndex, yyError);
10730: }
10731: }
10732:
10733: // Done.
10734: yyError = yyError.select("string constant expected", yyStart);
10735: return yyError;
10736: }
10737:
10738: // =========================================================================
10739:
10740: /**
10741: * Parse nonterminal xtc.lang.JavaFiveIdentifier.QualifiedIdentifier.
10742: *
10743: * @param yyStart The index.
10744: * @return The result.
10745: * @throws IOException Signals an I/O error.
10746: */
10747: private Result pQualifiedIdentifier(final int yyStart)
10748: throws IOException {
10749: JavaFiveParserColumn yyColumn = (JavaFiveParserColumn) column(yyStart);
10750: if (null == yyColumn.chunk4)
10751: yyColumn.chunk4 = new Chunk4();
10752: if (null == yyColumn.chunk4.fQualifiedIdentifier)
10753: yyColumn.chunk4.fQualifiedIdentifier = pQualifiedIdentifier$1(yyStart);
10754: return yyColumn.chunk4.fQualifiedIdentifier;
10755: }
10756:
10757: /** Actually parse xtc.lang.JavaFiveIdentifier.QualifiedIdentifier. */
10758: private Result pQualifiedIdentifier$1(final int yyStart)
10759: throws IOException {
10760:
10761: Result yyResult;
10762: Node yyValue;
10763: ParseError yyError = ParseError.DUMMY;
10764:
10765: // Alternative 1.
10766:
10767: yyResult = pIdentifier(yyStart);
10768: yyError = yyResult.select(yyError);
10769: if (yyResult.hasValue()) {
10770: final String v$g$1 = yyResult.semanticValue();
10771:
10772: yyResult = pQualifiedIdentifier$$Star1(yyResult.index);
10773: yyError = yyResult.select(yyError);
10774: if (yyResult.hasValue()) {
10775: final Pair<String> v$g$2 = yyResult.semanticValue();
10776:
10777: yyValue = GNode.createFromPair("QualifiedIdentifier",
10778: v$g$1, v$g$2);
10779: yyValue.setLocation(location(yyStart));
10780:
10781: return yyResult.createValue(yyValue, yyError);
10782: }
10783: }
10784:
10785: // Done.
10786: return yyError;
10787: }
10788:
10789: // =========================================================================
10790:
10791: /**
10792: * Parse synthetic nonterminal xtc.lang.JavaFive.QualifiedIdentifier$$Star1.
10793: *
10794: * @param yyStart The index.
10795: * @return The result.
10796: * @throws IOException Signals an I/O error.
10797: */
10798: private Result pQualifiedIdentifier$$Star1(final int yyStart)
10799: throws IOException {
10800:
10801: JavaFiveParserColumn yyColumn = (JavaFiveParserColumn) column(yyStart);
10802: if (null == yyColumn.chunk4)
10803: yyColumn.chunk4 = new Chunk4();
10804: if (null == yyColumn.chunk4.fQualifiedIdentifier$$Star1)
10805: yyColumn.chunk4.fQualifiedIdentifier$$Star1 = pQualifiedIdentifier$$Star1$1(yyStart);
10806: return yyColumn.chunk4.fQualifiedIdentifier$$Star1;
10807: }
10808:
10809: /** Actually parse xtc.lang.JavaFive.QualifiedIdentifier$$Star1. */
10810: private Result pQualifiedIdentifier$$Star1$1(final int yyStart)
10811: throws IOException {
10812:
10813: Result yyResult;
10814: Pair<String> yyValue;
10815: ParseError yyError = ParseError.DUMMY;
10816:
10817: // Alternative 1.
10818:
10819: yyResult = pSymbol(yyStart);
10820: yyError = yyResult.select(yyError);
10821: if (yyResult.hasValue(".")) {
10822:
10823: yyResult = pIdentifier(yyResult.index);
10824: yyError = yyResult.select(yyError);
10825: if (yyResult.hasValue()) {
10826: final String v$el$1 = yyResult.semanticValue();
10827:
10828: yyResult = pQualifiedIdentifier$$Star1(yyResult.index);
10829: yyError = yyResult.select(yyError);
10830: if (yyResult.hasValue()) {
10831: final Pair<String> v$2 = yyResult.semanticValue();
10832:
10833: yyValue = new Pair<String>(v$el$1, v$2);
10834:
10835: return yyResult.createValue(yyValue, yyError);
10836: }
10837: }
10838: }
10839:
10840: // Alternative 2.
10841:
10842: yyValue = Pair.empty();
10843:
10844: return new SemanticValue(yyValue, yyStart, yyError);
10845: }
10846:
10847: // =========================================================================
10848:
10849: /**
10850: * Parse nonterminal xtc.lang.JavaFiveIdentifier.Identifier.
10851: *
10852: * @param yyStart The index.
10853: * @return The result.
10854: * @throws IOException Signals an I/O error.
10855: */
10856: private Result pIdentifier(final int yyStart) throws IOException {
10857: JavaFiveParserColumn yyColumn = (JavaFiveParserColumn) column(yyStart);
10858: if (null == yyColumn.chunk4)
10859: yyColumn.chunk4 = new Chunk4();
10860: if (null == yyColumn.chunk4.fIdentifier)
10861: yyColumn.chunk4.fIdentifier = pIdentifier$1(yyStart);
10862: return yyColumn.chunk4.fIdentifier;
10863: }
10864:
10865: /** Actually parse xtc.lang.JavaFiveIdentifier.Identifier. */
10866: private Result pIdentifier$1(final int yyStart) throws IOException {
10867: Result yyResult;
10868: String yyValue;
10869: ParseError yyError = ParseError.DUMMY;
10870:
10871: // Alternative 1.
10872:
10873: yyResult = pWord(yyStart);
10874: yyError = yyResult.select(yyError);
10875: if (yyResult.hasValue()) {
10876: yyValue = yyResult.semanticValue();
10877:
10878: if (!contains(JAVA_KEYWORDS, toText(yyValue))) {
10879:
10880: return yyResult.createValue(yyValue, yyError);
10881: }
10882: }
10883:
10884: // Done.
10885: yyError = yyError.select("identifier expected", yyStart);
10886: return yyError;
10887: }
10888:
10889: // =========================================================================
10890:
10891: /**
10892: * Parse nonterminal xtc.lang.JavaFiveIdentifier.Word.
10893: *
10894: * @param yyStart The index.
10895: * @return The result.
10896: * @throws IOException Signals an I/O error.
10897: */
10898: private Result pWord(final int yyStart) throws IOException {
10899: JavaFiveParserColumn yyColumn = (JavaFiveParserColumn) column(yyStart);
10900: if (null == yyColumn.chunk4)
10901: yyColumn.chunk4 = new Chunk4();
10902: if (null == yyColumn.chunk4.fWord)
10903: yyColumn.chunk4.fWord = pWord$1(yyStart);
10904: return yyColumn.chunk4.fWord;
10905: }
10906:
10907: /** Actually parse xtc.lang.JavaFiveIdentifier.Word. */
10908: private Result pWord$1(final int yyStart) throws IOException {
10909: Result yyResult;
10910: String yyValue;
10911: ParseError yyError = ParseError.DUMMY;
10912:
10913: // Alternative 1.
10914:
10915: yyResult = pWordCharacters(yyStart);
10916: yyError = yyResult.select(yyError);
10917: if (yyResult.hasValue()) {
10918: yyValue = yyResult.semanticValue();
10919:
10920: yyResult = pSpacing(yyResult.index);
10921: yyError = yyResult.select(yyError);
10922: if (yyResult.hasValue()) {
10923:
10924: return yyResult.createValue(yyValue, yyError);
10925: }
10926: }
10927:
10928: // Done.
10929: return yyError;
10930: }
10931:
10932: // =========================================================================
10933:
10934: /**
10935: * Parse nonterminal xtc.lang.JavaFiveIdentifier.WordCharacters.
10936: *
10937: * @param yyStart The index.
10938: * @return The result.
10939: * @throws IOException Signals an I/O error.
10940: */
10941: private Result pWordCharacters(final int yyStart)
10942: throws IOException {
10943: int yyC;
10944: int yyIndex;
10945: int yyRepetition1;
10946: String yyValue;
10947: ParseError yyError = ParseError.DUMMY;
10948:
10949: // Alternative 1.
10950:
10951: yyC = character(yyStart);
10952: if (-1 != yyC) {
10953: yyIndex = yyStart + 1;
10954: final char start = (char) yyC;
10955:
10956: if (Character.isJavaIdentifierStart(start)) {
10957:
10958: yyRepetition1 = yyIndex;
10959: while (true) {
10960:
10961: yyC = character(yyRepetition1);
10962: if (-1 != yyC) {
10963: yyIndex = yyRepetition1 + 1;
10964: final char part = (char) yyC;
10965:
10966: if (Character.isJavaIdentifierPart(part)) {
10967:
10968: yyRepetition1 = yyIndex;
10969: continue;
10970: }
10971: }
10972: break;
10973: }
10974:
10975: yyValue = difference(yyStart, yyRepetition1);
10976:
10977: return new SemanticValue(yyValue, yyRepetition1,
10978: yyError);
10979: }
10980: }
10981:
10982: // Done.
10983: yyError = yyError.select("word characters expected", yyStart);
10984: return yyError;
10985: }
10986:
10987: // =========================================================================
10988:
10989: /**
10990: * Parse nonterminal xtc.lang.JavaFiveSymbol.Symbol.
10991: *
10992: * @param yyStart The index.
10993: * @return The result.
10994: * @throws IOException Signals an I/O error.
10995: */
10996: private Result pSymbol(final int yyStart) throws IOException {
10997: JavaFiveParserColumn yyColumn = (JavaFiveParserColumn) column(yyStart);
10998: if (null == yyColumn.chunk4)
10999: yyColumn.chunk4 = new Chunk4();
11000: if (null == yyColumn.chunk4.fSymbol)
11001: yyColumn.chunk4.fSymbol = pSymbol$1(yyStart);
11002: return yyColumn.chunk4.fSymbol;
11003: }
11004:
11005: /** Actually parse xtc.lang.JavaFiveSymbol.Symbol. */
11006: private Result pSymbol$1(final int yyStart) throws IOException {
11007: Result yyResult;
11008: String yyValue;
11009: ParseError yyError = ParseError.DUMMY;
11010:
11011: // Alternative 1.
11012:
11013: yyResult = pSymbolCharacters(yyStart);
11014: yyError = yyResult.select(yyError);
11015: if (yyResult.hasValue()) {
11016: yyValue = yyResult.semanticValue();
11017:
11018: yyResult = pSpacing(yyResult.index);
11019: yyError = yyResult.select(yyError);
11020: if (yyResult.hasValue()) {
11021:
11022: return yyResult.createValue(yyValue, yyError);
11023: }
11024: }
11025:
11026: // Done.
11027: return yyError;
11028: }
11029:
11030: // =========================================================================
11031:
11032: /**
11033: * Parse nonterminal xtc.lang.JavaFiveSymbol.SymbolCharacters.
11034: *
11035: * @param yyStart The index.
11036: * @return The result.
11037: * @throws IOException Signals an I/O error.
11038: */
11039: private Result pSymbolCharacters(final int yyStart)
11040: throws IOException {
11041: int yyC;
11042: int yyIndex;
11043: String yyValue;
11044: ParseError yyError = ParseError.DUMMY;
11045:
11046: // Alternative 1.
11047:
11048: yyC = character(yyStart);
11049: if (-1 != yyC) {
11050: yyIndex = yyStart + 1;
11051:
11052: switch (yyC) {
11053: case '>': {
11054: final int yyChoice1 = yyIndex;
11055:
11056: // Nested alternative 1.
11057:
11058: yyC = character(yyChoice1);
11059: if (-1 != yyC) {
11060: yyIndex = yyChoice1 + 1;
11061:
11062: switch (yyC) {
11063: case '>': {
11064: final int yyChoice2 = yyIndex;
11065:
11066: // Nested alternative 1.
11067:
11068: yyC = character(yyChoice2);
11069: if (-1 != yyC) {
11070: yyIndex = yyChoice2 + 1;
11071:
11072: switch (yyC) {
11073: case '>': {
11074: final int yyChoice3 = yyIndex;
11075:
11076: // Nested alternative 1.
11077:
11078: yyC = character(yyChoice3);
11079: if (-1 != yyC) {
11080: yyIndex = yyChoice3 + 1;
11081: if ('=' == yyC) {
11082:
11083: yyValue = ">>>=";
11084:
11085: return new SemanticValue(
11086: yyValue, yyIndex,
11087: yyError);
11088: }
11089: }
11090:
11091: // Nested alternative 2.
11092:
11093: yyValue = ">>>";
11094:
11095: return new SemanticValue(yyValue,
11096: yyChoice3, yyError);
11097: }
11098:
11099: case '=': {
11100: yyValue = ">>=";
11101:
11102: return new SemanticValue(yyValue,
11103: yyIndex, yyError);
11104: }
11105:
11106: default:
11107: /* No match. */
11108: }
11109: }
11110:
11111: // Nested alternative 2.
11112:
11113: yyValue = ">>";
11114:
11115: return new SemanticValue(yyValue, yyChoice2,
11116: yyError);
11117: }
11118:
11119: case '=': {
11120: yyValue = ">=";
11121:
11122: return new SemanticValue(yyValue, yyIndex,
11123: yyError);
11124: }
11125:
11126: default:
11127: /* No match. */
11128: }
11129: }
11130:
11131: // Nested alternative 2.
11132:
11133: yyValue = ">";
11134:
11135: return new SemanticValue(yyValue, yyChoice1, yyError);
11136: }
11137:
11138: case '<': {
11139: final int yyChoice1 = yyIndex;
11140:
11141: // Nested alternative 1.
11142:
11143: yyC = character(yyChoice1);
11144: if (-1 != yyC) {
11145: yyIndex = yyChoice1 + 1;
11146:
11147: switch (yyC) {
11148: case '<': {
11149: final int yyChoice2 = yyIndex;
11150:
11151: // Nested alternative 1.
11152:
11153: yyC = character(yyChoice2);
11154: if (-1 != yyC) {
11155: yyIndex = yyChoice2 + 1;
11156: if ('=' == yyC) {
11157:
11158: yyValue = "<<=";
11159:
11160: return new SemanticValue(yyValue,
11161: yyIndex, yyError);
11162: }
11163: }
11164:
11165: // Nested alternative 2.
11166:
11167: yyValue = "<<";
11168:
11169: return new SemanticValue(yyValue, yyChoice2,
11170: yyError);
11171: }
11172:
11173: case '=': {
11174: yyValue = "<=";
11175:
11176: return new SemanticValue(yyValue, yyIndex,
11177: yyError);
11178: }
11179:
11180: default:
11181: /* No match. */
11182: }
11183: }
11184:
11185: // Nested alternative 2.
11186:
11187: yyValue = "<";
11188:
11189: return new SemanticValue(yyValue, yyChoice1, yyError);
11190: }
11191:
11192: case '.': {
11193: final int yyChoice1 = yyIndex;
11194:
11195: // Nested alternative 1.
11196:
11197: yyC = character(yyChoice1);
11198: if (-1 != yyC) {
11199: yyIndex = yyChoice1 + 1;
11200: if ('.' == yyC) {
11201:
11202: yyC = character(yyIndex);
11203: if (-1 != yyC) {
11204: yyIndex = yyIndex + 1;
11205: if ('.' == yyC) {
11206:
11207: yyValue = "...";
11208:
11209: return new SemanticValue(yyValue,
11210: yyIndex, yyError);
11211: }
11212: }
11213: }
11214: }
11215:
11216: // Nested alternative 2.
11217:
11218: yyValue = ".";
11219:
11220: return new SemanticValue(yyValue, yyChoice1, yyError);
11221: }
11222:
11223: case '+': {
11224: final int yyChoice1 = yyIndex;
11225:
11226: // Nested alternative 1.
11227:
11228: yyC = character(yyChoice1);
11229: if (-1 != yyC) {
11230: yyIndex = yyChoice1 + 1;
11231:
11232: switch (yyC) {
11233: case '=': {
11234: yyValue = "+=";
11235:
11236: return new SemanticValue(yyValue, yyIndex,
11237: yyError);
11238: }
11239:
11240: case '+': {
11241: yyValue = "++";
11242:
11243: return new SemanticValue(yyValue, yyIndex,
11244: yyError);
11245: }
11246:
11247: default:
11248: /* No match. */
11249: }
11250: }
11251:
11252: // Nested alternative 2.
11253:
11254: yyValue = "+";
11255:
11256: return new SemanticValue(yyValue, yyChoice1, yyError);
11257: }
11258:
11259: case '-': {
11260: final int yyChoice1 = yyIndex;
11261:
11262: // Nested alternative 1.
11263:
11264: yyC = character(yyChoice1);
11265: if (-1 != yyC) {
11266: yyIndex = yyChoice1 + 1;
11267:
11268: switch (yyC) {
11269: case '=': {
11270: yyValue = "-=";
11271:
11272: return new SemanticValue(yyValue, yyIndex,
11273: yyError);
11274: }
11275:
11276: case '-': {
11277: yyValue = "--";
11278:
11279: return new SemanticValue(yyValue, yyIndex,
11280: yyError);
11281: }
11282:
11283: default:
11284: /* No match. */
11285: }
11286: }
11287:
11288: // Nested alternative 2.
11289:
11290: yyValue = "-";
11291:
11292: return new SemanticValue(yyValue, yyChoice1, yyError);
11293: }
11294:
11295: case '*': {
11296: final int yyChoice1 = yyIndex;
11297:
11298: // Nested alternative 1.
11299:
11300: yyC = character(yyChoice1);
11301: if (-1 != yyC) {
11302: yyIndex = yyChoice1 + 1;
11303: if ('=' == yyC) {
11304:
11305: yyValue = "*=";
11306:
11307: return new SemanticValue(yyValue, yyIndex,
11308: yyError);
11309: }
11310: }
11311:
11312: // Nested alternative 2.
11313:
11314: yyValue = "*";
11315:
11316: return new SemanticValue(yyValue, yyChoice1, yyError);
11317: }
11318:
11319: case '/': {
11320: final int yyChoice1 = yyIndex;
11321:
11322: // Nested alternative 1.
11323:
11324: yyC = character(yyChoice1);
11325: if (-1 != yyC) {
11326: yyIndex = yyChoice1 + 1;
11327: if ('=' == yyC) {
11328:
11329: yyValue = "/=";
11330:
11331: return new SemanticValue(yyValue, yyIndex,
11332: yyError);
11333: }
11334: }
11335:
11336: // Nested alternative 2.
11337:
11338: yyValue = "/";
11339:
11340: return new SemanticValue(yyValue, yyChoice1, yyError);
11341: }
11342:
11343: case '%': {
11344: final int yyChoice1 = yyIndex;
11345:
11346: // Nested alternative 1.
11347:
11348: yyC = character(yyChoice1);
11349: if (-1 != yyC) {
11350: yyIndex = yyChoice1 + 1;
11351: if ('=' == yyC) {
11352:
11353: yyValue = "%=";
11354:
11355: return new SemanticValue(yyValue, yyIndex,
11356: yyError);
11357: }
11358: }
11359:
11360: // Nested alternative 2.
11361:
11362: yyValue = "%";
11363:
11364: return new SemanticValue(yyValue, yyChoice1, yyError);
11365: }
11366:
11367: case '&': {
11368: final int yyChoice1 = yyIndex;
11369:
11370: // Nested alternative 1.
11371:
11372: yyC = character(yyChoice1);
11373: if (-1 != yyC) {
11374: yyIndex = yyChoice1 + 1;
11375:
11376: switch (yyC) {
11377: case '=': {
11378: yyValue = "&=";
11379:
11380: return new SemanticValue(yyValue, yyIndex,
11381: yyError);
11382: }
11383:
11384: case '&': {
11385: yyValue = "&&";
11386:
11387: return new SemanticValue(yyValue, yyIndex,
11388: yyError);
11389: }
11390:
11391: default:
11392: /* No match. */
11393: }
11394: }
11395:
11396: // Nested alternative 2.
11397:
11398: yyValue = "&";
11399:
11400: return new SemanticValue(yyValue, yyChoice1, yyError);
11401: }
11402:
11403: case '^': {
11404: final int yyChoice1 = yyIndex;
11405:
11406: // Nested alternative 1.
11407:
11408: yyC = character(yyChoice1);
11409: if (-1 != yyC) {
11410: yyIndex = yyChoice1 + 1;
11411: if ('=' == yyC) {
11412:
11413: yyValue = "^=";
11414:
11415: return new SemanticValue(yyValue, yyIndex,
11416: yyError);
11417: }
11418: }
11419:
11420: // Nested alternative 2.
11421:
11422: yyValue = "^";
11423:
11424: return new SemanticValue(yyValue, yyChoice1, yyError);
11425: }
11426:
11427: case '|': {
11428: final int yyChoice1 = yyIndex;
11429:
11430: // Nested alternative 1.
11431:
11432: yyC = character(yyChoice1);
11433: if (-1 != yyC) {
11434: yyIndex = yyChoice1 + 1;
11435:
11436: switch (yyC) {
11437: case '=': {
11438: yyValue = "|=";
11439:
11440: return new SemanticValue(yyValue, yyIndex,
11441: yyError);
11442: }
11443:
11444: case '|': {
11445: yyValue = "||";
11446:
11447: return new SemanticValue(yyValue, yyIndex,
11448: yyError);
11449: }
11450:
11451: default:
11452: /* No match. */
11453: }
11454: }
11455:
11456: // Nested alternative 2.
11457:
11458: yyValue = "|";
11459:
11460: return new SemanticValue(yyValue, yyChoice1, yyError);
11461: }
11462:
11463: case '=': {
11464: final int yyChoice1 = yyIndex;
11465:
11466: // Nested alternative 1.
11467:
11468: yyC = character(yyChoice1);
11469: if (-1 != yyC) {
11470: yyIndex = yyChoice1 + 1;
11471: if ('=' == yyC) {
11472:
11473: yyValue = "==";
11474:
11475: return new SemanticValue(yyValue, yyIndex,
11476: yyError);
11477: }
11478: }
11479:
11480: // Nested alternative 2.
11481:
11482: yyValue = "=";
11483:
11484: return new SemanticValue(yyValue, yyChoice1, yyError);
11485: }
11486:
11487: case '!': {
11488: final int yyChoice1 = yyIndex;
11489:
11490: // Nested alternative 1.
11491:
11492: yyC = character(yyChoice1);
11493: if (-1 != yyC) {
11494: yyIndex = yyChoice1 + 1;
11495: if ('=' == yyC) {
11496:
11497: yyValue = "!=";
11498:
11499: return new SemanticValue(yyValue, yyIndex,
11500: yyError);
11501: }
11502: }
11503:
11504: // Nested alternative 2.
11505:
11506: yyValue = "!";
11507:
11508: return new SemanticValue(yyValue, yyChoice1, yyError);
11509: }
11510:
11511: case ';': {
11512: yyValue = ";";
11513:
11514: return new SemanticValue(yyValue, yyIndex, yyError);
11515: }
11516:
11517: case ':': {
11518: yyValue = ":";
11519:
11520: return new SemanticValue(yyValue, yyIndex, yyError);
11521: }
11522:
11523: case ',': {
11524: yyValue = ",";
11525:
11526: return new SemanticValue(yyValue, yyIndex, yyError);
11527: }
11528:
11529: case '{': {
11530: yyValue = "{";
11531:
11532: return new SemanticValue(yyValue, yyIndex, yyError);
11533: }
11534:
11535: case '}': {
11536: yyValue = "}";
11537:
11538: return new SemanticValue(yyValue, yyIndex, yyError);
11539: }
11540:
11541: case '(': {
11542: yyValue = "(";
11543:
11544: return new SemanticValue(yyValue, yyIndex, yyError);
11545: }
11546:
11547: case ')': {
11548: yyValue = ")";
11549:
11550: return new SemanticValue(yyValue, yyIndex, yyError);
11551: }
11552:
11553: case '[': {
11554: yyValue = "[";
11555:
11556: return new SemanticValue(yyValue, yyIndex, yyError);
11557: }
11558:
11559: case ']': {
11560: yyValue = "]";
11561:
11562: return new SemanticValue(yyValue, yyIndex, yyError);
11563: }
11564:
11565: case '~': {
11566: yyValue = "~";
11567:
11568: return new SemanticValue(yyValue, yyIndex, yyError);
11569: }
11570:
11571: case '@': {
11572: yyValue = "@";
11573:
11574: return new SemanticValue(yyValue, yyIndex, yyError);
11575: }
11576:
11577: case '?': {
11578: yyValue = "?";
11579:
11580: return new SemanticValue(yyValue, yyIndex, yyError);
11581: }
11582:
11583: default:
11584: /* No match. */
11585: }
11586: }
11587:
11588: // Done.
11589: yyError = yyError.select("symbol characters expected", yyStart);
11590: return yyError;
11591: }
11592:
11593: // =========================================================================
11594:
11595: /**
11596: * Parse nonterminal xtc.util.Spacing.Spacing.
11597: *
11598: * @param yyStart The index.
11599: * @return The result.
11600: * @throws IOException Signals an I/O error.
11601: */
11602: private Result pSpacing(final int yyStart) throws IOException {
11603: int yyC;
11604: int yyIndex;
11605: Result yyPredResult;
11606: boolean yyPredMatched;
11607: int yyBase;
11608: int yyRepetition1;
11609: int yyRepetition2;
11610: Void yyValue;
11611: ParseError yyError = ParseError.DUMMY;
11612:
11613: // Alternative 1.
11614:
11615: yyRepetition1 = yyStart;
11616: while (true) {
11617:
11618: final int yyChoice1 = yyRepetition1;
11619:
11620: // Nested alternative 1.
11621:
11622: yyC = character(yyChoice1);
11623: if (-1 != yyC) {
11624: yyIndex = yyChoice1 + 1;
11625:
11626: switch (yyC) {
11627: case ' ': {
11628: yyRepetition1 = yyIndex;
11629: continue;
11630: }
11631:
11632: case '\t': {
11633: yyRepetition1 = yyIndex;
11634: continue;
11635: }
11636:
11637: case '\f': {
11638: yyRepetition1 = yyIndex;
11639: continue;
11640: }
11641:
11642: case '\r': {
11643: final int yyChoice2 = yyIndex;
11644:
11645: // Nested alternative 1.
11646:
11647: yyC = character(yyChoice2);
11648: if ('\n' == yyC) {
11649: yyIndex = yyChoice2 + 1;
11650:
11651: yyRepetition1 = yyIndex;
11652: continue;
11653: }
11654:
11655: // Nested alternative 2.
11656:
11657: yyRepetition1 = yyChoice2;
11658: continue;
11659: }
11660:
11661: case '\n': {
11662: yyRepetition1 = yyIndex;
11663: continue;
11664: }
11665:
11666: case '/': {
11667: yyC = character(yyIndex);
11668: if (-1 != yyC) {
11669: yyIndex = yyIndex + 1;
11670:
11671: switch (yyC) {
11672: case '*': {
11673: yyRepetition2 = yyIndex;
11674: while (true) {
11675:
11676: final int yyChoice2 = yyRepetition2;
11677:
11678: // Nested alternative 1.
11679:
11680: yyC = character(yyChoice2);
11681: if (-1 != yyC) {
11682: yyIndex = yyChoice2 + 1;
11683:
11684: switch (yyC) {
11685: case '*': {
11686: yyPredMatched = false;
11687:
11688: yyC = character(yyIndex);
11689: if ('/' == yyC) {
11690:
11691: yyPredMatched = true;
11692: }
11693:
11694: if (!yyPredMatched) {
11695:
11696: yyRepetition2 = yyIndex;
11697: continue;
11698: } else {
11699: yyError = yyError.select(
11700: "spacing expected",
11701: yyStart);
11702: }
11703: }
11704: break;
11705:
11706: default: {
11707: yyRepetition2 = yyIndex;
11708: continue;
11709: }
11710: }
11711: }
11712: break;
11713: }
11714:
11715: yyBase = yyRepetition2;
11716: yyC = character(yyBase);
11717: if ('*' == yyC) {
11718: yyIndex = yyRepetition2 + 1;
11719:
11720: yyC = character(yyIndex);
11721: if ('/' == yyC) {
11722: yyIndex = yyIndex + 1;
11723:
11724: yyRepetition1 = yyIndex;
11725: continue;
11726: } else {
11727: yyError = yyError.select(
11728: "\"*/\" expected", yyBase);
11729: }
11730: } else {
11731: yyError = yyError.select(
11732: "\"*/\" expected", yyBase);
11733: }
11734: }
11735: break;
11736:
11737: case '/': {
11738: yyRepetition2 = yyIndex;
11739: while (true) {
11740:
11741: yyC = character(yyRepetition2);
11742: if (-1 != yyC) {
11743: yyIndex = yyRepetition2 + 1;
11744:
11745: switch (yyC) {
11746: case '\n':
11747: case '\r':
11748: /* No match. */
11749: break;
11750:
11751: default: {
11752: yyRepetition2 = yyIndex;
11753: continue;
11754: }
11755: }
11756: }
11757: break;
11758: }
11759:
11760: final int yyChoice2 = yyRepetition2;
11761:
11762: // Nested alternative 1.
11763:
11764: yyC = character(yyChoice2);
11765: if (-1 != yyC) {
11766: yyIndex = yyChoice2 + 1;
11767:
11768: switch (yyC) {
11769: case '\r': {
11770: final int yyChoice3 = yyIndex;
11771:
11772: // Nested alternative 1.
11773:
11774: yyC = character(yyChoice3);
11775: if ('\n' == yyC) {
11776: yyIndex = yyChoice3 + 1;
11777:
11778: yyRepetition1 = yyIndex;
11779: continue;
11780: }
11781:
11782: // Nested alternative 2.
11783:
11784: yyRepetition1 = yyChoice3;
11785: continue;
11786: }
11787:
11788: case '\n': {
11789: yyRepetition1 = yyIndex;
11790: continue;
11791: }
11792:
11793: default:
11794: /* No match. */
11795: }
11796: }
11797:
11798: // Nested alternative 2.
11799:
11800: yyPredResult = pEndOfFile(yyChoice2);
11801: yyError = yyPredResult.select(yyError);
11802: if (yyPredResult.hasValue()) {
11803:
11804: yyRepetition1 = yyChoice2;
11805: continue;
11806: }
11807: }
11808: break;
11809:
11810: default:
11811: /* No match. */
11812: }
11813: }
11814: }
11815: break;
11816:
11817: default:
11818: /* No match. */
11819: }
11820: }
11821: break;
11822: }
11823:
11824: yyValue = null;
11825:
11826: return new SemanticValue(yyValue, yyRepetition1, yyError);
11827: }
11828:
11829: // =========================================================================
11830:
11831: /**
11832: * Parse nonterminal xtc.util.Spacing.EndOfFile.
11833: *
11834: * @param yyStart The index.
11835: * @return The result.
11836: * @throws IOException Signals an I/O error.
11837: */
11838: private Result pEndOfFile(final int yyStart) throws IOException {
11839: int yyC;
11840: boolean yyPredMatched;
11841: Void yyValue;
11842: ParseError yyError = ParseError.DUMMY;
11843:
11844: // Alternative 1.
11845:
11846: yyPredMatched = false;
11847:
11848: yyC = character(yyStart);
11849: if (-1 != yyC) {
11850:
11851: yyPredMatched = true;
11852: }
11853:
11854: if (!yyPredMatched) {
11855:
11856: yyValue = null;
11857:
11858: return new SemanticValue(yyValue, yyStart, yyError);
11859: } else {
11860: yyError = yyError.select("end of file expected", yyStart);
11861: }
11862:
11863: // Done.
11864: return yyError;
11865: }
11866:
11867: // =========================================================================
11868:
11869: static {
11870: add(JAVA_KEYWORDS, new String[] { "abstract", "continue",
11871: "for", "new", "switch", "assert", "default", "if",
11872: "package", "synchronized", "boolean", "do", "goto",
11873: "private", "this", "break", "double", "implements",
11874: "protected", "throw", "byte", "else", "import",
11875: "public", "throws", "case", "instanceof", "return",
11876: "transient", "catch", "extends", "int", "short", "try",
11877: "char", "final", "interface", "static", "void",
11878: "class", "finally", "long", "strictfp", "volatile",
11879: "const", "float", "native", "super", "while" });
11880: }
11881: static {
11882: add(JAVA_KEYWORDS, new String[] { "enum" });
11883: }
11884:
11885: // =========================================================================
11886:
11887: /**
11888: * Get the specified text.
11889: *
11890: * @param s The text.
11891: * @return The text.
11892: */
11893: protected static final String toText(String s) {
11894: return s;
11895: }
11896:
11897: // =========================================================================
11898:
11899: /**
11900: * Add the specified values to the specified set.
11901: *
11902: * @param set The set.
11903: * @param values The new values.
11904: */
11905: protected static final <T> void add(Set<T> set, T[] values) {
11906: for (T v : values)
11907: set.add(v);
11908: }
11909:
11910: /**
11911: * Check whether the specified set contains the specified value.
11912: *
11913: * @param set The set.
11914: * @param value The value.
11915: * @return <code>true</code> if the set contains the value.
11916: */
11917: protected static final <T> boolean contains(Set<T> set, T value) {
11918: return set.contains(value);
11919: }
11920:
11921: }
|