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:16 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.JavaFactory</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 JavaFactoryParser 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 fElementValuePair;
00065: Result fElementValue;
00066: Result fJavaPattern$NodeVariable;
00067: Result fNodeListVariable;
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 JavaFactoryParserColumn 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 JavaFactoryParser(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 JavaFactoryParser(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 JavaFactoryParserColumn();
00134: }
00135:
00136: // =========================================================================
00137:
00138: /**
00139: * Parse nonterminal xtc.lang.JavaFactory.Factory.
00140: *
00141: * @param yyStart The index.
00142: * @return The result.
00143: * @throws IOException Signals an I/O error.
00144: */
00145: public Result pFactory(final int yyStart) throws IOException {
00146: Result yyResult;
00147: int yyBase;
00148: Node yyValue;
00149: ParseError yyError = ParseError.DUMMY;
00150:
00151: // Alternative 1.
00152:
00153: yyResult = pSpacing(yyStart);
00154: yyError = yyResult.select(yyError);
00155: if (yyResult.hasValue()) {
00156:
00157: yyBase = yyResult.index;
00158: yyResult = pWord(yyBase);
00159: yyError = yyResult.select(yyError);
00160: if (yyResult.hasValue("factory")) {
00161:
00162: yyResult = pQualifiedIdentifier(yyResult.index);
00163: yyError = yyResult.select(yyError);
00164: if (yyResult.hasValue()) {
00165: final Node v$g$1 = yyResult.semanticValue();
00166:
00167: yyBase = yyResult.index;
00168: yyResult = pSymbol(yyBase);
00169: yyError = yyResult.select(yyError);
00170: if (yyResult.hasValue("{")) {
00171:
00172: yyResult = pMethods(yyResult.index);
00173: yyError = yyResult.select(yyError);
00174: if (yyResult.hasValue()) {
00175: final Node v$g$2 = yyResult.semanticValue();
00176:
00177: yyBase = yyResult.index;
00178: yyResult = pSymbol(yyBase);
00179: yyError = yyResult.select(yyError);
00180: if (yyResult.hasValue("}")) {
00181:
00182: yyResult = pEndOfFile(yyResult.index);
00183: yyError = yyResult.select(yyError);
00184: if (yyResult.hasValue()) {
00185:
00186: yyValue = GNode.create("Factory",
00187: v$g$1, v$g$2);
00188: yyValue
00189: .setLocation(location(yyStart));
00190:
00191: return yyResult.createValue(
00192: yyValue, yyError);
00193: }
00194: } else {
00195: yyError = yyError.select(
00196: "\"}\" expected", yyBase);
00197: }
00198: }
00199: } else {
00200: yyError = yyError.select("\"{\" expected",
00201: yyBase);
00202: }
00203: }
00204: } else {
00205: yyError = yyError
00206: .select("\"factory\" expected", yyBase);
00207: }
00208: }
00209:
00210: // Done.
00211: return yyError;
00212: }
00213:
00214: // =========================================================================
00215:
00216: /**
00217: * Parse nonterminal xtc.lang.JavaFactory.Methods.
00218: *
00219: * @param yyStart The index.
00220: * @return The result.
00221: * @throws IOException Signals an I/O error.
00222: */
00223: private Result pMethods(final int yyStart) throws IOException {
00224: Result yyResult;
00225: int yyRepetition1;
00226: boolean yyRepeated1;
00227: Pair<Node> yyRepValue1;
00228: Node yyValue;
00229: ParseError yyError = ParseError.DUMMY;
00230:
00231: // Alternative 1.
00232:
00233: yyRepetition1 = yyStart;
00234: yyRepeated1 = false;
00235: yyRepValue1 = Pair.empty();
00236: while (true) {
00237:
00238: yyResult = pMethod(yyRepetition1);
00239: yyError = yyResult.select(yyError);
00240: if (yyResult.hasValue()) {
00241: final Node v$el$1 = yyResult.semanticValue();
00242:
00243: yyRepetition1 = yyResult.index;
00244: yyRepeated1 = true;
00245: yyRepValue1 = new Pair<Node>(v$el$1, yyRepValue1);
00246: continue;
00247: }
00248: break;
00249: }
00250:
00251: if (yyRepeated1) {
00252: final Pair<Node> v$g$1 = yyRepValue1.reverse();
00253:
00254: yyValue = GNode.createFromPair("Methods", v$g$1);
00255: yyValue.setLocation(location(yyStart));
00256:
00257: return new SemanticValue(yyValue, yyRepetition1, yyError);
00258: }
00259:
00260: // Done.
00261: return yyError;
00262: }
00263:
00264: // =========================================================================
00265:
00266: /**
00267: * Parse nonterminal xtc.lang.JavaFactory.Method.
00268: *
00269: * @param yyStart The index.
00270: * @return The result.
00271: * @throws IOException Signals an I/O error.
00272: */
00273: private Result pMethod(final int yyStart) throws IOException {
00274: Result yyResult;
00275: int yyBase;
00276: Node yyValue;
00277: ParseError yyError = ParseError.DUMMY;
00278:
00279: // Alternative 1.
00280:
00281: yyResult = pWord(yyStart);
00282: yyError = yyResult.select(yyError);
00283: if (yyResult.hasValue()) {
00284: final String v$g$1 = yyResult.semanticValue();
00285:
00286: yyBase = yyResult.index;
00287: yyResult = pSymbol(yyBase);
00288: yyError = yyResult.select(yyError);
00289: if (yyResult.hasValue("{")) {
00290:
00291: yyResult = pPattern(yyResult.index);
00292: yyError = yyResult.select(yyError);
00293: if (yyResult.hasValue()) {
00294: final Node v$g$2 = yyResult.semanticValue();
00295:
00296: yyBase = yyResult.index;
00297: yyResult = pSymbol(yyBase);
00298: yyError = yyResult.select(yyError);
00299: if (yyResult.hasValue("}")) {
00300:
00301: yyValue = GNode.create("Method", v$g$1, v$g$2);
00302: yyValue.setLocation(location(yyStart));
00303:
00304: return yyResult.createValue(yyValue, yyError);
00305: } else {
00306: yyError = yyError.select("\"}\" expected",
00307: yyBase);
00308: }
00309: }
00310: } else {
00311: yyError = yyError.select("\"{\" expected", yyBase);
00312: }
00313: }
00314:
00315: // Done.
00316: return yyError;
00317: }
00318:
00319: // =========================================================================
00320:
00321: /**
00322: * Parse nonterminal xtc.lang.JavaPattern.ImportDeclaration.
00323: *
00324: * @param yyStart The index.
00325: * @return The result.
00326: * @throws IOException Signals an I/O error.
00327: */
00328: private Result pImportDeclaration(final int yyStart)
00329: throws IOException {
00330: Result yyResult;
00331: int yyBase;
00332: int yyOption1;
00333: String yyOpValue1;
00334: Node yyValue;
00335: ParseError yyError = ParseError.DUMMY;
00336:
00337: // Alternative <Declaration>.
00338:
00339: yyResult = pWord(yyStart);
00340: yyError = yyResult.select(yyError);
00341: if (yyResult.hasValue("import")) {
00342:
00343: yyOption1 = yyResult.index;
00344: yyOpValue1 = null;
00345:
00346: yyBase = yyOption1;
00347: yyResult = pWord(yyBase);
00348: yyError = yyResult.select(yyError);
00349: if (yyResult.hasValue("static")) {
00350: final String v$el$1 = "static";
00351:
00352: yyOption1 = yyResult.index;
00353: yyOpValue1 = v$el$1;
00354: } else {
00355: yyError = yyError.select("\"static\" expected", yyBase);
00356: }
00357: { // Start scope for v$g$1.
00358: final String v$g$1 = yyOpValue1;
00359:
00360: yyResult = pQualifiedIdentifier(yyOption1);
00361: yyError = yyResult.select(yyError);
00362: if (yyResult.hasValue()) {
00363: final Node v$g$2 = yyResult.semanticValue();
00364:
00365: yyOption1 = yyResult.index;
00366: yyOpValue1 = null;
00367:
00368: yyResult = pDotStarTail(yyOption1);
00369: yyError = yyResult.select(yyError);
00370: if (yyResult.hasValue()) {
00371: final String v$el$2 = yyResult.semanticValue();
00372:
00373: yyOption1 = yyResult.index;
00374: yyOpValue1 = v$el$2;
00375: }
00376: { // Start scope for v$g$3.
00377: final String v$g$3 = yyOpValue1;
00378:
00379: yyBase = yyOption1;
00380: yyResult = pSymbol(yyBase);
00381: yyError = yyResult.select(yyError);
00382: if (yyResult.hasValue(";")) {
00383:
00384: yyValue = GNode.create("ImportDeclaration",
00385: v$g$1, v$g$2, v$g$3);
00386: yyValue.setLocation(location(yyStart));
00387:
00388: return yyResult.createValue(yyValue,
00389: yyError);
00390: } else {
00391: yyError = yyError.select("\";\" expected",
00392: yyBase);
00393: }
00394: } // End scope for v$g$3.
00395: }
00396: } // End scope for v$g$1.
00397: }
00398:
00399: // Done.
00400: yyError = yyError
00401: .select("import declaration expected", yyStart);
00402: return yyError;
00403: }
00404:
00405: // =========================================================================
00406:
00407: /**
00408: * Parse nonterminal xtc.lang.JavaPattern.DotStarTail.
00409: *
00410: * @param yyStart The index.
00411: * @return The result.
00412: * @throws IOException Signals an I/O error.
00413: */
00414: private Result pDotStarTail(final int yyStart) throws IOException {
00415: Result yyResult;
00416: int yyBase;
00417: String yyValue;
00418: ParseError yyError = ParseError.DUMMY;
00419:
00420: // Alternative 1.
00421:
00422: yyResult = pSymbol(yyStart);
00423: yyError = yyResult.select(yyError);
00424: if (yyResult.hasValue(".")) {
00425:
00426: yyBase = yyResult.index;
00427: yyResult = pSymbol(yyBase);
00428: yyError = yyResult.select(yyError);
00429: if (yyResult.hasValue("*")) {
00430: yyValue = "*";
00431:
00432: return yyResult.createValue(yyValue, yyError);
00433: } else {
00434: yyError = yyError.select("\"*\" expected", yyBase);
00435: }
00436: }
00437:
00438: // Done.
00439: yyError = yyError.select("dot star tail expected", yyStart);
00440: return yyError;
00441: }
00442:
00443: // =========================================================================
00444:
00445: /**
00446: * Parse nonterminal xtc.lang.JavaPattern.Name.
00447: *
00448: * @param yyStart The index.
00449: * @return The result.
00450: * @throws IOException Signals an I/O error.
00451: */
00452: private Result pName(final int yyStart) throws IOException {
00453: Result yyResult;
00454: Object yyValue;
00455: ParseError yyError = ParseError.DUMMY;
00456:
00457: // Alternative <Pattern>.
00458:
00459: yyResult = pJavaPattern$StringVariable(yyStart);
00460: yyError = yyResult.select(yyError);
00461: if (yyResult.hasValue()) {
00462: yyValue = yyResult.semanticValue();
00463:
00464: return yyResult.createValue(yyValue, yyError);
00465: }
00466:
00467: // Alternative <Name>.
00468:
00469: yyResult = pIdentifier(yyStart);
00470: yyError = yyResult.select(yyError);
00471: if (yyResult.hasValue()) {
00472: yyValue = yyResult.semanticValue();
00473:
00474: return yyResult.createValue(yyValue, yyError);
00475: }
00476:
00477: // Done.
00478: return yyError;
00479: }
00480:
00481: // =========================================================================
00482:
00483: /**
00484: * Parse nonterminal xtc.lang.JavaPattern.Modifiers.
00485: *
00486: * @param yyStart The index.
00487: * @return The result.
00488: * @throws IOException Signals an I/O error.
00489: */
00490: private Result pModifiers(final int yyStart) throws IOException {
00491: JavaFactoryParserColumn yyColumn = (JavaFactoryParserColumn) column(yyStart);
00492: if (null == yyColumn.chunk1)
00493: yyColumn.chunk1 = new Chunk1();
00494: if (null == yyColumn.chunk1.fModifiers)
00495: yyColumn.chunk1.fModifiers = pModifiers$1(yyStart);
00496: return yyColumn.chunk1.fModifiers;
00497: }
00498:
00499: /** Actually parse xtc.lang.JavaPattern.Modifiers. */
00500: private Result pModifiers$1(final int yyStart) throws IOException {
00501: Result yyResult;
00502: Node yyValue;
00503: ParseError yyError = ParseError.DUMMY;
00504:
00505: // Alternative 1.
00506:
00507: yyResult = pModifierList(yyStart);
00508: yyError = yyResult.select(yyError);
00509: if (yyResult.hasValue()) {
00510: final Pair<Node> v$g$1 = yyResult.semanticValue();
00511:
00512: yyValue = GNode.createFromPair("Modifiers", v$g$1);
00513: yyValue.setLocation(location(yyStart));
00514:
00515: return yyResult.createValue(yyValue, yyError);
00516: }
00517:
00518: // Done.
00519: return yyError;
00520: }
00521:
00522: // =========================================================================
00523:
00524: /**
00525: * Parse nonterminal xtc.lang.JavaPattern.ModifierList.
00526: *
00527: * @param yyStart The index.
00528: * @return The result.
00529: * @throws IOException Signals an I/O error.
00530: */
00531: private Result pModifierList(final int yyStart) throws IOException {
00532: Result yyResult;
00533: int yyRepetition1;
00534: Pair<Node> yyRepValue1;
00535: Pair<Node> yyValue;
00536: ParseError yyError = ParseError.DUMMY;
00537:
00538: // Alternative 1.
00539:
00540: yyRepetition1 = yyStart;
00541: yyRepValue1 = Pair.empty();
00542: while (true) {
00543:
00544: yyResult = pModifier(yyRepetition1);
00545: yyError = yyResult.select(yyError);
00546: if (yyResult.hasValue()) {
00547: final Node v$el$1 = yyResult.semanticValue();
00548:
00549: yyRepetition1 = yyResult.index;
00550: yyRepValue1 = new Pair<Node>(v$el$1, yyRepValue1);
00551: continue;
00552: }
00553: break;
00554: }
00555: { // Start scope for yyValue.
00556: yyValue = yyRepValue1.reverse();
00557:
00558: return new SemanticValue(yyValue, yyRepetition1, yyError);
00559: } // End scope for yyValue.
00560: }
00561:
00562: // =========================================================================
00563:
00564: /**
00565: * Parse nonterminal xtc.lang.JavaPattern.Modifier.
00566: *
00567: * @param yyStart The index.
00568: * @return The result.
00569: * @throws IOException Signals an I/O error.
00570: */
00571: private Result pModifier(final int yyStart) throws IOException {
00572: Result yyResult;
00573: Node yyValue;
00574: ParseError yyError = ParseError.DUMMY;
00575:
00576: // Alternative <Annotation>.
00577:
00578: yyResult = pAnnotation(yyStart);
00579: yyError = yyResult.select(yyError);
00580: if (yyResult.hasValue()) {
00581: yyValue = yyResult.semanticValue();
00582:
00583: return yyResult.createValue(yyValue, yyError);
00584: }
00585:
00586: // Alternative <Public>.
00587:
00588: yyResult = pWord(yyStart);
00589: yyError = yyResult.select(yyError);
00590: if (yyResult.hasValue("public")) {
00591: final String v$g$1 = "public";
00592:
00593: yyValue = GNode.create("Modifier", v$g$1);
00594: yyValue.setLocation(location(yyStart));
00595:
00596: return yyResult.createValue(yyValue, yyError);
00597: }
00598:
00599: // Alternative <Protected>.
00600:
00601: yyResult = pWord(yyStart);
00602: yyError = yyResult.select(yyError);
00603: if (yyResult.hasValue("protected")) {
00604: final String v$g$2 = "protected";
00605:
00606: yyValue = GNode.create("Modifier", v$g$2);
00607: yyValue.setLocation(location(yyStart));
00608:
00609: return yyResult.createValue(yyValue, yyError);
00610: }
00611:
00612: // Alternative <Private>.
00613:
00614: yyResult = pWord(yyStart);
00615: yyError = yyResult.select(yyError);
00616: if (yyResult.hasValue("private")) {
00617: final String v$g$3 = "private";
00618:
00619: yyValue = GNode.create("Modifier", v$g$3);
00620: yyValue.setLocation(location(yyStart));
00621:
00622: return yyResult.createValue(yyValue, yyError);
00623: }
00624:
00625: // Alternative <Static>.
00626:
00627: yyResult = pWord(yyStart);
00628: yyError = yyResult.select(yyError);
00629: if (yyResult.hasValue("static")) {
00630: final String v$g$4 = "static";
00631:
00632: yyValue = GNode.create("Modifier", v$g$4);
00633: yyValue.setLocation(location(yyStart));
00634:
00635: return yyResult.createValue(yyValue, yyError);
00636: }
00637:
00638: // Alternative <Abstract>.
00639:
00640: yyResult = pWord(yyStart);
00641: yyError = yyResult.select(yyError);
00642: if (yyResult.hasValue("abstract")) {
00643: final String v$g$5 = "abstract";
00644:
00645: yyValue = GNode.create("Modifier", v$g$5);
00646: yyValue.setLocation(location(yyStart));
00647:
00648: return yyResult.createValue(yyValue, yyError);
00649: }
00650:
00651: // Alternative <Final>.
00652:
00653: yyResult = pWord(yyStart);
00654: yyError = yyResult.select(yyError);
00655: if (yyResult.hasValue("final")) {
00656: final String v$g$6 = "final";
00657:
00658: yyValue = GNode.create("Modifier", v$g$6);
00659: yyValue.setLocation(location(yyStart));
00660:
00661: return yyResult.createValue(yyValue, yyError);
00662: }
00663:
00664: // Alternative <Native>.
00665:
00666: yyResult = pWord(yyStart);
00667: yyError = yyResult.select(yyError);
00668: if (yyResult.hasValue("native")) {
00669: final String v$g$7 = "native";
00670:
00671: yyValue = GNode.create("Modifier", v$g$7);
00672: yyValue.setLocation(location(yyStart));
00673:
00674: return yyResult.createValue(yyValue, yyError);
00675: }
00676:
00677: // Alternative <Synchronized>.
00678:
00679: yyResult = pWord(yyStart);
00680: yyError = yyResult.select(yyError);
00681: if (yyResult.hasValue("synchronized")) {
00682: final String v$g$8 = "synchronized";
00683:
00684: yyValue = GNode.create("Modifier", v$g$8);
00685: yyValue.setLocation(location(yyStart));
00686:
00687: return yyResult.createValue(yyValue, yyError);
00688: }
00689:
00690: // Alternative <Transient>.
00691:
00692: yyResult = pWord(yyStart);
00693: yyError = yyResult.select(yyError);
00694: if (yyResult.hasValue("transient")) {
00695: final String v$g$9 = "transient";
00696:
00697: yyValue = GNode.create("Modifier", v$g$9);
00698: yyValue.setLocation(location(yyStart));
00699:
00700: return yyResult.createValue(yyValue, yyError);
00701: }
00702:
00703: // Alternative <Volatile>.
00704:
00705: yyResult = pWord(yyStart);
00706: yyError = yyResult.select(yyError);
00707: if (yyResult.hasValue("volatile")) {
00708: final String v$g$10 = "volatile";
00709:
00710: yyValue = GNode.create("Modifier", v$g$10);
00711: yyValue.setLocation(location(yyStart));
00712:
00713: return yyResult.createValue(yyValue, yyError);
00714: }
00715:
00716: // Alternative <Strictfp>.
00717:
00718: yyResult = pWord(yyStart);
00719: yyError = yyResult.select(yyError);
00720: if (yyResult.hasValue("strictfp")) {
00721: final String v$g$11 = "strictfp";
00722:
00723: yyValue = GNode.create("Modifier", v$g$11);
00724: yyValue.setLocation(location(yyStart));
00725:
00726: return yyResult.createValue(yyValue, yyError);
00727: }
00728:
00729: // Done.
00730: yyError = yyError.select("modifier expected", yyStart);
00731: return yyError;
00732: }
00733:
00734: // =========================================================================
00735:
00736: /**
00737: * Parse nonterminal xtc.lang.JavaPattern.FormalParameter.
00738: *
00739: * @param yyStart The index.
00740: * @return The result.
00741: * @throws IOException Signals an I/O error.
00742: */
00743: private Result pFormalParameter(final int yyStart)
00744: throws IOException {
00745: Result yyResult;
00746: int yyBase;
00747: int yyOption1;
00748: Object yyOpValue1;
00749: Node yyValue;
00750: ParseError yyError = ParseError.DUMMY;
00751:
00752: // Alternative <Parameter>.
00753:
00754: yyResult = pVariableModifiers(yyStart);
00755: yyError = yyResult.select(yyError);
00756: if (yyResult.hasValue()) {
00757: final Node v$g$1 = yyResult.semanticValue();
00758:
00759: yyResult = pType(yyResult.index);
00760: yyError = yyResult.select(yyError);
00761: if (yyResult.hasValue()) {
00762: final Node v$g$2 = yyResult.semanticValue();
00763:
00764: yyOption1 = yyResult.index;
00765: yyOpValue1 = null;
00766:
00767: yyBase = yyOption1;
00768: yyResult = pSymbol(yyBase);
00769: yyError = yyResult.select(yyError);
00770: if (yyResult.hasValue("...")) {
00771: final String v$el$1 = "...";
00772:
00773: yyOption1 = yyResult.index;
00774: yyOpValue1 = v$el$1;
00775: } else {
00776: yyError = yyError
00777: .select("\"...\" expected", yyBase);
00778: }
00779: { // Start scope for v$g$3.
00780: final String v$g$3 = cast(yyOpValue1);
00781:
00782: yyResult = pIdentifier(yyOption1);
00783: yyError = yyResult.select(yyError);
00784: if (yyResult.hasValue()) {
00785: final String v$g$4 = yyResult.semanticValue();
00786:
00787: yyOption1 = yyResult.index;
00788: yyOpValue1 = null;
00789:
00790: yyResult = pDimensions(yyOption1);
00791: yyError = yyResult.select(yyError);
00792: if (yyResult.hasValue()) {
00793: final Node v$el$2 = yyResult
00794: .semanticValue();
00795:
00796: yyOption1 = yyResult.index;
00797: yyOpValue1 = v$el$2;
00798: }
00799: { // Start scope for v$g$5.
00800: final Node v$g$5 = cast(yyOpValue1);
00801:
00802: yyValue = GNode.create("FormalParameter",
00803: v$g$1, v$g$2, v$g$3, v$g$4, v$g$5);
00804: yyValue.setLocation(location(yyStart));
00805:
00806: return new SemanticValue(yyValue,
00807: yyOption1, yyError);
00808: } // End scope for v$g$5.
00809: }
00810: } // End scope for v$g$3.
00811: }
00812: }
00813:
00814: // Done.
00815: return yyError;
00816: }
00817:
00818: // =========================================================================
00819:
00820: /**
00821: * Parse nonterminal xtc.lang.JavaPattern.VariableModifiers.
00822: *
00823: * @param yyStart The index.
00824: * @return The result.
00825: * @throws IOException Signals an I/O error.
00826: */
00827: private Result pVariableModifiers(final int yyStart)
00828: throws IOException {
00829: Result yyResult;
00830: int yyRepetition1;
00831: Pair<Node> yyRepValue1;
00832: Node yyValue;
00833: ParseError yyError = ParseError.DUMMY;
00834:
00835: // Alternative <Modifiers>.
00836:
00837: yyRepetition1 = yyStart;
00838: yyRepValue1 = Pair.empty();
00839: while (true) {
00840:
00841: yyResult = pVariableModifier(yyRepetition1);
00842: yyError = yyResult.select(yyError);
00843: if (yyResult.hasValue()) {
00844: final Node v$el$1 = yyResult.semanticValue();
00845:
00846: yyRepetition1 = yyResult.index;
00847: yyRepValue1 = new Pair<Node>(v$el$1, yyRepValue1);
00848: continue;
00849: }
00850: break;
00851: }
00852: { // Start scope for v$g$1.
00853: final Pair<Node> v$g$1 = yyRepValue1.reverse();
00854:
00855: yyValue = GNode.createFromPair("Modifiers", v$g$1);
00856: yyValue.setLocation(location(yyStart));
00857:
00858: return new SemanticValue(yyValue, yyRepetition1, yyError);
00859: } // End scope for v$g$1.
00860: }
00861:
00862: // =========================================================================
00863:
00864: /**
00865: * Parse nonterminal xtc.lang.JavaPattern.FinalModifier.
00866: *
00867: * @param yyStart The index.
00868: * @return The result.
00869: * @throws IOException Signals an I/O error.
00870: */
00871: private Result pFinalModifier(final int yyStart) throws IOException {
00872: Result yyResult;
00873: Node yyValue;
00874: ParseError yyError = ParseError.DUMMY;
00875:
00876: // Alternative 1.
00877:
00878: yyResult = pWord(yyStart);
00879: yyError = yyResult.select(yyError);
00880: if (yyResult.hasValue("final")) {
00881: final String v$g$1 = "final";
00882:
00883: yyValue = GNode.create("Modifier", v$g$1);
00884: yyValue.setLocation(location(yyStart));
00885:
00886: return yyResult.createValue(yyValue, yyError);
00887: }
00888:
00889: // Done.
00890: yyError = yyError.select("final modifier expected", yyStart);
00891: return yyError;
00892: }
00893:
00894: // =========================================================================
00895:
00896: /**
00897: * Parse nonterminal xtc.lang.JavaPattern.FormalParameters.
00898: *
00899: * @param yyStart The index.
00900: * @return The result.
00901: * @throws IOException Signals an I/O error.
00902: */
00903: private Result pFormalParameters(final int yyStart)
00904: throws IOException {
00905: JavaFactoryParserColumn yyColumn = (JavaFactoryParserColumn) column(yyStart);
00906: if (null == yyColumn.chunk1)
00907: yyColumn.chunk1 = new Chunk1();
00908: if (null == yyColumn.chunk1.fFormalParameters)
00909: yyColumn.chunk1.fFormalParameters = pFormalParameters$1(yyStart);
00910: return yyColumn.chunk1.fFormalParameters;
00911: }
00912:
00913: /** Actually parse xtc.lang.JavaPattern.FormalParameters. */
00914: private Result pFormalParameters$1(final int yyStart)
00915: throws IOException {
00916: Result yyResult;
00917: int yyBase;
00918: Node yyValue;
00919: ParseError yyError = ParseError.DUMMY;
00920:
00921: // Alternative 1.
00922:
00923: yyResult = pSymbol(yyStart);
00924: yyError = yyResult.select(yyError);
00925: if (yyResult.hasValue("(")) {
00926:
00927: final int yyChoice1 = yyResult.index;
00928:
00929: // Nested alternative 1.
00930:
00931: yyResult = pFormalParameter(yyChoice1);
00932: yyError = yyResult.select(yyError);
00933: if (yyResult.hasValue()) {
00934: final Node v$g$1 = yyResult.semanticValue();
00935:
00936: yyResult = pFormalParameters$$Star1(yyResult.index);
00937: yyError = yyResult.select(yyError);
00938: if (yyResult.hasValue()) {
00939: final Pair<Node> v$g$2 = yyResult.semanticValue();
00940:
00941: yyBase = yyResult.index;
00942: yyResult = pSymbol(yyBase);
00943: yyError = yyResult.select(yyError);
00944: if (yyResult.hasValue(")")) {
00945:
00946: yyValue = GNode.createFromPair(
00947: "FormalParameters", v$g$1, v$g$2);
00948: yyValue.setLocation(location(yyStart));
00949:
00950: return yyResult.createValue(yyValue, yyError);
00951: } else {
00952: yyError = yyError.select("\")\" expected",
00953: yyBase);
00954: }
00955: }
00956: }
00957:
00958: // Nested alternative 2.
00959:
00960: yyBase = yyChoice1;
00961: yyResult = pSymbol(yyBase);
00962: yyError = yyResult.select(yyError);
00963: if (yyResult.hasValue(")")) {
00964:
00965: yyValue = GNode.create("FormalParameters", false);
00966: yyValue.setLocation(location(yyStart));
00967:
00968: return yyResult.createValue(yyValue, yyError);
00969: } else {
00970: yyError = yyError.select("\")\" expected", yyBase);
00971: }
00972: }
00973:
00974: // Done.
00975: yyError = yyError.select("formal parameters expected", yyStart);
00976: return yyError;
00977: }
00978:
00979: // =========================================================================
00980:
00981: /**
00982: * Parse synthetic nonterminal xtc.lang.JavaFactory.FormalParameters$$Star1.
00983: *
00984: * @param yyStart The index.
00985: * @return The result.
00986: * @throws IOException Signals an I/O error.
00987: */
00988: private Result pFormalParameters$$Star1(final int yyStart)
00989: throws IOException {
00990:
00991: JavaFactoryParserColumn yyColumn = (JavaFactoryParserColumn) column(yyStart);
00992: if (null == yyColumn.chunk1)
00993: yyColumn.chunk1 = new Chunk1();
00994: if (null == yyColumn.chunk1.fFormalParameters$$Star1)
00995: yyColumn.chunk1.fFormalParameters$$Star1 = pFormalParameters$$Star1$1(yyStart);
00996: return yyColumn.chunk1.fFormalParameters$$Star1;
00997: }
00998:
00999: /** Actually parse xtc.lang.JavaFactory.FormalParameters$$Star1. */
01000: private Result pFormalParameters$$Star1$1(final int yyStart)
01001: throws IOException {
01002:
01003: Result yyResult;
01004: Pair<Node> yyValue;
01005: ParseError yyError = ParseError.DUMMY;
01006:
01007: // Alternative 1.
01008:
01009: yyResult = pSymbol(yyStart);
01010: yyError = yyResult.select(yyError);
01011: if (yyResult.hasValue(",")) {
01012:
01013: yyResult = pFormalParameter(yyResult.index);
01014: yyError = yyResult.select(yyError);
01015: if (yyResult.hasValue()) {
01016: final Node v$el$1 = yyResult.semanticValue();
01017:
01018: yyResult = pFormalParameters$$Star1(yyResult.index);
01019: yyError = yyResult.select(yyError);
01020: if (yyResult.hasValue()) {
01021: final Pair<Node> v$2 = yyResult.semanticValue();
01022:
01023: yyValue = new Pair<Node>(v$el$1, v$2);
01024:
01025: return yyResult.createValue(yyValue, yyError);
01026: }
01027: }
01028: }
01029:
01030: // Alternative 2.
01031:
01032: yyValue = Pair.empty();
01033:
01034: return new SemanticValue(yyValue, yyStart, yyError);
01035: }
01036:
01037: // =========================================================================
01038:
01039: /**
01040: * Parse nonterminal xtc.lang.JavaPattern.Declarator.
01041: *
01042: * @param yyStart The index.
01043: * @return The result.
01044: * @throws IOException Signals an I/O error.
01045: */
01046: private Result pDeclarator(final int yyStart) throws IOException {
01047: Result yyResult;
01048: int yyBase;
01049: int yyOption1;
01050: Node yyOpValue1;
01051: Node yyValue;
01052: ParseError yyError = ParseError.DUMMY;
01053:
01054: // Alternative <Declarator>.
01055:
01056: yyResult = pName(yyStart);
01057: yyError = yyResult.select(yyError);
01058: if (yyResult.hasValue()) {
01059: final Object v$g$1 = yyResult.semanticValue();
01060:
01061: yyOption1 = yyResult.index;
01062: yyOpValue1 = null;
01063:
01064: yyResult = pDimensions(yyOption1);
01065: yyError = yyResult.select(yyError);
01066: if (yyResult.hasValue()) {
01067: final Node v$el$1 = yyResult.semanticValue();
01068:
01069: yyOption1 = yyResult.index;
01070: yyOpValue1 = v$el$1;
01071: }
01072: { // Start scope for v$g$2.
01073: final Node v$g$2 = yyOpValue1;
01074:
01075: yyOpValue1 = null;
01076:
01077: yyBase = yyOption1;
01078: yyResult = pSymbol(yyBase);
01079: yyError = yyResult.select(yyError);
01080: if (yyResult.hasValue("=")) {
01081:
01082: yyResult = pVariableInitializer(yyResult.index);
01083: yyError = yyResult.select(yyError);
01084: if (yyResult.hasValue()) {
01085: final Node v$el$2 = yyResult.semanticValue();
01086:
01087: yyOption1 = yyResult.index;
01088: yyOpValue1 = v$el$2;
01089: }
01090: } else {
01091: yyError = yyError.select("\"=\" expected", yyBase);
01092: }
01093: { // Start scope for v$g$3.
01094: final Node v$g$3 = yyOpValue1;
01095:
01096: yyValue = GNode.create("Declarator", v$g$1, v$g$2,
01097: v$g$3);
01098: yyValue.setLocation(location(yyStart));
01099:
01100: return new SemanticValue(yyValue, yyOption1,
01101: yyError);
01102: } // End scope for v$g$3.
01103: } // End scope for v$g$2.
01104: }
01105:
01106: // Done.
01107: return yyError;
01108: }
01109:
01110: // =========================================================================
01111:
01112: /**
01113: * Parse nonterminal xtc.lang.JavaPattern.Declarators.
01114: *
01115: * @param yyStart The index.
01116: * @return The result.
01117: * @throws IOException Signals an I/O error.
01118: */
01119: private Result pDeclarators(final int yyStart) throws IOException {
01120: JavaFactoryParserColumn yyColumn = (JavaFactoryParserColumn) column(yyStart);
01121: if (null == yyColumn.chunk1)
01122: yyColumn.chunk1 = new Chunk1();
01123: if (null == yyColumn.chunk1.fDeclarators)
01124: yyColumn.chunk1.fDeclarators = pDeclarators$1(yyStart);
01125: return yyColumn.chunk1.fDeclarators;
01126: }
01127:
01128: /** Actually parse xtc.lang.JavaPattern.Declarators. */
01129: private Result pDeclarators$1(final int yyStart) throws IOException {
01130: Result yyResult;
01131: Node yyValue;
01132: ParseError yyError = ParseError.DUMMY;
01133:
01134: // Alternative 1.
01135:
01136: yyResult = pDeclarator(yyStart);
01137: yyError = yyResult.select(yyError);
01138: if (yyResult.hasValue()) {
01139: final Node v$g$1 = yyResult.semanticValue();
01140:
01141: yyResult = pDeclarators$$Star1(yyResult.index);
01142: yyError = yyResult.select(yyError);
01143: if (yyResult.hasValue()) {
01144: final Pair<Node> v$g$2 = yyResult.semanticValue();
01145:
01146: yyValue = GNode.createFromPair("Declarators", v$g$1,
01147: v$g$2);
01148: yyValue.setLocation(location(yyStart));
01149:
01150: return yyResult.createValue(yyValue, yyError);
01151: }
01152: }
01153:
01154: // Done.
01155: return yyError;
01156: }
01157:
01158: // =========================================================================
01159:
01160: /**
01161: * Parse synthetic nonterminal xtc.lang.JavaFactory.Declarators$$Star1.
01162: *
01163: * @param yyStart The index.
01164: * @return The result.
01165: * @throws IOException Signals an I/O error.
01166: */
01167: private Result pDeclarators$$Star1(final int yyStart)
01168: throws IOException {
01169: JavaFactoryParserColumn yyColumn = (JavaFactoryParserColumn) column(yyStart);
01170: if (null == yyColumn.chunk1)
01171: yyColumn.chunk1 = new Chunk1();
01172: if (null == yyColumn.chunk1.fDeclarators$$Star1)
01173: yyColumn.chunk1.fDeclarators$$Star1 = pDeclarators$$Star1$1(yyStart);
01174: return yyColumn.chunk1.fDeclarators$$Star1;
01175: }
01176:
01177: /** Actually parse xtc.lang.JavaFactory.Declarators$$Star1. */
01178: private Result pDeclarators$$Star1$1(final int yyStart)
01179: throws IOException {
01180: Result yyResult;
01181: Pair<Node> yyValue;
01182: ParseError yyError = ParseError.DUMMY;
01183:
01184: // Alternative 1.
01185:
01186: yyResult = pSymbol(yyStart);
01187: yyError = yyResult.select(yyError);
01188: if (yyResult.hasValue(",")) {
01189:
01190: yyResult = pDeclarator(yyResult.index);
01191: yyError = yyResult.select(yyError);
01192: if (yyResult.hasValue()) {
01193: final Node v$el$1 = yyResult.semanticValue();
01194:
01195: yyResult = pDeclarators$$Star1(yyResult.index);
01196: yyError = yyResult.select(yyError);
01197: if (yyResult.hasValue()) {
01198: final Pair<Node> v$2 = yyResult.semanticValue();
01199:
01200: yyValue = new Pair<Node>(v$el$1, v$2);
01201:
01202: return yyResult.createValue(yyValue, yyError);
01203: }
01204: }
01205: }
01206:
01207: // Alternative 2.
01208:
01209: yyValue = Pair.empty();
01210:
01211: return new SemanticValue(yyValue, yyStart, yyError);
01212: }
01213:
01214: // =========================================================================
01215:
01216: /**
01217: * Parse nonterminal xtc.lang.JavaPattern.ClassBody.
01218: *
01219: * @param yyStart The index.
01220: * @return The result.
01221: * @throws IOException Signals an I/O error.
01222: */
01223: private Result pClassBody(final int yyStart) throws IOException {
01224: Result yyResult;
01225: int yyBase;
01226: int yyRepetition1;
01227: Pair<Node> yyRepValue1;
01228: Node yyValue;
01229: ParseError yyError = ParseError.DUMMY;
01230:
01231: // Alternative <Body>.
01232:
01233: yyResult = pSymbol(yyStart);
01234: yyError = yyResult.select(yyError);
01235: if (yyResult.hasValue("{")) {
01236:
01237: yyRepetition1 = yyResult.index;
01238: yyRepValue1 = Pair.empty();
01239: while (true) {
01240:
01241: yyResult = pDeclaration(yyRepetition1);
01242: yyError = yyResult.select(yyError);
01243: if (yyResult.hasValue()) {
01244: final Node v$el$1 = yyResult.semanticValue();
01245:
01246: yyRepetition1 = yyResult.index;
01247: yyRepValue1 = new Pair<Node>(v$el$1, yyRepValue1);
01248: continue;
01249: }
01250: break;
01251: }
01252: { // Start scope for v$g$1.
01253: final Pair<Node> v$g$1 = yyRepValue1.reverse();
01254:
01255: yyBase = yyRepetition1;
01256: yyResult = pSymbol(yyBase);
01257: yyError = yyResult.select(yyError);
01258: if (yyResult.hasValue("}")) {
01259:
01260: yyValue = GNode.createFromPair("ClassBody", v$g$1);
01261: yyValue.setLocation(location(yyStart));
01262:
01263: return yyResult.createValue(yyValue, yyError);
01264: } else {
01265: yyError = yyError.select("\"}\" expected", yyBase);
01266: }
01267: } // End scope for v$g$1.
01268: }
01269:
01270: // Done.
01271: yyError = yyError.select("class body expected", yyStart);
01272: return yyError;
01273: }
01274:
01275: // =========================================================================
01276:
01277: /**
01278: * Parse nonterminal xtc.lang.JavaPattern.Declaration.
01279: *
01280: * @param yyStart The index.
01281: * @return The result.
01282: * @throws IOException Signals an I/O error.
01283: */
01284: private Result pDeclaration(final int yyStart) throws IOException {
01285: Result yyResult;
01286: int yyBase;
01287: int yyOption1;
01288: Object yyOpValue1;
01289: Node yyValue;
01290: ParseError yyError = ParseError.DUMMY;
01291:
01292: // Alternative 1.
01293:
01294: yyResult = pModifiers(yyStart);
01295: yyError = yyResult.select(yyError);
01296: if (yyResult.hasValue()) {
01297: final Node v$g$1 = yyResult.semanticValue();
01298:
01299: final int yyChoice1 = yyResult.index;
01300:
01301: // Nested alternative 1.
01302:
01303: yyResult = pType(yyChoice1);
01304: yyError = yyResult.select(yyError);
01305: if (yyResult.hasValue()) {
01306: final Node v$g$2 = yyResult.semanticValue();
01307:
01308: yyResult = pDeclarators(yyResult.index);
01309: yyError = yyResult.select(yyError);
01310: if (yyResult.hasValue()) {
01311: final Node v$g$3 = yyResult.semanticValue();
01312:
01313: yyBase = yyResult.index;
01314: yyResult = pSymbol(yyBase);
01315: yyError = yyResult.select(yyError);
01316: if (yyResult.hasValue(";")) {
01317:
01318: yyValue = GNode.create("FieldDeclaration",
01319: v$g$1, v$g$2, v$g$3);
01320: yyValue.setLocation(location(yyStart));
01321:
01322: return yyResult.createValue(yyValue, yyError);
01323: } else {
01324: yyError = yyError.select("\";\" expected",
01325: yyBase);
01326: }
01327: }
01328: }
01329:
01330: // Nested alternative 2.
01331:
01332: yyOption1 = yyChoice1;
01333: yyOpValue1 = null;
01334:
01335: yyResult = pTypeParameters(yyOption1);
01336: yyError = yyResult.select(yyError);
01337: if (yyResult.hasValue()) {
01338: final Node v$el$1 = yyResult.semanticValue();
01339:
01340: yyOption1 = yyResult.index;
01341: yyOpValue1 = v$el$1;
01342: }
01343: { // Start scope for v$g$2.
01344: final Node v$g$2 = cast(yyOpValue1);
01345:
01346: final int yyChoice2 = yyOption1;
01347:
01348: // Nested alternative 1.
01349:
01350: yyResult = pResultType(yyChoice2);
01351: yyError = yyResult.select(yyError);
01352: if (yyResult.hasValue()) {
01353: final Node v$g$3 = yyResult.semanticValue();
01354:
01355: yyResult = pName(yyResult.index);
01356: yyError = yyResult.select(yyError);
01357: if (yyResult.hasValue()) {
01358: final Object v$g$4 = yyResult.semanticValue();
01359:
01360: yyResult = pFormalParameters(yyResult.index);
01361: yyError = yyResult.select(yyError);
01362: if (yyResult.hasValue()) {
01363: final Node v$g$5 = yyResult.semanticValue();
01364:
01365: yyOption1 = yyResult.index;
01366: yyOpValue1 = null;
01367:
01368: yyResult = pDimensions(yyOption1);
01369: yyError = yyResult.select(yyError);
01370: if (yyResult.hasValue()) {
01371: final Node v$el$2 = yyResult
01372: .semanticValue();
01373:
01374: yyOption1 = yyResult.index;
01375: yyOpValue1 = v$el$2;
01376: }
01377: { // Start scope for v$g$6.
01378: final Node v$g$6 = cast(yyOpValue1);
01379:
01380: yyOpValue1 = null;
01381:
01382: yyResult = pThrowsClause(yyOption1);
01383: yyError = yyResult.select(yyError);
01384: if (yyResult.hasValue()) {
01385: final Node v$el$3 = yyResult
01386: .semanticValue();
01387:
01388: yyOption1 = yyResult.index;
01389: yyOpValue1 = v$el$3;
01390: }
01391: { // Start scope for v$g$7.
01392: final Node v$g$7 = cast(yyOpValue1);
01393:
01394: final int yyChoice3 = yyOption1;
01395:
01396: // Nested alternative 1.
01397:
01398: yyResult = pBlock(yyChoice3);
01399: yyError = yyResult.select(yyError);
01400: if (yyResult.hasValue()) {
01401: final Node v$g$8 = yyResult
01402: .semanticValue();
01403:
01404: yyValue = GNode.create(
01405: "MethodDeclaration",
01406: v$g$1, v$g$2, v$g$3,
01407: v$g$4, v$g$5, v$g$6,
01408: v$g$7, v$g$8);
01409: yyValue
01410: .setLocation(location(yyStart));
01411:
01412: return yyResult.createValue(
01413: yyValue, yyError);
01414: }
01415:
01416: // Nested alternative 2.
01417:
01418: yyBase = yyChoice3;
01419: yyResult = pSymbol(yyBase);
01420: yyError = yyResult.select(yyError);
01421: if (yyResult.hasValue(";")) {
01422:
01423: yyValue = GNode.create(
01424: "MethodDeclaration",
01425: v$g$1, v$g$2, v$g$3,
01426: v$g$4, v$g$5, v$g$6,
01427: v$g$7, null);
01428: yyValue
01429: .setLocation(location(yyStart));
01430:
01431: return yyResult.createValue(
01432: yyValue, yyError);
01433: } else {
01434: yyError = yyError.select(
01435: "\";\" expected",
01436: yyBase);
01437: }
01438: } // End scope for v$g$7.
01439: } // End scope for v$g$6.
01440: }
01441: }
01442: }
01443:
01444: // Nested alternative 2.
01445:
01446: yyResult = pName(yyChoice2);
01447: yyError = yyResult.select(yyError);
01448: if (yyResult.hasValue()) {
01449: final Object v$g$3 = yyResult.semanticValue();
01450:
01451: yyResult = pFormalParameters(yyResult.index);
01452: yyError = yyResult.select(yyError);
01453: if (yyResult.hasValue()) {
01454: final Node v$g$4 = yyResult.semanticValue();
01455:
01456: yyOption1 = yyResult.index;
01457: yyOpValue1 = null;
01458:
01459: yyResult = pThrowsClause(yyOption1);
01460: yyError = yyResult.select(yyError);
01461: if (yyResult.hasValue()) {
01462: final Node v$el$2 = yyResult
01463: .semanticValue();
01464:
01465: yyOption1 = yyResult.index;
01466: yyOpValue1 = v$el$2;
01467: }
01468: { // Start scope for v$g$5.
01469: final Node v$g$5 = cast(yyOpValue1);
01470:
01471: yyResult = pBlock(yyOption1);
01472: yyError = yyResult.select(yyError);
01473: if (yyResult.hasValue()) {
01474: final Node v$g$6 = yyResult
01475: .semanticValue();
01476:
01477: yyValue = GNode.create(
01478: "ConstructorDeclaration",
01479: v$g$1, v$g$2, v$g$3, v$g$4,
01480: v$g$5, v$g$6);
01481: yyValue.setLocation(location(yyStart));
01482:
01483: return yyResult.createValue(yyValue,
01484: yyError);
01485: }
01486: } // End scope for v$g$5.
01487: }
01488: }
01489: } // End scope for v$g$2.
01490:
01491: // Nested alternative 3.
01492:
01493: yyBase = yyChoice1;
01494: yyResult = pWord(yyBase);
01495: yyError = yyResult.select(yyError);
01496: if (yyResult.hasValue("class")) {
01497:
01498: yyResult = pName(yyResult.index);
01499: yyError = yyResult.select(yyError);
01500: if (yyResult.hasValue()) {
01501: final Object v$g$2 = yyResult.semanticValue();
01502:
01503: yyOption1 = yyResult.index;
01504: yyOpValue1 = null;
01505:
01506: yyResult = pTypeParameters(yyOption1);
01507: yyError = yyResult.select(yyError);
01508: if (yyResult.hasValue()) {
01509: final Node v$el$1 = yyResult.semanticValue();
01510:
01511: yyOption1 = yyResult.index;
01512: yyOpValue1 = v$el$1;
01513: }
01514: { // Start scope for v$g$3.
01515: final Node v$g$3 = cast(yyOpValue1);
01516:
01517: yyOpValue1 = null;
01518:
01519: yyResult = pExtension(yyOption1);
01520: yyError = yyResult.select(yyError);
01521: if (yyResult.hasValue()) {
01522: final Node v$el$2 = yyResult
01523: .semanticValue();
01524:
01525: yyOption1 = yyResult.index;
01526: yyOpValue1 = v$el$2;
01527: }
01528: { // Start scope for v$g$4.
01529: final Node v$g$4 = cast(yyOpValue1);
01530:
01531: yyOpValue1 = null;
01532:
01533: yyResult = pImplementation(yyOption1);
01534: yyError = yyResult.select(yyError);
01535: if (yyResult.hasValue()) {
01536: final Node v$el$3 = yyResult
01537: .semanticValue();
01538:
01539: yyOption1 = yyResult.index;
01540: yyOpValue1 = v$el$3;
01541: }
01542: { // Start scope for v$g$5.
01543: final Node v$g$5 = cast(yyOpValue1);
01544:
01545: yyResult = pClassBody(yyOption1);
01546: yyError = yyResult.select(yyError);
01547: if (yyResult.hasValue()) {
01548: final Node v$g$6 = yyResult
01549: .semanticValue();
01550:
01551: yyValue = GNode.create(
01552: "ClassDeclaration", v$g$1,
01553: v$g$2, v$g$3, v$g$4, v$g$5,
01554: v$g$6);
01555: yyValue
01556: .setLocation(location(yyStart));
01557:
01558: return yyResult.createValue(
01559: yyValue, yyError);
01560: }
01561: } // End scope for v$g$5.
01562: } // End scope for v$g$4.
01563: } // End scope for v$g$3.
01564: }
01565: } else {
01566: yyError = yyError.select("\"class\" expected", yyBase);
01567: }
01568:
01569: // Nested alternative 4.
01570:
01571: yyBase = yyChoice1;
01572: yyResult = pWord(yyBase);
01573: yyError = yyResult.select(yyError);
01574: if (yyResult.hasValue("interface")) {
01575:
01576: yyResult = pName(yyResult.index);
01577: yyError = yyResult.select(yyError);
01578: if (yyResult.hasValue()) {
01579: final Object v$g$2 = yyResult.semanticValue();
01580:
01581: yyOption1 = yyResult.index;
01582: yyOpValue1 = null;
01583:
01584: yyResult = pTypeParameters(yyOption1);
01585: yyError = yyResult.select(yyError);
01586: if (yyResult.hasValue()) {
01587: final Node v$el$1 = yyResult.semanticValue();
01588:
01589: yyOption1 = yyResult.index;
01590: yyOpValue1 = v$el$1;
01591: }
01592: { // Start scope for v$g$3.
01593: final Node v$g$3 = cast(yyOpValue1);
01594:
01595: yyOpValue1 = null;
01596:
01597: yyResult = pExtension(yyOption1);
01598: yyError = yyResult.select(yyError);
01599: if (yyResult.hasValue()) {
01600: final Node v$el$2 = yyResult
01601: .semanticValue();
01602:
01603: yyOption1 = yyResult.index;
01604: yyOpValue1 = v$el$2;
01605: }
01606: { // Start scope for v$g$4.
01607: final Node v$g$4 = cast(yyOpValue1);
01608:
01609: yyResult = pClassBody(yyOption1);
01610: yyError = yyResult.select(yyError);
01611: if (yyResult.hasValue()) {
01612: final Node v$g$5 = yyResult
01613: .semanticValue();
01614:
01615: yyValue = GNode.create(
01616: "InterfaceDeclaration", v$g$1,
01617: v$g$2, v$g$3, v$g$4, v$g$5);
01618: yyValue.setLocation(location(yyStart));
01619:
01620: return yyResult.createValue(yyValue,
01621: yyError);
01622: }
01623: } // End scope for v$g$4.
01624: } // End scope for v$g$3.
01625: }
01626: } else {
01627: yyError = yyError.select("\"interface\" expected",
01628: yyBase);
01629: }
01630:
01631: // Nested alternative 5.
01632:
01633: yyBase = yyChoice1;
01634: yyResult = pSymbol(yyBase);
01635: yyError = yyResult.select(yyError);
01636: if (yyResult.hasValue("@")) {
01637:
01638: yyBase = yyResult.index;
01639: yyResult = pWord(yyBase);
01640: yyError = yyResult.select(yyError);
01641: if (yyResult.hasValue("interface")) {
01642:
01643: yyResult = pName(yyResult.index);
01644: yyError = yyResult.select(yyError);
01645: if (yyResult.hasValue()) {
01646: final Object v$g$2 = yyResult.semanticValue();
01647:
01648: yyResult = pAnnotationBody(yyResult.index);
01649: yyError = yyResult.select(yyError);
01650: if (yyResult.hasValue()) {
01651: final Node v$g$3 = yyResult.semanticValue();
01652:
01653: yyValue = GNode.create(
01654: "AnnotationDeclaration", v$g$1,
01655: v$g$2, v$g$3);
01656: yyValue.setLocation(location(yyStart));
01657:
01658: return yyResult.createValue(yyValue,
01659: yyError);
01660: }
01661: }
01662: } else {
01663: yyError = yyError.select("\"interface\" expected",
01664: yyBase);
01665: }
01666: } else {
01667: yyError = yyError.select("\"@\" expected", yyBase);
01668: }
01669:
01670: // Nested alternative 6.
01671:
01672: yyBase = yyChoice1;
01673: yyResult = pWord(yyBase);
01674: yyError = yyResult.select(yyError);
01675: if (yyResult.hasValue("enum")) {
01676:
01677: yyResult = pName(yyResult.index);
01678: yyError = yyResult.select(yyError);
01679: if (yyResult.hasValue()) {
01680: final Object v$g$2 = yyResult.semanticValue();
01681:
01682: yyOption1 = yyResult.index;
01683: yyOpValue1 = null;
01684:
01685: yyResult = pImplementation(yyOption1);
01686: yyError = yyResult.select(yyError);
01687: if (yyResult.hasValue()) {
01688: final Node v$el$1 = yyResult.semanticValue();
01689:
01690: yyOption1 = yyResult.index;
01691: yyOpValue1 = v$el$1;
01692: }
01693: { // Start scope for v$g$3.
01694: final Node v$g$3 = cast(yyOpValue1);
01695:
01696: yyBase = yyOption1;
01697: yyResult = pSymbol(yyBase);
01698: yyError = yyResult.select(yyError);
01699: if (yyResult.hasValue("{")) {
01700:
01701: yyOption1 = yyResult.index;
01702: yyOpValue1 = null;
01703:
01704: yyResult = pEnumConstants(yyOption1);
01705: yyError = yyResult.select(yyError);
01706: if (yyResult.hasValue()) {
01707: final Node v$el$2 = yyResult
01708: .semanticValue();
01709:
01710: yyOption1 = yyResult.index;
01711: yyOpValue1 = v$el$2;
01712: }
01713: { // Start scope for v$g$4.
01714: final Node v$g$4 = cast(yyOpValue1);
01715:
01716: yyBase = yyOption1;
01717: yyResult = pSymbol(yyBase);
01718: yyError = yyResult.select(yyError);
01719: if (yyResult.hasValue(",")) {
01720:
01721: yyOption1 = yyResult.index;
01722: } else {
01723: yyError = yyError.select(
01724: "\",\" expected", yyBase);
01725: }
01726:
01727: yyOpValue1 = null;
01728:
01729: yyResult = pEnumMembers(yyOption1);
01730: yyError = yyResult.select(yyError);
01731: if (yyResult.hasValue()) {
01732: final Node v$el$3 = yyResult
01733: .semanticValue();
01734:
01735: yyOption1 = yyResult.index;
01736: yyOpValue1 = v$el$3;
01737: }
01738: { // Start scope for v$g$5.
01739: final Node v$g$5 = cast(yyOpValue1);
01740:
01741: yyBase = yyOption1;
01742: yyResult = pSymbol(yyBase);
01743: yyError = yyResult.select(yyError);
01744: if (yyResult.hasValue("}")) {
01745:
01746: yyValue = GNode.create(
01747: "EnumDeclaration",
01748: v$g$1, v$g$2, v$g$3,
01749: v$g$4, v$g$5);
01750: yyValue
01751: .setLocation(location(yyStart));
01752:
01753: return yyResult.createValue(
01754: yyValue, yyError);
01755: } else {
01756: yyError = yyError.select(
01757: "\"}\" expected",
01758: yyBase);
01759: }
01760: } // End scope for v$g$5.
01761: } // End scope for v$g$4.
01762: } else {
01763: yyError = yyError.select("\"{\" expected",
01764: yyBase);
01765: }
01766: } // End scope for v$g$3.
01767: }
01768: } else {
01769: yyError = yyError.select("\"enum\" expected", yyBase);
01770: }
01771: }
01772:
01773: // Alternative 2.
01774:
01775: yyOption1 = yyStart;
01776: yyOpValue1 = null;
01777:
01778: yyBase = yyOption1;
01779: yyResult = pWord(yyBase);
01780: yyError = yyResult.select(yyError);
01781: if (yyResult.hasValue("static")) {
01782: final String v$el$1 = "static";
01783:
01784: yyOption1 = yyResult.index;
01785: yyOpValue1 = v$el$1;
01786: } else {
01787: yyError = yyError.select("\"static\" expected", yyBase);
01788: }
01789: { // Start scope for v$g$1.
01790: final String v$g$1 = cast(yyOpValue1);
01791:
01792: yyResult = pBlock(yyOption1);
01793: yyError = yyResult.select(yyError);
01794: if (yyResult.hasValue()) {
01795: final Node v$g$2 = yyResult.semanticValue();
01796:
01797: yyValue = GNode
01798: .create("BlockDeclaration", v$g$1, v$g$2);
01799: yyValue.setLocation(location(yyStart));
01800:
01801: return yyResult.createValue(yyValue, yyError);
01802: }
01803: } // End scope for v$g$1.
01804:
01805: // Alternative 3.
01806:
01807: yyResult = pSymbol(yyStart);
01808: yyError = yyResult.select(yyError);
01809: if (yyResult.hasValue(";")) {
01810:
01811: yyValue = GNode.create("EmptyDeclaration", false);
01812: yyValue.setLocation(location(yyStart));
01813:
01814: return yyResult.createValue(yyValue, yyError);
01815: }
01816:
01817: // Alternative <ListPattern>.
01818:
01819: yyResult = pNodeListVariable(yyStart);
01820: yyError = yyResult.select(yyError);
01821: if (yyResult.hasValue()) {
01822: yyValue = yyResult.semanticValue();
01823:
01824: return yyResult.createValue(yyValue, yyError);
01825: }
01826:
01827: // Alternative <Pattern>.
01828:
01829: yyResult = pJavaPattern$NodeVariable(yyStart);
01830: yyError = yyResult.select(yyError);
01831: if (yyResult.hasValue()) {
01832: yyValue = yyResult.semanticValue();
01833:
01834: return yyResult.createValue(yyValue, yyError);
01835: }
01836:
01837: // Done.
01838: yyError = yyError.select("declaration expected", yyStart);
01839: return yyError;
01840: }
01841:
01842: // =========================================================================
01843:
01844: /**
01845: * Parse nonterminal xtc.lang.JavaPattern.ThrowsClause.
01846: *
01847: * @param yyStart The index.
01848: * @return The result.
01849: * @throws IOException Signals an I/O error.
01850: */
01851: private Result pThrowsClause(final int yyStart) throws IOException {
01852: Result yyResult;
01853: int yyBase;
01854: int yyRepetition1;
01855: Pair<Node> yyRepValue1;
01856: Node yyValue;
01857: ParseError yyError = ParseError.DUMMY;
01858:
01859: // Alternative 1.
01860:
01861: yyResult = pWord(yyStart);
01862: yyError = yyResult.select(yyError);
01863: if (yyResult.hasValue("throws")) {
01864:
01865: yyResult = pQualifiedIdentifier(yyResult.index);
01866: yyError = yyResult.select(yyError);
01867: if (yyResult.hasValue()) {
01868: final Node v$g$1 = yyResult.semanticValue();
01869:
01870: yyRepetition1 = yyResult.index;
01871: yyRepValue1 = Pair.empty();
01872: while (true) {
01873:
01874: yyBase = yyRepetition1;
01875: yyResult = pSymbol(yyBase);
01876: yyError = yyResult.select(yyError);
01877: if (yyResult.hasValue(",")) {
01878:
01879: yyResult = pQualifiedIdentifier(yyResult.index);
01880: yyError = yyResult.select(yyError);
01881: if (yyResult.hasValue()) {
01882: final Node v$el$1 = yyResult
01883: .semanticValue();
01884:
01885: yyRepetition1 = yyResult.index;
01886: yyRepValue1 = new Pair<Node>(v$el$1,
01887: yyRepValue1);
01888: continue;
01889: }
01890: } else {
01891: yyError = yyError.select("\",\" expected",
01892: yyBase);
01893: }
01894: break;
01895: }
01896: { // Start scope for v$g$2.
01897: final Pair<Node> v$g$2 = yyRepValue1.reverse();
01898:
01899: yyValue = GNode.createFromPair("ThrowsClause",
01900: v$g$1, v$g$2);
01901: yyValue.setLocation(location(yyStart));
01902:
01903: return new SemanticValue(yyValue, yyRepetition1,
01904: yyError);
01905: } // End scope for v$g$2.
01906: }
01907: }
01908:
01909: // Done.
01910: yyError = yyError.select("throws clause expected", yyStart);
01911: return yyError;
01912: }
01913:
01914: // =========================================================================
01915:
01916: /**
01917: * Parse nonterminal xtc.lang.JavaPattern.Extension.
01918: *
01919: * @param yyStart The index.
01920: * @return The result.
01921: * @throws IOException Signals an I/O error.
01922: */
01923: private Result pExtension(final int yyStart) throws IOException {
01924: Result yyResult;
01925: int yyBase;
01926: int yyRepetition1;
01927: Pair<Node> yyRepValue1;
01928: Node yyValue;
01929: ParseError yyError = ParseError.DUMMY;
01930:
01931: // Alternative 1.
01932:
01933: yyResult = pWord(yyStart);
01934: yyError = yyResult.select(yyError);
01935: if (yyResult.hasValue("extends")) {
01936:
01937: yyResult = pType(yyResult.index);
01938: yyError = yyResult.select(yyError);
01939: if (yyResult.hasValue()) {
01940: final Node v$g$1 = yyResult.semanticValue();
01941:
01942: yyRepetition1 = yyResult.index;
01943: yyRepValue1 = Pair.empty();
01944: while (true) {
01945:
01946: yyBase = yyRepetition1;
01947: yyResult = pSymbol(yyBase);
01948: yyError = yyResult.select(yyError);
01949: if (yyResult.hasValue(",")) {
01950:
01951: yyResult = pType(yyResult.index);
01952: yyError = yyResult.select(yyError);
01953: if (yyResult.hasValue()) {
01954: final Node v$el$1 = yyResult
01955: .semanticValue();
01956:
01957: yyRepetition1 = yyResult.index;
01958: yyRepValue1 = new Pair<Node>(v$el$1,
01959: yyRepValue1);
01960: continue;
01961: }
01962: } else {
01963: yyError = yyError.select("\",\" expected",
01964: yyBase);
01965: }
01966: break;
01967: }
01968: { // Start scope for v$g$2.
01969: final Pair<Node> v$g$2 = yyRepValue1.reverse();
01970:
01971: yyValue = GNode.createFromPair("Extension", v$g$1,
01972: v$g$2);
01973: yyValue.setLocation(location(yyStart));
01974:
01975: return new SemanticValue(yyValue, yyRepetition1,
01976: yyError);
01977: } // End scope for v$g$2.
01978: }
01979: }
01980:
01981: // Done.
01982: yyError = yyError.select("extension expected", yyStart);
01983: return yyError;
01984: }
01985:
01986: // =========================================================================
01987:
01988: /**
01989: * Parse nonterminal xtc.lang.JavaPattern.Implementation.
01990: *
01991: * @param yyStart The index.
01992: * @return The result.
01993: * @throws IOException Signals an I/O error.
01994: */
01995: private Result pImplementation(final int yyStart)
01996: throws IOException {
01997: JavaFactoryParserColumn yyColumn = (JavaFactoryParserColumn) column(yyStart);
01998: if (null == yyColumn.chunk1)
01999: yyColumn.chunk1 = new Chunk1();
02000: if (null == yyColumn.chunk1.fImplementation)
02001: yyColumn.chunk1.fImplementation = pImplementation$1(yyStart);
02002: return yyColumn.chunk1.fImplementation;
02003: }
02004:
02005: /** Actually parse xtc.lang.JavaPattern.Implementation. */
02006: private Result pImplementation$1(final int yyStart)
02007: throws IOException {
02008: Result yyResult;
02009: Node yyValue;
02010: ParseError yyError = ParseError.DUMMY;
02011:
02012: // Alternative 1.
02013:
02014: yyResult = pWord(yyStart);
02015: yyError = yyResult.select(yyError);
02016: if (yyResult.hasValue("implements")) {
02017:
02018: yyResult = pType(yyResult.index);
02019: yyError = yyResult.select(yyError);
02020: if (yyResult.hasValue()) {
02021: final Node v$g$1 = yyResult.semanticValue();
02022:
02023: yyResult = pImplementation$$Star1(yyResult.index);
02024: yyError = yyResult.select(yyError);
02025: if (yyResult.hasValue()) {
02026: final Pair<Node> v$g$2 = yyResult.semanticValue();
02027:
02028: yyValue = GNode.createFromPair("Implementation",
02029: v$g$1, v$g$2);
02030: yyValue.setLocation(location(yyStart));
02031:
02032: return yyResult.createValue(yyValue, yyError);
02033: }
02034: }
02035: }
02036:
02037: // Done.
02038: yyError = yyError.select("implementation expected", yyStart);
02039: return yyError;
02040: }
02041:
02042: // =========================================================================
02043:
02044: /**
02045: * Parse synthetic nonterminal xtc.lang.JavaFactory.Implementation$$Star1.
02046: *
02047: * @param yyStart The index.
02048: * @return The result.
02049: * @throws IOException Signals an I/O error.
02050: */
02051: private Result pImplementation$$Star1(final int yyStart)
02052: throws IOException {
02053:
02054: JavaFactoryParserColumn yyColumn = (JavaFactoryParserColumn) column(yyStart);
02055: if (null == yyColumn.chunk1)
02056: yyColumn.chunk1 = new Chunk1();
02057: if (null == yyColumn.chunk1.fImplementation$$Star1)
02058: yyColumn.chunk1.fImplementation$$Star1 = pImplementation$$Star1$1(yyStart);
02059: return yyColumn.chunk1.fImplementation$$Star1;
02060: }
02061:
02062: /** Actually parse xtc.lang.JavaFactory.Implementation$$Star1. */
02063: private Result pImplementation$$Star1$1(final int yyStart)
02064: throws IOException {
02065:
02066: Result yyResult;
02067: Pair<Node> yyValue;
02068: ParseError yyError = ParseError.DUMMY;
02069:
02070: // Alternative 1.
02071:
02072: yyResult = pSymbol(yyStart);
02073: yyError = yyResult.select(yyError);
02074: if (yyResult.hasValue(",")) {
02075:
02076: yyResult = pType(yyResult.index);
02077: yyError = yyResult.select(yyError);
02078: if (yyResult.hasValue()) {
02079: final Node v$el$1 = yyResult.semanticValue();
02080:
02081: yyResult = pImplementation$$Star1(yyResult.index);
02082: yyError = yyResult.select(yyError);
02083: if (yyResult.hasValue()) {
02084: final Pair<Node> v$2 = yyResult.semanticValue();
02085:
02086: yyValue = new Pair<Node>(v$el$1, v$2);
02087:
02088: return yyResult.createValue(yyValue, yyError);
02089: }
02090: }
02091: }
02092:
02093: // Alternative 2.
02094:
02095: yyValue = Pair.empty();
02096:
02097: return new SemanticValue(yyValue, yyStart, yyError);
02098: }
02099:
02100: // =========================================================================
02101:
02102: /**
02103: * Parse nonterminal xtc.lang.JavaPattern.Block.
02104: *
02105: * @param yyStart The index.
02106: * @return The result.
02107: * @throws IOException Signals an I/O error.
02108: */
02109: private Result pBlock(final int yyStart) throws IOException {
02110: JavaFactoryParserColumn yyColumn = (JavaFactoryParserColumn) column(yyStart);
02111: if (null == yyColumn.chunk1)
02112: yyColumn.chunk1 = new Chunk1();
02113: if (null == yyColumn.chunk1.fBlock)
02114: yyColumn.chunk1.fBlock = pBlock$1(yyStart);
02115: return yyColumn.chunk1.fBlock;
02116: }
02117:
02118: /** Actually parse xtc.lang.JavaPattern.Block. */
02119: private Result pBlock$1(final int yyStart) throws IOException {
02120: Result yyResult;
02121: int yyBase;
02122: Node yyValue;
02123: ParseError yyError = ParseError.DUMMY;
02124:
02125: // Alternative <Block>.
02126:
02127: yyResult = pSymbol(yyStart);
02128: yyError = yyResult.select(yyError);
02129: if (yyResult.hasValue("{")) {
02130:
02131: yyResult = pBlock$$Star1(yyResult.index);
02132: yyError = yyResult.select(yyError);
02133: if (yyResult.hasValue()) {
02134: final Pair<Node> v$g$1 = yyResult.semanticValue();
02135:
02136: yyBase = yyResult.index;
02137: yyResult = pSymbol(yyBase);
02138: yyError = yyResult.select(yyError);
02139: if (yyResult.hasValue("}")) {
02140:
02141: yyValue = GNode.createFromPair("Block", v$g$1);
02142: yyValue.setLocation(location(yyStart));
02143:
02144: return yyResult.createValue(yyValue, yyError);
02145: } else {
02146: yyError = yyError.select("\"}\" expected", yyBase);
02147: }
02148: }
02149: }
02150:
02151: // Done.
02152: yyError = yyError.select("block expected", yyStart);
02153: return yyError;
02154: }
02155:
02156: // =========================================================================
02157:
02158: /**
02159: * Parse synthetic nonterminal xtc.lang.JavaFactory.Block$$Star1.
02160: *
02161: * @param yyStart The index.
02162: * @return The result.
02163: * @throws IOException Signals an I/O error.
02164: */
02165: private Result pBlock$$Star1(final int yyStart) throws IOException {
02166: JavaFactoryParserColumn yyColumn = (JavaFactoryParserColumn) column(yyStart);
02167: if (null == yyColumn.chunk1)
02168: yyColumn.chunk1 = new Chunk1();
02169: if (null == yyColumn.chunk1.fBlock$$Star1)
02170: yyColumn.chunk1.fBlock$$Star1 = pBlock$$Star1$1(yyStart);
02171: return yyColumn.chunk1.fBlock$$Star1;
02172: }
02173:
02174: /** Actually parse xtc.lang.JavaFactory.Block$$Star1. */
02175: private Result pBlock$$Star1$1(final int yyStart)
02176: throws IOException {
02177: Result yyResult;
02178: Pair<Node> yyValue;
02179: ParseError yyError = ParseError.DUMMY;
02180:
02181: // Alternative 1.
02182:
02183: yyResult = pDeclarationOrStatement(yyStart);
02184: yyError = yyResult.select(yyError);
02185: if (yyResult.hasValue()) {
02186: final Node v$el$1 = yyResult.semanticValue();
02187:
02188: yyResult = pBlock$$Star1(yyResult.index);
02189: yyError = yyResult.select(yyError);
02190: if (yyResult.hasValue()) {
02191: final Pair<Node> v$2 = yyResult.semanticValue();
02192:
02193: yyValue = new Pair<Node>(v$el$1, v$2);
02194:
02195: return yyResult.createValue(yyValue, yyError);
02196: }
02197: }
02198:
02199: // Alternative 2.
02200:
02201: yyValue = Pair.empty();
02202:
02203: return new SemanticValue(yyValue, yyStart, yyError);
02204: }
02205:
02206: // =========================================================================
02207:
02208: /**
02209: * Parse nonterminal xtc.lang.JavaPattern.DeclarationOrStatement.
02210: *
02211: * @param yyStart The index.
02212: * @return The result.
02213: * @throws IOException Signals an I/O error.
02214: */
02215: private Result pDeclarationOrStatement(final int yyStart)
02216: throws IOException {
02217:
02218: Result yyResult;
02219: Node yyValue;
02220: ParseError yyError = ParseError.DUMMY;
02221:
02222: // Alternative <Declaration>.
02223:
02224: yyResult = pInBlockDeclaration(yyStart);
02225: yyError = yyResult.select(yyError);
02226: if (yyResult.hasValue()) {
02227: yyValue = yyResult.semanticValue();
02228:
02229: return yyResult.createValue(yyValue, yyError);
02230: }
02231:
02232: // Alternative <Statement>.
02233:
02234: yyResult = pStatement(yyStart);
02235: yyError = yyResult.select(yyError);
02236: if (yyResult.hasValue()) {
02237: yyValue = yyResult.semanticValue();
02238:
02239: return yyResult.createValue(yyValue, yyError);
02240: }
02241:
02242: // Alternative <ListPattern>.
02243:
02244: yyResult = pNodeListVariable(yyStart);
02245: yyError = yyResult.select(yyError);
02246: if (yyResult.hasValue()) {
02247: yyValue = yyResult.semanticValue();
02248:
02249: return yyResult.createValue(yyValue, yyError);
02250: }
02251:
02252: // Alternative <Pattern>.
02253:
02254: yyResult = pJavaPattern$NodeVariable(yyStart);
02255: yyError = yyResult.select(yyError);
02256: if (yyResult.hasValue()) {
02257: yyValue = yyResult.semanticValue();
02258:
02259: return yyResult.createValue(yyValue, yyError);
02260: }
02261:
02262: // Done.
02263: return yyError;
02264: }
02265:
02266: // =========================================================================
02267:
02268: /**
02269: * Parse nonterminal xtc.lang.JavaPattern.InBlockDeclaration.
02270: *
02271: * @param yyStart The index.
02272: * @return The result.
02273: * @throws IOException Signals an I/O error.
02274: */
02275: private Result pInBlockDeclaration(final int yyStart)
02276: throws IOException {
02277: Result yyResult;
02278: int yyBase;
02279: int yyOption1;
02280: Node yyOpValue1;
02281: Node yyValue;
02282: ParseError yyError = ParseError.DUMMY;
02283:
02284: // Alternative <Variable>.
02285:
02286: yyResult = pVariableDeclaration(yyStart);
02287: yyError = yyResult.select(yyError);
02288: if (yyResult.hasValue()) {
02289: yyValue = yyResult.semanticValue();
02290:
02291: return yyResult.createValue(yyValue, yyError);
02292: }
02293:
02294: // Alternative 2.
02295:
02296: yyResult = pModifiers(yyStart);
02297: yyError = yyResult.select(yyError);
02298: if (yyResult.hasValue()) {
02299: final Node v$g$1 = yyResult.semanticValue();
02300:
02301: final int yyChoice1 = yyResult.index;
02302:
02303: // Nested alternative 1.
02304:
02305: yyBase = yyChoice1;
02306: yyResult = pWord(yyBase);
02307: yyError = yyResult.select(yyError);
02308: if (yyResult.hasValue("class")) {
02309:
02310: yyResult = pName(yyResult.index);
02311: yyError = yyResult.select(yyError);
02312: if (yyResult.hasValue()) {
02313: final Object v$g$2 = yyResult.semanticValue();
02314:
02315: yyOption1 = yyResult.index;
02316: yyOpValue1 = null;
02317:
02318: yyResult = pTypeParameters(yyOption1);
02319: yyError = yyResult.select(yyError);
02320: if (yyResult.hasValue()) {
02321: final Node v$el$1 = yyResult.semanticValue();
02322:
02323: yyOption1 = yyResult.index;
02324: yyOpValue1 = v$el$1;
02325: }
02326: { // Start scope for v$g$3.
02327: final Node v$g$3 = yyOpValue1;
02328:
02329: yyOpValue1 = null;
02330:
02331: yyResult = pExtension(yyOption1);
02332: yyError = yyResult.select(yyError);
02333: if (yyResult.hasValue()) {
02334: final Node v$el$2 = yyResult
02335: .semanticValue();
02336:
02337: yyOption1 = yyResult.index;
02338: yyOpValue1 = v$el$2;
02339: }
02340: { // Start scope for v$g$4.
02341: final Node v$g$4 = yyOpValue1;
02342:
02343: yyOpValue1 = null;
02344:
02345: yyResult = pImplementation(yyOption1);
02346: yyError = yyResult.select(yyError);
02347: if (yyResult.hasValue()) {
02348: final Node v$el$3 = yyResult
02349: .semanticValue();
02350:
02351: yyOption1 = yyResult.index;
02352: yyOpValue1 = v$el$3;
02353: }
02354: { // Start scope for v$g$5.
02355: final Node v$g$5 = yyOpValue1;
02356:
02357: yyResult = pClassBody(yyOption1);
02358: yyError = yyResult.select(yyError);
02359: if (yyResult.hasValue()) {
02360: final Node v$g$6 = yyResult
02361: .semanticValue();
02362:
02363: yyValue = GNode.create(
02364: "ClassDeclaration", v$g$1,
02365: v$g$2, v$g$3, v$g$4, v$g$5,
02366: v$g$6);
02367: yyValue
02368: .setLocation(location(yyStart));
02369:
02370: return yyResult.createValue(
02371: yyValue, yyError);
02372: }
02373: } // End scope for v$g$5.
02374: } // End scope for v$g$4.
02375: } // End scope for v$g$3.
02376: }
02377: } else {
02378: yyError = yyError.select("\"class\" expected", yyBase);
02379: }
02380:
02381: // Nested alternative 2.
02382:
02383: yyBase = yyChoice1;
02384: yyResult = pWord(yyBase);
02385: yyError = yyResult.select(yyError);
02386: if (yyResult.hasValue("interface")) {
02387:
02388: yyResult = pName(yyResult.index);
02389: yyError = yyResult.select(yyError);
02390: if (yyResult.hasValue()) {
02391: final Object v$g$2 = yyResult.semanticValue();
02392:
02393: yyOption1 = yyResult.index;
02394: yyOpValue1 = null;
02395:
02396: yyResult = pTypeParameters(yyOption1);
02397: yyError = yyResult.select(yyError);
02398: if (yyResult.hasValue()) {
02399: final Node v$el$1 = yyResult.semanticValue();
02400:
02401: yyOption1 = yyResult.index;
02402: yyOpValue1 = v$el$1;
02403: }
02404: { // Start scope for v$g$3.
02405: final Node v$g$3 = yyOpValue1;
02406:
02407: yyOpValue1 = null;
02408:
02409: yyResult = pExtension(yyOption1);
02410: yyError = yyResult.select(yyError);
02411: if (yyResult.hasValue()) {
02412: final Node v$el$2 = yyResult
02413: .semanticValue();
02414:
02415: yyOption1 = yyResult.index;
02416: yyOpValue1 = v$el$2;
02417: }
02418: { // Start scope for v$g$4.
02419: final Node v$g$4 = yyOpValue1;
02420:
02421: yyResult = pClassBody(yyOption1);
02422: yyError = yyResult.select(yyError);
02423: if (yyResult.hasValue()) {
02424: final Node v$g$5 = yyResult
02425: .semanticValue();
02426:
02427: yyValue = GNode.create(
02428: "InterfaceDeclaration", v$g$1,
02429: v$g$2, v$g$3, v$g$4, v$g$5);
02430: yyValue.setLocation(location(yyStart));
02431:
02432: return yyResult.createValue(yyValue,
02433: yyError);
02434: }
02435: } // End scope for v$g$4.
02436: } // End scope for v$g$3.
02437: }
02438: } else {
02439: yyError = yyError.select("\"interface\" expected",
02440: yyBase);
02441: }
02442: }
02443:
02444: // Done.
02445: return yyError;
02446: }
02447:
02448: // =========================================================================
02449:
02450: /**
02451: * Parse nonterminal xtc.lang.JavaPattern.VariableDeclaration.
02452: *
02453: * @param yyStart The index.
02454: * @return The result.
02455: * @throws IOException Signals an I/O error.
02456: */
02457: private Result pVariableDeclaration(final int yyStart)
02458: throws IOException {
02459: Result yyResult;
02460: int yyBase;
02461: Node yyValue;
02462: ParseError yyError = ParseError.DUMMY;
02463:
02464: // Alternative <Declaration>.
02465:
02466: yyResult = pVariableModifiers(yyStart);
02467: yyError = yyResult.select(yyError);
02468: if (yyResult.hasValue()) {
02469: final Node v$g$1 = yyResult.semanticValue();
02470:
02471: yyResult = pType(yyResult.index);
02472: yyError = yyResult.select(yyError);
02473: if (yyResult.hasValue()) {
02474: final Node v$g$2 = yyResult.semanticValue();
02475:
02476: yyResult = pDeclarators(yyResult.index);
02477: yyError = yyResult.select(yyError);
02478: if (yyResult.hasValue()) {
02479: final Node v$g$3 = yyResult.semanticValue();
02480:
02481: yyBase = yyResult.index;
02482: yyResult = pSymbol(yyBase);
02483: yyError = yyResult.select(yyError);
02484: if (yyResult.hasValue(";")) {
02485:
02486: yyValue = GNode.create("FieldDeclaration",
02487: v$g$1, v$g$2, v$g$3);
02488: yyValue.setLocation(location(yyStart));
02489:
02490: return yyResult.createValue(yyValue, yyError);
02491: } else {
02492: yyError = yyError.select("\";\" expected",
02493: yyBase);
02494: }
02495: }
02496: }
02497: }
02498:
02499: // Done.
02500: return yyError;
02501: }
02502:
02503: // =========================================================================
02504:
02505: /**
02506: * Parse nonterminal xtc.lang.JavaPattern.Statement.
02507: *
02508: * @param yyStart The index.
02509: * @return The result.
02510: * @throws IOException Signals an I/O error.
02511: */
02512: private Result pStatement(final int yyStart) throws IOException {
02513: Result yyResult;
02514: int yyBase;
02515: int yyRepetition1;
02516: boolean yyRepeated1;
02517: Pair<Node> yyRepValue1;
02518: int yyOption1;
02519: Object yyOpValue1;
02520: Node yyValue;
02521: ParseError yyError = ParseError.DUMMY;
02522:
02523: // Alternative <Block>.
02524:
02525: yyResult = pBlock(yyStart);
02526: yyError = yyResult.select(yyError);
02527: if (yyResult.hasValue()) {
02528: yyValue = yyResult.semanticValue();
02529:
02530: return yyResult.createValue(yyValue, yyError);
02531: }
02532:
02533: // Alternative 2.
02534:
02535: yyResult = pWord(yyStart);
02536: yyError = yyResult.select(yyError);
02537: if (yyResult.hasValue("if")) {
02538:
02539: yyResult = pParExpression(yyResult.index);
02540: yyError = yyResult.select(yyError);
02541: if (yyResult.hasValue()) {
02542: final Node v$g$1 = yyResult.semanticValue();
02543:
02544: yyResult = pStatement(yyResult.index);
02545: yyError = yyResult.select(yyError);
02546: if (yyResult.hasValue()) {
02547: final Node v$g$2 = yyResult.semanticValue();
02548:
02549: final int yyChoice1 = yyResult.index;
02550:
02551: // Nested alternative 1.
02552:
02553: yyBase = yyChoice1;
02554: yyResult = pWord(yyBase);
02555: yyError = yyResult.select(yyError);
02556: if (yyResult.hasValue("else")) {
02557:
02558: yyResult = pStatement(yyResult.index);
02559: yyError = yyResult.select(yyError);
02560: if (yyResult.hasValue()) {
02561: final Node v$g$3 = yyResult.semanticValue();
02562:
02563: yyValue = GNode.create(
02564: "ConditionalStatement", v$g$1,
02565: v$g$2, v$g$3);
02566: yyValue.setLocation(location(yyStart));
02567:
02568: return yyResult.createValue(yyValue,
02569: yyError);
02570: }
02571: } else {
02572: yyError = yyError.select("\"else\" expected",
02573: yyBase);
02574: }
02575:
02576: // Nested alternative 2.
02577:
02578: yyValue = GNode.create("ConditionalStatement",
02579: v$g$1, v$g$2, null);
02580: yyValue.setLocation(location(yyStart));
02581:
02582: return new SemanticValue(yyValue, yyChoice1,
02583: yyError);
02584: }
02585: }
02586: }
02587:
02588: // Alternative 3.
02589:
02590: yyResult = pWord(yyStart);
02591: yyError = yyResult.select(yyError);
02592: if (yyResult.hasValue("for")) {
02593:
02594: yyBase = yyResult.index;
02595: yyResult = pSymbol(yyBase);
02596: yyError = yyResult.select(yyError);
02597: if (yyResult.hasValue("(")) {
02598:
02599: yyResult = pForControl(yyResult.index);
02600: yyError = yyResult.select(yyError);
02601: if (yyResult.hasValue()) {
02602: final Node v$g$1 = yyResult.semanticValue();
02603:
02604: yyBase = yyResult.index;
02605: yyResult = pSymbol(yyBase);
02606: yyError = yyResult.select(yyError);
02607: if (yyResult.hasValue(")")) {
02608:
02609: yyResult = pStatement(yyResult.index);
02610: yyError = yyResult.select(yyError);
02611: if (yyResult.hasValue()) {
02612: final Node v$g$2 = yyResult.semanticValue();
02613:
02614: yyValue = GNode.create("ForStatement",
02615: v$g$1, v$g$2);
02616: yyValue.setLocation(location(yyStart));
02617:
02618: return yyResult.createValue(yyValue,
02619: yyError);
02620: }
02621: } else {
02622: yyError = yyError.select("\")\" expected",
02623: yyBase);
02624: }
02625: }
02626: } else {
02627: yyError = yyError.select("\"(\" expected", yyBase);
02628: }
02629: }
02630:
02631: // Alternative 4.
02632:
02633: yyResult = pWord(yyStart);
02634: yyError = yyResult.select(yyError);
02635: if (yyResult.hasValue("while")) {
02636:
02637: yyResult = pParExpression(yyResult.index);
02638: yyError = yyResult.select(yyError);
02639: if (yyResult.hasValue()) {
02640: final Node v$g$1 = yyResult.semanticValue();
02641:
02642: yyResult = pStatement(yyResult.index);
02643: yyError = yyResult.select(yyError);
02644: if (yyResult.hasValue()) {
02645: final Node v$g$2 = yyResult.semanticValue();
02646:
02647: yyValue = GNode.create("WhileStatement", v$g$1,
02648: v$g$2);
02649: yyValue.setLocation(location(yyStart));
02650:
02651: return yyResult.createValue(yyValue, yyError);
02652: }
02653: }
02654: }
02655:
02656: // Alternative 5.
02657:
02658: yyResult = pWord(yyStart);
02659: yyError = yyResult.select(yyError);
02660: if (yyResult.hasValue("do")) {
02661:
02662: yyResult = pStatement(yyResult.index);
02663: yyError = yyResult.select(yyError);
02664: if (yyResult.hasValue()) {
02665: final Node v$g$1 = yyResult.semanticValue();
02666:
02667: yyBase = yyResult.index;
02668: yyResult = pWord(yyBase);
02669: yyError = yyResult.select(yyError);
02670: if (yyResult.hasValue("while")) {
02671:
02672: yyResult = pParExpression(yyResult.index);
02673: yyError = yyResult.select(yyError);
02674: if (yyResult.hasValue()) {
02675: final Node v$g$2 = yyResult.semanticValue();
02676:
02677: yyBase = yyResult.index;
02678: yyResult = pSymbol(yyBase);
02679: yyError = yyResult.select(yyError);
02680: if (yyResult.hasValue(";")) {
02681:
02682: yyValue = GNode.create("DoWhileStatement",
02683: v$g$1, v$g$2);
02684: yyValue.setLocation(location(yyStart));
02685:
02686: return yyResult.createValue(yyValue,
02687: yyError);
02688: } else {
02689: yyError = yyError.select("\";\" expected",
02690: yyBase);
02691: }
02692: }
02693: } else {
02694: yyError = yyError.select("\"while\" expected",
02695: yyBase);
02696: }
02697: }
02698: }
02699:
02700: // Alternative 6.
02701:
02702: yyResult = pWord(yyStart);
02703: yyError = yyResult.select(yyError);
02704: if (yyResult.hasValue("try")) {
02705:
02706: yyResult = pBlock(yyResult.index);
02707: yyError = yyResult.select(yyError);
02708: if (yyResult.hasValue()) {
02709: final Node v$g$1 = yyResult.semanticValue();
02710:
02711: final int yyChoice1 = yyResult.index;
02712:
02713: // Nested alternative 1.
02714:
02715: yyRepetition1 = yyChoice1;
02716: yyRepValue1 = Pair.empty();
02717: while (true) {
02718:
02719: yyResult = pCatchClause(yyRepetition1);
02720: yyError = yyResult.select(yyError);
02721: if (yyResult.hasValue()) {
02722: final Node v$el$1 = yyResult.semanticValue();
02723:
02724: yyRepetition1 = yyResult.index;
02725: yyRepValue1 = new Pair<Node>(v$el$1,
02726: yyRepValue1);
02727: continue;
02728: }
02729: break;
02730: }
02731: { // Start scope for v$g$2.
02732: final Pair<Node> v$g$2 = yyRepValue1.reverse();
02733:
02734: yyBase = yyRepetition1;
02735: yyResult = pWord(yyBase);
02736: yyError = yyResult.select(yyError);
02737: if (yyResult.hasValue("finally")) {
02738:
02739: yyResult = pBlock(yyResult.index);
02740: yyError = yyResult.select(yyError);
02741: if (yyResult.hasValue()) {
02742: final Node v$g$3 = yyResult.semanticValue();
02743:
02744: yyValue = GNode.create(
02745: "TryCatchFinallyStatement",
02746: v$g$2.size() + 2).add(v$g$1)
02747: .addAll(v$g$2).add(v$g$3);
02748: yyValue.setLocation(location(yyStart));
02749:
02750: return yyResult.createValue(yyValue,
02751: yyError);
02752: }
02753: } else {
02754: yyError = yyError.select(
02755: "\"finally\" expected", yyBase);
02756: }
02757: } // End scope for v$g$2.
02758:
02759: // Nested alternative 2.
02760:
02761: yyRepetition1 = yyChoice1;
02762: yyRepeated1 = false;
02763: yyRepValue1 = Pair.empty();
02764: while (true) {
02765:
02766: yyResult = pCatchClause(yyRepetition1);
02767: yyError = yyResult.select(yyError);
02768: if (yyResult.hasValue()) {
02769: final Node v$el$2 = yyResult.semanticValue();
02770:
02771: yyRepetition1 = yyResult.index;
02772: yyRepeated1 = true;
02773: yyRepValue1 = new Pair<Node>(v$el$2,
02774: yyRepValue1);
02775: continue;
02776: }
02777: break;
02778: }
02779:
02780: if (yyRepeated1) {
02781: final Pair<Node> v$g$4 = yyRepValue1.reverse();
02782:
02783: yyValue = GNode.create("TryCatchFinallyStatement",
02784: v$g$4.size() + 2).add(v$g$1).addAll(v$g$4)
02785: .add(null);
02786: yyValue.setLocation(location(yyStart));
02787:
02788: return new SemanticValue(yyValue, yyRepetition1,
02789: yyError);
02790: }
02791: }
02792: }
02793:
02794: // Alternative 7.
02795:
02796: yyResult = pWord(yyStart);
02797: yyError = yyResult.select(yyError);
02798: if (yyResult.hasValue("switch")) {
02799:
02800: yyResult = pParExpression(yyResult.index);
02801: yyError = yyResult.select(yyError);
02802: if (yyResult.hasValue()) {
02803: final Node v$g$1 = yyResult.semanticValue();
02804:
02805: yyBase = yyResult.index;
02806: yyResult = pSymbol(yyBase);
02807: yyError = yyResult.select(yyError);
02808: if (yyResult.hasValue("{")) {
02809:
02810: yyRepetition1 = yyResult.index;
02811: yyRepValue1 = Pair.empty();
02812: while (true) {
02813:
02814: yyResult = pSwitchClause(yyRepetition1);
02815: yyError = yyResult.select(yyError);
02816: if (yyResult.hasValue()) {
02817: final Node v$el$1 = yyResult
02818: .semanticValue();
02819:
02820: yyRepetition1 = yyResult.index;
02821: yyRepValue1 = new Pair<Node>(v$el$1,
02822: yyRepValue1);
02823: continue;
02824: }
02825: break;
02826: }
02827: { // Start scope for v$g$2.
02828: final Pair<Node> v$g$2 = yyRepValue1.reverse();
02829:
02830: yyBase = yyRepetition1;
02831: yyResult = pSymbol(yyBase);
02832: yyError = yyResult.select(yyError);
02833: if (yyResult.hasValue("}")) {
02834:
02835: yyValue = GNode.createFromPair(
02836: "SwitchStatement", v$g$1, v$g$2);
02837: yyValue.setLocation(location(yyStart));
02838:
02839: return yyResult.createValue(yyValue,
02840: yyError);
02841: } else {
02842: yyError = yyError.select("\"}\" expected",
02843: yyBase);
02844: }
02845: } // End scope for v$g$2.
02846: } else {
02847: yyError = yyError.select("\"{\" expected", yyBase);
02848: }
02849: }
02850: }
02851:
02852: // Alternative 8.
02853:
02854: yyResult = pWord(yyStart);
02855: yyError = yyResult.select(yyError);
02856: if (yyResult.hasValue("synchronized")) {
02857:
02858: yyResult = pParExpression(yyResult.index);
02859: yyError = yyResult.select(yyError);
02860: if (yyResult.hasValue()) {
02861: final Node v$g$1 = yyResult.semanticValue();
02862:
02863: yyResult = pBlock(yyResult.index);
02864: yyError = yyResult.select(yyError);
02865: if (yyResult.hasValue()) {
02866: final Node v$g$2 = yyResult.semanticValue();
02867:
02868: yyValue = GNode.create("SynchronizedStatement",
02869: v$g$1, v$g$2);
02870: yyValue.setLocation(location(yyStart));
02871:
02872: return yyResult.createValue(yyValue, yyError);
02873: }
02874: }
02875: }
02876:
02877: // Alternative 9.
02878:
02879: yyResult = pWord(yyStart);
02880: yyError = yyResult.select(yyError);
02881: if (yyResult.hasValue("return")) {
02882:
02883: yyOption1 = yyResult.index;
02884: yyOpValue1 = null;
02885:
02886: yyResult = pExpression(yyOption1);
02887: yyError = yyResult.select(yyError);
02888: if (yyResult.hasValue()) {
02889: final Node v$el$1 = yyResult.semanticValue();
02890:
02891: yyOption1 = yyResult.index;
02892: yyOpValue1 = v$el$1;
02893: }
02894: { // Start scope for v$g$1.
02895: final Node v$g$1 = cast(yyOpValue1);
02896:
02897: yyBase = yyOption1;
02898: yyResult = pSymbol(yyBase);
02899: yyError = yyResult.select(yyError);
02900: if (yyResult.hasValue(";")) {
02901:
02902: yyValue = GNode.create("ReturnStatement", v$g$1);
02903: yyValue.setLocation(location(yyStart));
02904:
02905: return yyResult.createValue(yyValue, yyError);
02906: } else {
02907: yyError = yyError.select("\";\" expected", yyBase);
02908: }
02909: } // End scope for v$g$1.
02910: }
02911:
02912: // Alternative 10.
02913:
02914: yyResult = pWord(yyStart);
02915: yyError = yyResult.select(yyError);
02916: if (yyResult.hasValue("throw")) {
02917:
02918: yyResult = pExpression(yyResult.index);
02919: yyError = yyResult.select(yyError);
02920: if (yyResult.hasValue()) {
02921: final Node v$g$1 = yyResult.semanticValue();
02922:
02923: yyBase = yyResult.index;
02924: yyResult = pSymbol(yyBase);
02925: yyError = yyResult.select(yyError);
02926: if (yyResult.hasValue(";")) {
02927:
02928: yyValue = GNode.create("ThrowStatement", v$g$1);
02929: yyValue.setLocation(location(yyStart));
02930:
02931: return yyResult.createValue(yyValue, yyError);
02932: } else {
02933: yyError = yyError.select("\";\" expected", yyBase);
02934: }
02935: }
02936: }
02937:
02938: // Alternative 11.
02939:
02940: yyResult = pWord(yyStart);
02941: yyError = yyResult.select(yyError);
02942: if (yyResult.hasValue("break")) {
02943:
02944: yyOption1 = yyResult.index;
02945: yyOpValue1 = null;
02946:
02947: yyResult = pIdentifier(yyOption1);
02948: yyError = yyResult.select(yyError);
02949: if (yyResult.hasValue()) {
02950: final String v$el$1 = yyResult.semanticValue();
02951:
02952: yyOption1 = yyResult.index;
02953: yyOpValue1 = v$el$1;
02954: }
02955: { // Start scope for v$g$1.
02956: final String v$g$1 = cast(yyOpValue1);
02957:
02958: yyBase = yyOption1;
02959: yyResult = pSymbol(yyBase);
02960: yyError = yyResult.select(yyError);
02961: if (yyResult.hasValue(";")) {
02962:
02963: yyValue = GNode.create("BreakStatement", v$g$1);
02964: yyValue.setLocation(location(yyStart));
02965:
02966: return yyResult.createValue(yyValue, yyError);
02967: } else {
02968: yyError = yyError.select("\";\" expected", yyBase);
02969: }
02970: } // End scope for v$g$1.
02971: }
02972:
02973: // Alternative 12.
02974:
02975: yyResult = pWord(yyStart);
02976: yyError = yyResult.select(yyError);
02977: if (yyResult.hasValue("continue")) {
02978:
02979: yyOption1 = yyResult.index;
02980: yyOpValue1 = null;
02981:
02982: yyResult = pIdentifier(yyOption1);
02983: yyError = yyResult.select(yyError);
02984: if (yyResult.hasValue()) {
02985: final String v$el$1 = yyResult.semanticValue();
02986:
02987: yyOption1 = yyResult.index;
02988: yyOpValue1 = v$el$1;
02989: }
02990: { // Start scope for v$g$1.
02991: final String v$g$1 = cast(yyOpValue1);
02992:
02993: yyBase = yyOption1;
02994: yyResult = pSymbol(yyBase);
02995: yyError = yyResult.select(yyError);
02996: if (yyResult.hasValue(";")) {
02997:
02998: yyValue = GNode.create("ContinueStatement", v$g$1);
02999: yyValue.setLocation(location(yyStart));
03000:
03001: return yyResult.createValue(yyValue, yyError);
03002: } else {
03003: yyError = yyError.select("\";\" expected", yyBase);
03004: }
03005: } // End scope for v$g$1.
03006: }
03007:
03008: // Alternative 13.
03009:
03010: yyResult = pIdentifier(yyStart);
03011: yyError = yyResult.select(yyError);
03012: if (yyResult.hasValue()) {
03013: final String v$g$1 = yyResult.semanticValue();
03014:
03015: yyBase = yyResult.index;
03016: yyResult = pSymbol(yyBase);
03017: yyError = yyResult.select(yyError);
03018: if (yyResult.hasValue(":")) {
03019:
03020: yyResult = pStatement(yyResult.index);
03021: yyError = yyResult.select(yyError);
03022: if (yyResult.hasValue()) {
03023: final Node v$g$2 = yyResult.semanticValue();
03024:
03025: yyValue = GNode.create("LabeledStatement", v$g$1,
03026: v$g$2);
03027: yyValue.setLocation(location(yyStart));
03028:
03029: return yyResult.createValue(yyValue, yyError);
03030: }
03031: } else {
03032: yyError = yyError.select("\":\" expected", yyBase);
03033: }
03034: }
03035:
03036: // Alternative 14.
03037:
03038: yyResult = pExpression(yyStart);
03039: yyError = yyResult.select(yyError);
03040: if (yyResult.hasValue()) {
03041: final Node v$g$1 = yyResult.semanticValue();
03042:
03043: yyBase = yyResult.index;
03044: yyResult = pSymbol(yyBase);
03045: yyError = yyResult.select(yyError);
03046: if (yyResult.hasValue(";")) {
03047:
03048: yyValue = GNode.create("ExpressionStatement", v$g$1);
03049: yyValue.setLocation(location(yyStart));
03050:
03051: return yyResult.createValue(yyValue, yyError);
03052: } else {
03053: yyError = yyError.select("\";\" expected", yyBase);
03054: }
03055: }
03056:
03057: // Alternative 15.
03058:
03059: yyResult = pWord(yyStart);
03060: yyError = yyResult.select(yyError);
03061: if (yyResult.hasValue("assert")) {
03062:
03063: yyResult = pExpression(yyResult.index);
03064: yyError = yyResult.select(yyError);
03065: if (yyResult.hasValue()) {
03066: final Node v$g$1 = yyResult.semanticValue();
03067:
03068: yyOption1 = yyResult.index;
03069: yyOpValue1 = null;
03070:
03071: yyBase = yyOption1;
03072: yyResult = pSymbol(yyBase);
03073: yyError = yyResult.select(yyError);
03074: if (yyResult.hasValue(":")) {
03075:
03076: yyResult = pExpression(yyResult.index);
03077: yyError = yyResult.select(yyError);
03078: if (yyResult.hasValue()) {
03079: final Node v$el$1 = yyResult.semanticValue();
03080:
03081: yyOption1 = yyResult.index;
03082: yyOpValue1 = v$el$1;
03083: }
03084: } else {
03085: yyError = yyError.select("\":\" expected", yyBase);
03086: }
03087: { // Start scope for v$g$2.
03088: final Node v$g$2 = cast(yyOpValue1);
03089:
03090: yyBase = yyOption1;
03091: yyResult = pSymbol(yyBase);
03092: yyError = yyResult.select(yyError);
03093: if (yyResult.hasValue(";")) {
03094:
03095: yyValue = GNode.create("AssertStatement",
03096: v$g$1, v$g$2);
03097: yyValue.setLocation(location(yyStart));
03098:
03099: return yyResult.createValue(yyValue, yyError);
03100: } else {
03101: yyError = yyError.select("\";\" expected",
03102: yyBase);
03103: }
03104: } // End scope for v$g$2.
03105: }
03106: }
03107:
03108: // Alternative 16.
03109:
03110: yyResult = pSymbol(yyStart);
03111: yyError = yyResult.select(yyError);
03112: if (yyResult.hasValue(";")) {
03113:
03114: yyValue = GNode.create("EmptyStatement", false);
03115: yyValue.setLocation(location(yyStart));
03116:
03117: return yyResult.createValue(yyValue, yyError);
03118: }
03119:
03120: // Done.
03121: yyError = yyError.select("statement expected", yyStart);
03122: return yyError;
03123: }
03124:
03125: // =========================================================================
03126:
03127: /**
03128: * Parse nonterminal xtc.lang.JavaPattern.ForControl.
03129: *
03130: * @param yyStart The index.
03131: * @return The result.
03132: * @throws IOException Signals an I/O error.
03133: */
03134: private Result pForControl(final int yyStart) throws IOException {
03135: Result yyResult;
03136: int yyBase;
03137: int yyOption1;
03138: Node yyOpValue1;
03139: Node yyValue;
03140: ParseError yyError = ParseError.DUMMY;
03141:
03142: // Alternative 1.
03143:
03144: yyResult = pVariableModifiers(yyStart);
03145: yyError = yyResult.select(yyError);
03146: if (yyResult.hasValue()) {
03147: final Node v$g$1 = yyResult.semanticValue();
03148:
03149: yyResult = pType(yyResult.index);
03150: yyError = yyResult.select(yyError);
03151: if (yyResult.hasValue()) {
03152: final Node v$g$2 = yyResult.semanticValue();
03153:
03154: final int yyChoice1 = yyResult.index;
03155:
03156: // Nested alternative 1.
03157:
03158: yyResult = pName(yyChoice1);
03159: yyError = yyResult.select(yyError);
03160: if (yyResult.hasValue()) {
03161: final Object v$g$3 = yyResult.semanticValue();
03162:
03163: yyBase = yyResult.index;
03164: yyResult = pSymbol(yyBase);
03165: yyError = yyResult.select(yyError);
03166: if (yyResult.hasValue(":")) {
03167:
03168: yyResult = pExpression(yyResult.index);
03169: yyError = yyResult.select(yyError);
03170: if (yyResult.hasValue()) {
03171: final Node v$g$4 = yyResult.semanticValue();
03172:
03173: yyValue = GNode.create(
03174: "EnhancedForControl", v$g$1, v$g$2,
03175: v$g$3, v$g$4);
03176: yyValue.setLocation(location(yyStart));
03177:
03178: return yyResult.createValue(yyValue,
03179: yyError);
03180: }
03181: } else {
03182: yyError = yyError.select("\":\" expected",
03183: yyBase);
03184: }
03185: }
03186:
03187: // Nested alternative 2.
03188:
03189: yyResult = pDeclarators(yyChoice1);
03190: yyError = yyResult.select(yyError);
03191: if (yyResult.hasValue()) {
03192: final Node v$g$3 = yyResult.semanticValue();
03193:
03194: yyBase = yyResult.index;
03195: yyResult = pSymbol(yyBase);
03196: yyError = yyResult.select(yyError);
03197: if (yyResult.hasValue(";")) {
03198:
03199: yyOption1 = yyResult.index;
03200: yyOpValue1 = null;
03201:
03202: yyResult = pExpression(yyOption1);
03203: yyError = yyResult.select(yyError);
03204: if (yyResult.hasValue()) {
03205: final Node v$el$1 = yyResult
03206: .semanticValue();
03207:
03208: yyOption1 = yyResult.index;
03209: yyOpValue1 = v$el$1;
03210: }
03211: { // Start scope for v$g$4.
03212: final Node v$g$4 = yyOpValue1;
03213:
03214: yyBase = yyOption1;
03215: yyResult = pSymbol(yyBase);
03216: yyError = yyResult.select(yyError);
03217: if (yyResult.hasValue(";")) {
03218:
03219: yyOption1 = yyResult.index;
03220: yyOpValue1 = null;
03221:
03222: yyResult = pExpressionList(yyOption1);
03223: yyError = yyResult.select(yyError);
03224: if (yyResult.hasValue()) {
03225: final Node v$el$2 = yyResult
03226: .semanticValue();
03227:
03228: yyOption1 = yyResult.index;
03229: yyOpValue1 = v$el$2;
03230: }
03231: { // Start scope for v$g$5.
03232: final Node v$g$5 = yyOpValue1;
03233:
03234: yyValue = GNode.create(
03235: "BasicForControl", v$g$1,
03236: v$g$2, v$g$3, v$g$4, v$g$5);
03237: yyValue
03238: .setLocation(location(yyStart));
03239:
03240: return new SemanticValue(yyValue,
03241: yyOption1, yyError);
03242: } // End scope for v$g$5.
03243: } else {
03244: yyError = yyError.select(
03245: "\";\" expected", yyBase);
03246: }
03247: } // End scope for v$g$4.
03248: } else {
03249: yyError = yyError.select("\";\" expected",
03250: yyBase);
03251: }
03252: }
03253: }
03254: }
03255:
03256: // Alternative <Initialization>.
03257:
03258: yyOption1 = yyStart;
03259: yyOpValue1 = null;
03260:
03261: yyResult = pExpressionList(yyOption1);
03262: yyError = yyResult.select(yyError);
03263: if (yyResult.hasValue()) {
03264: final Node v$el$3 = yyResult.semanticValue();
03265:
03266: yyOption1 = yyResult.index;
03267: yyOpValue1 = v$el$3;
03268: }
03269: { // Start scope for v$g$8.
03270: final Node v$g$8 = yyOpValue1;
03271:
03272: yyBase = yyOption1;
03273: yyResult = pSymbol(yyBase);
03274: yyError = yyResult.select(yyError);
03275: if (yyResult.hasValue(";")) {
03276:
03277: yyOption1 = yyResult.index;
03278: yyOpValue1 = null;
03279:
03280: yyResult = pExpression(yyOption1);
03281: yyError = yyResult.select(yyError);
03282: if (yyResult.hasValue()) {
03283: final Node v$el$4 = yyResult.semanticValue();
03284:
03285: yyOption1 = yyResult.index;
03286: yyOpValue1 = v$el$4;
03287: }
03288: { // Start scope for v$g$9.
03289: final Node v$g$9 = yyOpValue1;
03290:
03291: yyBase = yyOption1;
03292: yyResult = pSymbol(yyBase);
03293: yyError = yyResult.select(yyError);
03294: if (yyResult.hasValue(";")) {
03295:
03296: yyOption1 = yyResult.index;
03297: yyOpValue1 = null;
03298:
03299: yyResult = pExpressionList(yyOption1);
03300: yyError = yyResult.select(yyError);
03301: if (yyResult.hasValue()) {
03302: final Node v$el$5 = yyResult
03303: .semanticValue();
03304:
03305: yyOption1 = yyResult.index;
03306: yyOpValue1 = v$el$5;
03307: }
03308: { // Start scope for v$g$10.
03309: final Node v$g$10 = yyOpValue1;
03310:
03311: yyValue = GNode.create("BasicForControl",
03312: null, null, v$g$8, v$g$9, v$g$10);
03313: yyValue.setLocation(location(yyStart));
03314:
03315: return new SemanticValue(yyValue,
03316: yyOption1, yyError);
03317: } // End scope for v$g$10.
03318: } else {
03319: yyError = yyError.select("\";\" expected",
03320: yyBase);
03321: }
03322: } // End scope for v$g$9.
03323: } else {
03324: yyError = yyError.select("\";\" expected", yyBase);
03325: }
03326: } // End scope for v$g$8.
03327:
03328: // Done.
03329: return yyError;
03330: }
03331:
03332: // =========================================================================
03333:
03334: /**
03335: * Parse nonterminal xtc.lang.JavaPattern.ParExpression.
03336: *
03337: * @param yyStart The index.
03338: * @return The result.
03339: * @throws IOException Signals an I/O error.
03340: */
03341: private Result pParExpression(final int yyStart) throws IOException {
03342: JavaFactoryParserColumn yyColumn = (JavaFactoryParserColumn) column(yyStart);
03343: if (null == yyColumn.chunk1)
03344: yyColumn.chunk1 = new Chunk1();
03345: if (null == yyColumn.chunk1.fParExpression)
03346: yyColumn.chunk1.fParExpression = pParExpression$1(yyStart);
03347: return yyColumn.chunk1.fParExpression;
03348: }
03349:
03350: /** Actually parse xtc.lang.JavaPattern.ParExpression. */
03351: private Result pParExpression$1(final int yyStart)
03352: throws IOException {
03353: Result yyResult;
03354: int yyBase;
03355: Node yyValue;
03356: ParseError yyError = ParseError.DUMMY;
03357:
03358: // Alternative 1.
03359:
03360: yyResult = pSymbol(yyStart);
03361: yyError = yyResult.select(yyError);
03362: if (yyResult.hasValue("(")) {
03363:
03364: yyResult = pExpression(yyResult.index);
03365: yyError = yyResult.select(yyError);
03366: if (yyResult.hasValue()) {
03367: yyValue = yyResult.semanticValue();
03368:
03369: yyBase = yyResult.index;
03370: yyResult = pSymbol(yyBase);
03371: yyError = yyResult.select(yyError);
03372: if (yyResult.hasValue(")")) {
03373:
03374: return yyResult.createValue(yyValue, yyError);
03375: } else {
03376: yyError = yyError.select("\")\" expected", yyBase);
03377: }
03378: }
03379: }
03380:
03381: // Done.
03382: yyError = yyError.select("par expression expected", yyStart);
03383: return yyError;
03384: }
03385:
03386: // =========================================================================
03387:
03388: /**
03389: * Parse nonterminal xtc.lang.JavaPattern.CatchClause.
03390: *
03391: * @param yyStart The index.
03392: * @return The result.
03393: * @throws IOException Signals an I/O error.
03394: */
03395: private Result pCatchClause(final int yyStart) throws IOException {
03396: JavaFactoryParserColumn yyColumn = (JavaFactoryParserColumn) column(yyStart);
03397: if (null == yyColumn.chunk2)
03398: yyColumn.chunk2 = new Chunk2();
03399: if (null == yyColumn.chunk2.fCatchClause)
03400: yyColumn.chunk2.fCatchClause = pCatchClause$1(yyStart);
03401: return yyColumn.chunk2.fCatchClause;
03402: }
03403:
03404: /** Actually parse xtc.lang.JavaPattern.CatchClause. */
03405: private Result pCatchClause$1(final int yyStart) throws IOException {
03406: Result yyResult;
03407: int yyBase;
03408: Node yyValue;
03409: ParseError yyError = ParseError.DUMMY;
03410:
03411: // Alternative 1.
03412:
03413: yyResult = pWord(yyStart);
03414: yyError = yyResult.select(yyError);
03415: if (yyResult.hasValue("catch")) {
03416:
03417: yyBase = yyResult.index;
03418: yyResult = pSymbol(yyBase);
03419: yyError = yyResult.select(yyError);
03420: if (yyResult.hasValue("(")) {
03421:
03422: yyResult = pFormalParameter(yyResult.index);
03423: yyError = yyResult.select(yyError);
03424: if (yyResult.hasValue()) {
03425: final Node v$g$1 = yyResult.semanticValue();
03426:
03427: yyBase = yyResult.index;
03428: yyResult = pSymbol(yyBase);
03429: yyError = yyResult.select(yyError);
03430: if (yyResult.hasValue(")")) {
03431:
03432: yyResult = pBlock(yyResult.index);
03433: yyError = yyResult.select(yyError);
03434: if (yyResult.hasValue()) {
03435: final Node v$g$2 = yyResult.semanticValue();
03436:
03437: yyValue = GNode.create("CatchClause",
03438: v$g$1, v$g$2);
03439: yyValue.setLocation(location(yyStart));
03440:
03441: return yyResult.createValue(yyValue,
03442: yyError);
03443: }
03444: } else {
03445: yyError = yyError.select("\")\" expected",
03446: yyBase);
03447: }
03448: }
03449: } else {
03450: yyError = yyError.select("\"(\" expected", yyBase);
03451: }
03452: }
03453:
03454: // Done.
03455: yyError = yyError.select("catch clause expected", yyStart);
03456: return yyError;
03457: }
03458:
03459: // =========================================================================
03460:
03461: /**
03462: * Parse nonterminal xtc.lang.JavaPattern.SwitchClause.
03463: *
03464: * @param yyStart The index.
03465: * @return The result.
03466: * @throws IOException Signals an I/O error.
03467: */
03468: private Result pSwitchClause(final int yyStart) throws IOException {
03469: Result yyResult;
03470: int yyBase;
03471: int yyRepetition1;
03472: Pair<Node> yyRepValue1;
03473: Node yyValue;
03474: ParseError yyError = ParseError.DUMMY;
03475:
03476: // Alternative 1.
03477:
03478: yyResult = pWord(yyStart);
03479: yyError = yyResult.select(yyError);
03480: if (yyResult.hasValue("case")) {
03481:
03482: yyResult = pExpression(yyResult.index);
03483: yyError = yyResult.select(yyError);
03484: if (yyResult.hasValue()) {
03485: final Node v$g$1 = yyResult.semanticValue();
03486:
03487: yyBase = yyResult.index;
03488: yyResult = pSymbol(yyBase);
03489: yyError = yyResult.select(yyError);
03490: if (yyResult.hasValue(":")) {
03491:
03492: yyRepetition1 = yyResult.index;
03493: yyRepValue1 = Pair.empty();
03494: while (true) {
03495:
03496: yyResult = pDeclarationOrStatement(yyRepetition1);
03497: yyError = yyResult.select(yyError);
03498: if (yyResult.hasValue()) {
03499: final Node v$el$1 = yyResult
03500: .semanticValue();
03501:
03502: yyRepetition1 = yyResult.index;
03503: yyRepValue1 = new Pair<Node>(v$el$1,
03504: yyRepValue1);
03505: continue;
03506: }
03507: break;
03508: }
03509: { // Start scope for v$g$2.
03510: final Pair<Node> v$g$2 = yyRepValue1.reverse();
03511:
03512: yyValue = GNode.createFromPair("CaseClause",
03513: v$g$1, v$g$2);
03514: yyValue.setLocation(location(yyStart));
03515:
03516: return new SemanticValue(yyValue,
03517: yyRepetition1, yyError);
03518: } // End scope for v$g$2.
03519: } else {
03520: yyError = yyError.select("\":\" expected", yyBase);
03521: }
03522: }
03523: }
03524:
03525: // Alternative 2.
03526:
03527: yyResult = pWord(yyStart);
03528: yyError = yyResult.select(yyError);
03529: if (yyResult.hasValue("default")) {
03530:
03531: yyBase = yyResult.index;
03532: yyResult = pSymbol(yyBase);
03533: yyError = yyResult.select(yyError);
03534: if (yyResult.hasValue(":")) {
03535:
03536: yyRepetition1 = yyResult.index;
03537: yyRepValue1 = Pair.empty();
03538: while (true) {
03539:
03540: yyResult = pDeclarationOrStatement(yyRepetition1);
03541: yyError = yyResult.select(yyError);
03542: if (yyResult.hasValue()) {
03543: final Node v$el$1 = yyResult.semanticValue();
03544:
03545: yyRepetition1 = yyResult.index;
03546: yyRepValue1 = new Pair<Node>(v$el$1,
03547: yyRepValue1);
03548: continue;
03549: }
03550: break;
03551: }
03552: { // Start scope for v$g$1.
03553: final Pair<Node> v$g$1 = yyRepValue1.reverse();
03554:
03555: yyValue = GNode.createFromPair("DefaultClause",
03556: v$g$1);
03557: yyValue.setLocation(location(yyStart));
03558:
03559: return new SemanticValue(yyValue, yyRepetition1,
03560: yyError);
03561: } // End scope for v$g$1.
03562: } else {
03563: yyError = yyError.select("\":\" expected", yyBase);
03564: }
03565: }
03566:
03567: // Done.
03568: yyError = yyError.select("switch clause expected", yyStart);
03569: return yyError;
03570: }
03571:
03572: // =========================================================================
03573:
03574: /**
03575: * Parse nonterminal xtc.lang.JavaPattern.ExpressionList.
03576: *
03577: * @param yyStart The index.
03578: * @return The result.
03579: * @throws IOException Signals an I/O error.
03580: */
03581: private Result pExpressionList(final int yyStart)
03582: throws IOException {
03583: Result yyResult;
03584: int yyBase;
03585: int yyRepetition1;
03586: Pair<Node> yyRepValue1;
03587: Node yyValue;
03588: ParseError yyError = ParseError.DUMMY;
03589:
03590: // Alternative 1.
03591:
03592: yyResult = pExpression(yyStart);
03593: yyError = yyResult.select(yyError);
03594: if (yyResult.hasValue()) {
03595: final Node v$g$1 = yyResult.semanticValue();
03596:
03597: yyRepetition1 = yyResult.index;
03598: yyRepValue1 = Pair.empty();
03599: while (true) {
03600:
03601: yyBase = yyRepetition1;
03602: yyResult = pSymbol(yyBase);
03603: yyError = yyResult.select(yyError);
03604: if (yyResult.hasValue(",")) {
03605:
03606: yyResult = pExpression(yyResult.index);
03607: yyError = yyResult.select(yyError);
03608: if (yyResult.hasValue()) {
03609: final Node v$el$1 = yyResult.semanticValue();
03610:
03611: yyRepetition1 = yyResult.index;
03612: yyRepValue1 = new Pair<Node>(v$el$1,
03613: yyRepValue1);
03614: continue;
03615: }
03616: } else {
03617: yyError = yyError.select("\",\" expected", yyBase);
03618: }
03619: break;
03620: }
03621: { // Start scope for v$g$2.
03622: final Pair<Node> v$g$2 = yyRepValue1.reverse();
03623:
03624: yyValue = GNode.createFromPair("ExpressionList", v$g$1,
03625: v$g$2);
03626: yyValue.setLocation(location(yyStart));
03627:
03628: return new SemanticValue(yyValue, yyRepetition1,
03629: yyError);
03630: } // End scope for v$g$2.
03631: }
03632:
03633: // Done.
03634: return yyError;
03635: }
03636:
03637: // =========================================================================
03638:
03639: /**
03640: * Parse nonterminal xtc.lang.JavaPattern.Expression.
03641: *
03642: * @param yyStart The index.
03643: * @return The result.
03644: * @throws IOException Signals an I/O error.
03645: */
03646: private Result pExpression(final int yyStart) throws IOException {
03647: JavaFactoryParserColumn yyColumn = (JavaFactoryParserColumn) column(yyStart);
03648: if (null == yyColumn.chunk2)
03649: yyColumn.chunk2 = new Chunk2();
03650: if (null == yyColumn.chunk2.fExpression)
03651: yyColumn.chunk2.fExpression = pExpression$1(yyStart);
03652: return yyColumn.chunk2.fExpression;
03653: }
03654:
03655: /** Actually parse xtc.lang.JavaPattern.Expression. */
03656: private Result pExpression$1(final int yyStart) throws IOException {
03657: Result yyResult;
03658: Node yyValue;
03659: ParseError yyError = ParseError.DUMMY;
03660:
03661: // Alternative <Assignment>.
03662:
03663: yyResult = pConditionalExpression(yyStart);
03664: yyError = yyResult.select(yyError);
03665: if (yyResult.hasValue()) {
03666: final Node v$g$1 = yyResult.semanticValue();
03667:
03668: yyResult = pAssignmentOperator(yyResult.index);
03669: yyError = yyResult.select(yyError);
03670: if (yyResult.hasValue()) {
03671: final String v$g$2 = yyResult.semanticValue();
03672:
03673: yyResult = pExpression(yyResult.index);
03674: yyError = yyResult.select(yyError);
03675: if (yyResult.hasValue()) {
03676: final Node v$g$3 = yyResult.semanticValue();
03677:
03678: yyValue = GNode.create("Expression", v$g$1, v$g$2,
03679: v$g$3);
03680: yyValue.setLocation(location(yyStart));
03681:
03682: return yyResult.createValue(yyValue, yyError);
03683: }
03684: }
03685: }
03686:
03687: // Alternative <Base>.
03688:
03689: yyResult = pConditionalExpression(yyStart);
03690: yyError = yyResult.select(yyError);
03691: if (yyResult.hasValue()) {
03692: yyValue = yyResult.semanticValue();
03693:
03694: return yyResult.createValue(yyValue, yyError);
03695: }
03696:
03697: // Done.
03698: return yyError;
03699: }
03700:
03701: // =========================================================================
03702:
03703: /**
03704: * Parse nonterminal xtc.lang.JavaPattern.AssignmentOperator.
03705: *
03706: * @param yyStart The index.
03707: * @return The result.
03708: * @throws IOException Signals an I/O error.
03709: */
03710: private Result pAssignmentOperator(final int yyStart)
03711: throws IOException {
03712: Result yyResult;
03713: String yyValue;
03714: ParseError yyError = ParseError.DUMMY;
03715:
03716: // Alternative <Equal>.
03717:
03718: yyResult = pSymbol(yyStart);
03719: yyError = yyResult.select(yyError);
03720: if (yyResult.hasValue("=")) {
03721: yyValue = "=";
03722:
03723: return yyResult.createValue(yyValue, yyError);
03724: }
03725:
03726: // Alternative <PlusEqual>.
03727:
03728: yyResult = pSymbol(yyStart);
03729: yyError = yyResult.select(yyError);
03730: if (yyResult.hasValue("+=")) {
03731: yyValue = "+=";
03732:
03733: return yyResult.createValue(yyValue, yyError);
03734: }
03735:
03736: // Alternative <MinusEqual>.
03737:
03738: yyResult = pSymbol(yyStart);
03739: yyError = yyResult.select(yyError);
03740: if (yyResult.hasValue("-=")) {
03741: yyValue = "-=";
03742:
03743: return yyResult.createValue(yyValue, yyError);
03744: }
03745:
03746: // Alternative <StarEqual>.
03747:
03748: yyResult = pSymbol(yyStart);
03749: yyError = yyResult.select(yyError);
03750: if (yyResult.hasValue("*=")) {
03751: yyValue = "*=";
03752:
03753: return yyResult.createValue(yyValue, yyError);
03754: }
03755:
03756: // Alternative <SlashEqual>.
03757:
03758: yyResult = pSymbol(yyStart);
03759: yyError = yyResult.select(yyError);
03760: if (yyResult.hasValue("/=")) {
03761: yyValue = "/=";
03762:
03763: return yyResult.createValue(yyValue, yyError);
03764: }
03765:
03766: // Alternative <AmpersandEqual>.
03767:
03768: yyResult = pSymbol(yyStart);
03769: yyError = yyResult.select(yyError);
03770: if (yyResult.hasValue("&=")) {
03771: yyValue = "&=";
03772:
03773: return yyResult.createValue(yyValue, yyError);
03774: }
03775:
03776: // Alternative <BarEqual>.
03777:
03778: yyResult = pSymbol(yyStart);
03779: yyError = yyResult.select(yyError);
03780: if (yyResult.hasValue("|=")) {
03781: yyValue = "|=";
03782:
03783: return yyResult.createValue(yyValue, yyError);
03784: }
03785:
03786: // Alternative <CaretEqual>.
03787:
03788: yyResult = pSymbol(yyStart);
03789: yyError = yyResult.select(yyError);
03790: if (yyResult.hasValue("^=")) {
03791: yyValue = "^=";
03792:
03793: return yyResult.createValue(yyValue, yyError);
03794: }
03795:
03796: // Alternative <PercentEqual>.
03797:
03798: yyResult = pSymbol(yyStart);
03799: yyError = yyResult.select(yyError);
03800: if (yyResult.hasValue("%=")) {
03801: yyValue = "%=";
03802:
03803: return yyResult.createValue(yyValue, yyError);
03804: }
03805:
03806: // Alternative <DoubleLessEqual>.
03807:
03808: yyResult = pSymbol(yyStart);
03809: yyError = yyResult.select(yyError);
03810: if (yyResult.hasValue("<<=")) {
03811: yyValue = "<<=";
03812:
03813: return yyResult.createValue(yyValue, yyError);
03814: }
03815:
03816: // Alternative <DoubleGreaterEqual>.
03817:
03818: yyResult = pSymbol(yyStart);
03819: yyError = yyResult.select(yyError);
03820: if (yyResult.hasValue(">>=")) {
03821: yyValue = ">>=";
03822:
03823: return yyResult.createValue(yyValue, yyError);
03824: }
03825:
03826: // Alternative <TripleGreaterEqual>.
03827:
03828: yyResult = pSymbol(yyStart);
03829: yyError = yyResult.select(yyError);
03830: if (yyResult.hasValue(">>>=")) {
03831: yyValue = ">>>=";
03832:
03833: return yyResult.createValue(yyValue, yyError);
03834: }
03835:
03836: // Done.
03837: yyError = yyError.select("assignment operator expected",
03838: yyStart);
03839: return yyError;
03840: }
03841:
03842: // =========================================================================
03843:
03844: /**
03845: * Parse nonterminal xtc.lang.JavaPattern.ConditionalExpression.
03846: *
03847: * @param yyStart The index.
03848: * @return The result.
03849: * @throws IOException Signals an I/O error.
03850: */
03851: private Result pConditionalExpression(final int yyStart)
03852: throws IOException {
03853:
03854: JavaFactoryParserColumn yyColumn = (JavaFactoryParserColumn) column(yyStart);
03855: if (null == yyColumn.chunk2)
03856: yyColumn.chunk2 = new Chunk2();
03857: if (null == yyColumn.chunk2.fConditionalExpression)
03858: yyColumn.chunk2.fConditionalExpression = pConditionalExpression$1(yyStart);
03859: return yyColumn.chunk2.fConditionalExpression;
03860: }
03861:
03862: /** Actually parse xtc.lang.JavaPattern.ConditionalExpression. */
03863: private Result pConditionalExpression$1(final int yyStart)
03864: throws IOException {
03865:
03866: Result yyResult;
03867: int yyBase;
03868: Node yyValue;
03869: ParseError yyError = ParseError.DUMMY;
03870:
03871: // Alternative <Conditional>.
03872:
03873: yyResult = pLogicalOrExpression(yyStart);
03874: yyError = yyResult.select(yyError);
03875: if (yyResult.hasValue()) {
03876: final Node v$g$1 = yyResult.semanticValue();
03877:
03878: yyBase = yyResult.index;
03879: yyResult = pSymbol(yyBase);
03880: yyError = yyResult.select(yyError);
03881: if (yyResult.hasValue("?")) {
03882:
03883: yyResult = pExpression(yyResult.index);
03884: yyError = yyResult.select(yyError);
03885: if (yyResult.hasValue()) {
03886: final Node v$g$2 = yyResult.semanticValue();
03887:
03888: yyBase = yyResult.index;
03889: yyResult = pSymbol(yyBase);
03890: yyError = yyResult.select(yyError);
03891: if (yyResult.hasValue(":")) {
03892:
03893: yyResult = pConditionalExpression(yyResult.index);
03894: yyError = yyResult.select(yyError);
03895: if (yyResult.hasValue()) {
03896: final Node v$g$3 = yyResult.semanticValue();
03897:
03898: yyValue = GNode.create(
03899: "ConditionalExpression", v$g$1,
03900: v$g$2, v$g$3);
03901: yyValue.setLocation(location(yyStart));
03902:
03903: return yyResult.createValue(yyValue,
03904: yyError);
03905: }
03906: } else {
03907: yyError = yyError.select("\":\" expected",
03908: yyBase);
03909: }
03910: }
03911: } else {
03912: yyError = yyError.select("\"?\" expected", yyBase);
03913: }
03914: }
03915:
03916: // Alternative <Base>.
03917:
03918: yyResult = pLogicalOrExpression(yyStart);
03919: yyError = yyResult.select(yyError);
03920: if (yyResult.hasValue()) {
03921: yyValue = yyResult.semanticValue();
03922:
03923: return yyResult.createValue(yyValue, yyError);
03924: }
03925:
03926: // Done.
03927: return yyError;
03928: }
03929:
03930: // =========================================================================
03931:
03932: /**
03933: * Parse nonterminal xtc.lang.JavaPattern.LogicalOrExpression.
03934: *
03935: * @param yyStart The index.
03936: * @return The result.
03937: * @throws IOException Signals an I/O error.
03938: */
03939: private Result pLogicalOrExpression(final int yyStart)
03940: throws IOException {
03941: JavaFactoryParserColumn yyColumn = (JavaFactoryParserColumn) column(yyStart);
03942: if (null == yyColumn.chunk2)
03943: yyColumn.chunk2 = new Chunk2();
03944: if (null == yyColumn.chunk2.fLogicalOrExpression)
03945: yyColumn.chunk2.fLogicalOrExpression = pLogicalOrExpression$1(yyStart);
03946: return yyColumn.chunk2.fLogicalOrExpression;
03947: }
03948:
03949: /** Actually parse xtc.lang.JavaPattern.LogicalOrExpression. */
03950: private Result pLogicalOrExpression$1(final int yyStart)
03951: throws IOException {
03952:
03953: Result yyResult;
03954: int yyRepetition1;
03955: Pair<Action<Node>> yyRepValue1;
03956: Node yyValue;
03957: ParseError yyError = ParseError.DUMMY;
03958:
03959: // Alternative <Base>.
03960:
03961: yyResult = pLogicalAndExpression(yyStart);
03962: yyError = yyResult.select(yyError);
03963: if (yyResult.hasValue()) {
03964: final Node v$3 = yyResult.semanticValue();
03965:
03966: yyRepetition1 = yyResult.index;
03967: yyRepValue1 = Pair.empty();
03968: while (true) {
03969:
03970: yyResult = pLogicalOrExpression$$Tail1(yyRepetition1);
03971: yyError = yyResult.select(yyError);
03972: if (yyResult.hasValue()) {
03973: final Action<Node> v$4 = yyResult.semanticValue();
03974:
03975: yyRepetition1 = yyResult.index;
03976: yyRepValue1 = new Pair<Action<Node>>(v$4,
03977: yyRepValue1);
03978: continue;
03979: }
03980: break;
03981: }
03982: { // Start scope for v$5.
03983: final Pair<Action<Node>> v$5 = yyRepValue1.reverse();
03984:
03985: yyValue = apply(v$5, v$3, yyStart);
03986:
03987: return new SemanticValue(yyValue, yyRepetition1,
03988: yyError);
03989: } // End scope for v$5.
03990: }
03991:
03992: // Done.
03993: return yyError;
03994: }
03995:
03996: // =========================================================================
03997:
03998: /**
03999: * Parse synthetic nonterminal
04000: * xtc.lang.JavaFactory.LogicalOrExpression$$Tail1.
04001: *
04002: * @param yyStart The index.
04003: * @return The result.
04004: * @throws IOException Signals an I/O error.
04005: */
04006: private Result pLogicalOrExpression$$Tail1(final int yyStart)
04007: throws IOException {
04008:
04009: Result yyResult;
04010: Action<Node> yyValue;
04011: ParseError yyError = ParseError.DUMMY;
04012:
04013: // Alternative <Or>.
04014:
04015: yyResult = pSymbol(yyStart);
04016: yyError = yyResult.select(yyError);
04017: if (yyResult.hasValue("||")) {
04018:
04019: yyResult = pLogicalAndExpression(yyResult.index);
04020: yyError = yyResult.select(yyError);
04021: if (yyResult.hasValue()) {
04022: final Node v$g$2 = yyResult.semanticValue();
04023:
04024: yyValue = new Action<Node>() {
04025: public Node run(Node v$1) {
04026: return GNode.create("LogicalOrExpression", v$1,
04027: v$g$2);
04028: }
04029: };
04030:
04031: return yyResult.createValue(yyValue, yyError);
04032: }
04033: }
04034:
04035: // Done.
04036: yyError = yyError.select("logical or expression expected",
04037: yyStart);
04038: return yyError;
04039: }
04040:
04041: // =========================================================================
04042:
04043: /**
04044: * Parse nonterminal xtc.lang.JavaPattern.LogicalAndExpression.
04045: *
04046: * @param yyStart The index.
04047: * @return The result.
04048: * @throws IOException Signals an I/O error.
04049: */
04050: private Result pLogicalAndExpression(final int yyStart)
04051: throws IOException {
04052: Result yyResult;
04053: int yyRepetition1;
04054: Pair<Action<Node>> yyRepValue1;
04055: Node yyValue;
04056: ParseError yyError = ParseError.DUMMY;
04057:
04058: // Alternative <Base>.
04059:
04060: yyResult = pBitwiseOrExpression(yyStart);
04061: yyError = yyResult.select(yyError);
04062: if (yyResult.hasValue()) {
04063: final Node v$3 = yyResult.semanticValue();
04064:
04065: yyRepetition1 = yyResult.index;
04066: yyRepValue1 = Pair.empty();
04067: while (true) {
04068:
04069: yyResult = pLogicalAndExpression$$Tail1(yyRepetition1);
04070: yyError = yyResult.select(yyError);
04071: if (yyResult.hasValue()) {
04072: final Action<Node> v$4 = yyResult.semanticValue();
04073:
04074: yyRepetition1 = yyResult.index;
04075: yyRepValue1 = new Pair<Action<Node>>(v$4,
04076: yyRepValue1);
04077: continue;
04078: }
04079: break;
04080: }
04081: { // Start scope for v$5.
04082: final Pair<Action<Node>> v$5 = yyRepValue1.reverse();
04083:
04084: yyValue = apply(v$5, v$3, yyStart);
04085:
04086: return new SemanticValue(yyValue, yyRepetition1,
04087: yyError);
04088: } // End scope for v$5.
04089: }
04090:
04091: // Done.
04092: return yyError;
04093: }
04094:
04095: // =========================================================================
04096:
04097: /**
04098: * Parse synthetic nonterminal
04099: * xtc.lang.JavaFactory.LogicalAndExpression$$Tail1.
04100: *
04101: * @param yyStart The index.
04102: * @return The result.
04103: * @throws IOException Signals an I/O error.
04104: */
04105: private Result pLogicalAndExpression$$Tail1(final int yyStart)
04106: throws IOException {
04107:
04108: Result yyResult;
04109: Action<Node> yyValue;
04110: ParseError yyError = ParseError.DUMMY;
04111:
04112: // Alternative <And>.
04113:
04114: yyResult = pSymbol(yyStart);
04115: yyError = yyResult.select(yyError);
04116: if (yyResult.hasValue("&&")) {
04117:
04118: yyResult = pBitwiseOrExpression(yyResult.index);
04119: yyError = yyResult.select(yyError);
04120: if (yyResult.hasValue()) {
04121: final Node v$g$2 = yyResult.semanticValue();
04122:
04123: yyValue = new Action<Node>() {
04124: public Node run(Node v$1) {
04125: return GNode.create("LogicalAndExpression",
04126: v$1, v$g$2);
04127: }
04128: };
04129:
04130: return yyResult.createValue(yyValue, yyError);
04131: }
04132: }
04133:
04134: // Done.
04135: yyError = yyError.select("logical and expression expected",
04136: yyStart);
04137: return yyError;
04138: }
04139:
04140: // =========================================================================
04141:
04142: /**
04143: * Parse nonterminal xtc.lang.JavaPattern.BitwiseOrExpression.
04144: *
04145: * @param yyStart The index.
04146: * @return The result.
04147: * @throws IOException Signals an I/O error.
04148: */
04149: private Result pBitwiseOrExpression(final int yyStart)
04150: throws IOException {
04151: Result yyResult;
04152: int yyRepetition1;
04153: Pair<Action<Node>> yyRepValue1;
04154: Node yyValue;
04155: ParseError yyError = ParseError.DUMMY;
04156:
04157: // Alternative <Base>.
04158:
04159: yyResult = pBitwiseXorExpression(yyStart);
04160: yyError = yyResult.select(yyError);
04161: if (yyResult.hasValue()) {
04162: final Node v$3 = yyResult.semanticValue();
04163:
04164: yyRepetition1 = yyResult.index;
04165: yyRepValue1 = Pair.empty();
04166: while (true) {
04167:
04168: yyResult = pBitwiseOrExpression$$Tail1(yyRepetition1);
04169: yyError = yyResult.select(yyError);
04170: if (yyResult.hasValue()) {
04171: final Action<Node> v$4 = yyResult.semanticValue();
04172:
04173: yyRepetition1 = yyResult.index;
04174: yyRepValue1 = new Pair<Action<Node>>(v$4,
04175: yyRepValue1);
04176: continue;
04177: }
04178: break;
04179: }
04180: { // Start scope for v$5.
04181: final Pair<Action<Node>> v$5 = yyRepValue1.reverse();
04182:
04183: yyValue = apply(v$5, v$3, yyStart);
04184:
04185: return new SemanticValue(yyValue, yyRepetition1,
04186: yyError);
04187: } // End scope for v$5.
04188: }
04189:
04190: // Done.
04191: return yyError;
04192: }
04193:
04194: // =========================================================================
04195:
04196: /**
04197: * Parse synthetic nonterminal
04198: * xtc.lang.JavaFactory.BitwiseOrExpression$$Tail1.
04199: *
04200: * @param yyStart The index.
04201: * @return The result.
04202: * @throws IOException Signals an I/O error.
04203: */
04204: private Result pBitwiseOrExpression$$Tail1(final int yyStart)
04205: throws IOException {
04206:
04207: Result yyResult;
04208: Action<Node> yyValue;
04209: ParseError yyError = ParseError.DUMMY;
04210:
04211: // Alternative <Or>.
04212:
04213: yyResult = pSymbol(yyStart);
04214: yyError = yyResult.select(yyError);
04215: if (yyResult.hasValue("|")) {
04216:
04217: yyResult = pBitwiseXorExpression(yyResult.index);
04218: yyError = yyResult.select(yyError);
04219: if (yyResult.hasValue()) {
04220: final Node v$g$2 = yyResult.semanticValue();
04221:
04222: yyValue = new Action<Node>() {
04223: public Node run(Node v$1) {
04224: return GNode.create("BitwiseOrExpression", v$1,
04225: v$g$2);
04226: }
04227: };
04228:
04229: return yyResult.createValue(yyValue, yyError);
04230: }
04231: }
04232:
04233: // Done.
04234: yyError = yyError.select("bitwise or expression expected",
04235: yyStart);
04236: return yyError;
04237: }
04238:
04239: // =========================================================================
04240:
04241: /**
04242: * Parse nonterminal xtc.lang.JavaPattern.BitwiseXorExpression.
04243: *
04244: * @param yyStart The index.
04245: * @return The result.
04246: * @throws IOException Signals an I/O error.
04247: */
04248: private Result pBitwiseXorExpression(final int yyStart)
04249: throws IOException {
04250: Result yyResult;
04251: int yyRepetition1;
04252: Pair<Action<Node>> yyRepValue1;
04253: Node yyValue;
04254: ParseError yyError = ParseError.DUMMY;
04255:
04256: // Alternative <Base>.
04257:
04258: yyResult = pBitwiseAndExpression(yyStart);
04259: yyError = yyResult.select(yyError);
04260: if (yyResult.hasValue()) {
04261: final Node v$3 = yyResult.semanticValue();
04262:
04263: yyRepetition1 = yyResult.index;
04264: yyRepValue1 = Pair.empty();
04265: while (true) {
04266:
04267: yyResult = pBitwiseXorExpression$$Tail1(yyRepetition1);
04268: yyError = yyResult.select(yyError);
04269: if (yyResult.hasValue()) {
04270: final Action<Node> v$4 = yyResult.semanticValue();
04271:
04272: yyRepetition1 = yyResult.index;
04273: yyRepValue1 = new Pair<Action<Node>>(v$4,
04274: yyRepValue1);
04275: continue;
04276: }
04277: break;
04278: }
04279: { // Start scope for v$5.
04280: final Pair<Action<Node>> v$5 = yyRepValue1.reverse();
04281:
04282: yyValue = apply(v$5, v$3, yyStart);
04283:
04284: return new SemanticValue(yyValue, yyRepetition1,
04285: yyError);
04286: } // End scope for v$5.
04287: }
04288:
04289: // Done.
04290: return yyError;
04291: }
04292:
04293: // =========================================================================
04294:
04295: /**
04296: * Parse synthetic nonterminal
04297: * xtc.lang.JavaFactory.BitwiseXorExpression$$Tail1.
04298: *
04299: * @param yyStart The index.
04300: * @return The result.
04301: * @throws IOException Signals an I/O error.
04302: */
04303: private Result pBitwiseXorExpression$$Tail1(final int yyStart)
04304: throws IOException {
04305:
04306: Result yyResult;
04307: Action<Node> yyValue;
04308: ParseError yyError = ParseError.DUMMY;
04309:
04310: // Alternative <Xor>.
04311:
04312: yyResult = pSymbol(yyStart);
04313: yyError = yyResult.select(yyError);
04314: if (yyResult.hasValue("^")) {
04315:
04316: yyResult = pBitwiseAndExpression(yyResult.index);
04317: yyError = yyResult.select(yyError);
04318: if (yyResult.hasValue()) {
04319: final Node v$g$2 = yyResult.semanticValue();
04320:
04321: yyValue = new Action<Node>() {
04322: public Node run(Node v$1) {
04323: return GNode.create("BitwiseXorExpression",
04324: v$1, v$g$2);
04325: }
04326: };
04327:
04328: return yyResult.createValue(yyValue, yyError);
04329: }
04330: }
04331:
04332: // Done.
04333: yyError = yyError.select("bitwise xor expression expected",
04334: yyStart);
04335: return yyError;
04336: }
04337:
04338: // =========================================================================
04339:
04340: /**
04341: * Parse nonterminal xtc.lang.JavaPattern.BitwiseAndExpression.
04342: *
04343: * @param yyStart The index.
04344: * @return The result.
04345: * @throws IOException Signals an I/O error.
04346: */
04347: private Result pBitwiseAndExpression(final int yyStart)
04348: throws IOException {
04349: Result yyResult;
04350: int yyRepetition1;
04351: Pair<Action<Node>> yyRepValue1;
04352: Node yyValue;
04353: ParseError yyError = ParseError.DUMMY;
04354:
04355: // Alternative <Base>.
04356:
04357: yyResult = pEqualityExpression(yyStart);
04358: yyError = yyResult.select(yyError);
04359: if (yyResult.hasValue()) {
04360: final Node v$3 = yyResult.semanticValue();
04361:
04362: yyRepetition1 = yyResult.index;
04363: yyRepValue1 = Pair.empty();
04364: while (true) {
04365:
04366: yyResult = pBitwiseAndExpression$$Tail1(yyRepetition1);
04367: yyError = yyResult.select(yyError);
04368: if (yyResult.hasValue()) {
04369: final Action<Node> v$4 = yyResult.semanticValue();
04370:
04371: yyRepetition1 = yyResult.index;
04372: yyRepValue1 = new Pair<Action<Node>>(v$4,
04373: yyRepValue1);
04374: continue;
04375: }
04376: break;
04377: }
04378: { // Start scope for v$5.
04379: final Pair<Action<Node>> v$5 = yyRepValue1.reverse();
04380:
04381: yyValue = apply(v$5, v$3, yyStart);
04382:
04383: return new SemanticValue(yyValue, yyRepetition1,
04384: yyError);
04385: } // End scope for v$5.
04386: }
04387:
04388: // Done.
04389: return yyError;
04390: }
04391:
04392: // =========================================================================
04393:
04394: /**
04395: * Parse synthetic nonterminal
04396: * xtc.lang.JavaFactory.BitwiseAndExpression$$Tail1.
04397: *
04398: * @param yyStart The index.
04399: * @return The result.
04400: * @throws IOException Signals an I/O error.
04401: */
04402: private Result pBitwiseAndExpression$$Tail1(final int yyStart)
04403: throws IOException {
04404:
04405: Result yyResult;
04406: Action<Node> yyValue;
04407: ParseError yyError = ParseError.DUMMY;
04408:
04409: // Alternative <And>.
04410:
04411: yyResult = pSymbol(yyStart);
04412: yyError = yyResult.select(yyError);
04413: if (yyResult.hasValue("&")) {
04414:
04415: yyResult = pEqualityExpression(yyResult.index);
04416: yyError = yyResult.select(yyError);
04417: if (yyResult.hasValue()) {
04418: final Node v$g$2 = yyResult.semanticValue();
04419:
04420: yyValue = new Action<Node>() {
04421: public Node run(Node v$1) {
04422: return GNode.create("BitwiseAndExpression",
04423: v$1, v$g$2);
04424: }
04425: };
04426:
04427: return yyResult.createValue(yyValue, yyError);
04428: }
04429: }
04430:
04431: // Done.
04432: yyError = yyError.select("bitwise and expression expected",
04433: yyStart);
04434: return yyError;
04435: }
04436:
04437: // =========================================================================
04438:
04439: /**
04440: * Parse nonterminal xtc.lang.JavaPattern.EqualityExpression.
04441: *
04442: * @param yyStart The index.
04443: * @return The result.
04444: * @throws IOException Signals an I/O error.
04445: */
04446: private Result pEqualityExpression(final int yyStart)
04447: throws IOException {
04448: Result yyResult;
04449: int yyRepetition1;
04450: Pair<Action<Node>> yyRepValue1;
04451: Node yyValue;
04452: ParseError yyError = ParseError.DUMMY;
04453:
04454: // Alternative <Base>.
04455:
04456: yyResult = pInstanceOfExpression(yyStart);
04457: yyError = yyResult.select(yyError);
04458: if (yyResult.hasValue()) {
04459: final Node v$4 = yyResult.semanticValue();
04460:
04461: yyRepetition1 = yyResult.index;
04462: yyRepValue1 = Pair.empty();
04463: while (true) {
04464:
04465: yyResult = pEqualityExpression$$Tail1(yyRepetition1);
04466: yyError = yyResult.select(yyError);
04467: if (yyResult.hasValue()) {
04468: final Action<Node> v$5 = yyResult.semanticValue();
04469:
04470: yyRepetition1 = yyResult.index;
04471: yyRepValue1 = new Pair<Action<Node>>(v$5,
04472: yyRepValue1);
04473: continue;
04474: }
04475: break;
04476: }
04477: { // Start scope for v$6.
04478: final Pair<Action<Node>> v$6 = yyRepValue1.reverse();
04479:
04480: yyValue = apply(v$6, v$4, yyStart);
04481:
04482: return new SemanticValue(yyValue, yyRepetition1,
04483: yyError);
04484: } // End scope for v$6.
04485: }
04486:
04487: // Done.
04488: return yyError;
04489: }
04490:
04491: // =========================================================================
04492:
04493: /**
04494: * Parse synthetic nonterminal
04495: * xtc.lang.JavaFactory.EqualityExpression$$Tail1.
04496: *
04497: * @param yyStart The index.
04498: * @return The result.
04499: * @throws IOException Signals an I/O error.
04500: */
04501: private Result pEqualityExpression$$Tail1(final int yyStart)
04502: throws IOException {
04503:
04504: Result yyResult;
04505: Action<Node> yyValue;
04506: ParseError yyError = ParseError.DUMMY;
04507:
04508: // Alternative <Recursion>.
04509:
04510: yyResult = pEqualityOperator(yyStart);
04511: yyError = yyResult.select(yyError);
04512: if (yyResult.hasValue()) {
04513: final String v$g$2 = yyResult.semanticValue();
04514:
04515: yyResult = pInstanceOfExpression(yyResult.index);
04516: yyError = yyResult.select(yyError);
04517: if (yyResult.hasValue()) {
04518: final Node v$g$3 = yyResult.semanticValue();
04519:
04520: yyValue = new Action<Node>() {
04521: public Node run(Node v$1) {
04522: return GNode.create("EqualityExpression", v$1,
04523: v$g$2, v$g$3);
04524: }
04525: };
04526:
04527: return yyResult.createValue(yyValue, yyError);
04528: }
04529: }
04530:
04531: // Done.
04532: return yyError;
04533: }
04534:
04535: // =========================================================================
04536:
04537: /**
04538: * Parse nonterminal xtc.lang.JavaPattern.EqualityOperator.
04539: *
04540: * @param yyStart The index.
04541: * @return The result.
04542: * @throws IOException Signals an I/O error.
04543: */
04544: private Result pEqualityOperator(final int yyStart)
04545: throws IOException {
04546: Result yyResult;
04547: String yyValue;
04548: ParseError yyError = ParseError.DUMMY;
04549:
04550: // Alternative <Equal>.
04551:
04552: yyResult = pSymbol(yyStart);
04553: yyError = yyResult.select(yyError);
04554: if (yyResult.hasValue("==")) {
04555: yyValue = "==";
04556:
04557: return yyResult.createValue(yyValue, yyError);
04558: }
04559:
04560: // Alternative <NotEqual>.
04561:
04562: yyResult = pSymbol(yyStart);
04563: yyError = yyResult.select(yyError);
04564: if (yyResult.hasValue("!=")) {
04565: yyValue = "!=";
04566:
04567: return yyResult.createValue(yyValue, yyError);
04568: }
04569:
04570: // Done.
04571: yyError = yyError.select("equality operator expected", yyStart);
04572: return yyError;
04573: }
04574:
04575: // =========================================================================
04576:
04577: /**
04578: * Parse nonterminal xtc.lang.JavaPattern.InstanceOfExpression.
04579: *
04580: * @param yyStart The index.
04581: * @return The result.
04582: * @throws IOException Signals an I/O error.
04583: */
04584: private Result pInstanceOfExpression(final int yyStart)
04585: throws IOException {
04586: Result yyResult;
04587: int yyBase;
04588: Node yyValue;
04589: ParseError yyError = ParseError.DUMMY;
04590:
04591: // Alternative <Instanceof>.
04592:
04593: yyResult = pRelationalExpression(yyStart);
04594: yyError = yyResult.select(yyError);
04595: if (yyResult.hasValue()) {
04596: final Node v$g$1 = yyResult.semanticValue();
04597:
04598: yyBase = yyResult.index;
04599: yyResult = pWord(yyBase);
04600: yyError = yyResult.select(yyError);
04601: if (yyResult.hasValue("instanceof")) {
04602:
04603: yyResult = pType(yyResult.index);
04604: yyError = yyResult.select(yyError);
04605: if (yyResult.hasValue()) {
04606: final Node v$g$2 = yyResult.semanticValue();
04607:
04608: yyValue = GNode.create("InstanceOfExpression",
04609: v$g$1, v$g$2);
04610: yyValue.setLocation(location(yyStart));
04611:
04612: return yyResult.createValue(yyValue, yyError);
04613: }
04614: } else {
04615: yyError = yyError.select("\"instanceof\" expected",
04616: yyBase);
04617: }
04618: }
04619:
04620: // Alternative <Base>.
04621:
04622: yyResult = pRelationalExpression(yyStart);
04623: yyError = yyResult.select(yyError);
04624: if (yyResult.hasValue()) {
04625: yyValue = yyResult.semanticValue();
04626:
04627: return yyResult.createValue(yyValue, yyError);
04628: }
04629:
04630: // Done.
04631: return yyError;
04632: }
04633:
04634: // =========================================================================
04635:
04636: /**
04637: * Parse nonterminal xtc.lang.JavaPattern.RelationalExpression.
04638: *
04639: * @param yyStart The index.
04640: * @return The result.
04641: * @throws IOException Signals an I/O error.
04642: */
04643: private Result pRelationalExpression(final int yyStart)
04644: throws IOException {
04645: JavaFactoryParserColumn yyColumn = (JavaFactoryParserColumn) column(yyStart);
04646: if (null == yyColumn.chunk2)
04647: yyColumn.chunk2 = new Chunk2();
04648: if (null == yyColumn.chunk2.fRelationalExpression)
04649: yyColumn.chunk2.fRelationalExpression = pRelationalExpression$1(yyStart);
04650: return yyColumn.chunk2.fRelationalExpression;
04651: }
04652:
04653: /** Actually parse xtc.lang.JavaPattern.RelationalExpression. */
04654: private Result pRelationalExpression$1(final int yyStart)
04655: throws IOException {
04656:
04657: Result yyResult;
04658: int yyRepetition1;
04659: Pair<Action<Node>> yyRepValue1;
04660: Node yyValue;
04661: ParseError yyError = ParseError.DUMMY;
04662:
04663: // Alternative <Base>.
04664:
04665: yyResult = pShiftExpression(yyStart);
04666: yyError = yyResult.select(yyError);
04667: if (yyResult.hasValue()) {
04668: final Node v$4 = yyResult.semanticValue();
04669:
04670: yyRepetition1 = yyResult.index;
04671: yyRepValue1 = Pair.empty();
04672: while (true) {
04673:
04674: yyResult = pRelationalExpression$$Tail1(yyRepetition1);
04675: yyError = yyResult.select(yyError);
04676: if (yyResult.hasValue()) {
04677: final Action<Node> v$5 = yyResult.semanticValue();
04678:
04679: yyRepetition1 = yyResult.index;
04680: yyRepValue1 = new Pair<Action<Node>>(v$5,
04681: yyRepValue1);
04682: continue;
04683: }
04684: break;
04685: }
04686: { // Start scope for v$6.
04687: final Pair<Action<Node>> v$6 = yyRepValue1.reverse();
04688:
04689: yyValue = apply(v$6, v$4, yyStart);
04690:
04691: return new SemanticValue(yyValue, yyRepetition1,
04692: yyError);
04693: } // End scope for v$6.
04694: }
04695:
04696: // Done.
04697: return yyError;
04698: }
04699:
04700: // =========================================================================
04701:
04702: /**
04703: * Parse synthetic nonterminal
04704: * xtc.lang.JavaFactory.RelationalExpression$$Tail1.
04705: *
04706: * @param yyStart The index.
04707: * @return The result.
04708: * @throws IOException Signals an I/O error.
04709: */
04710: private Result pRelationalExpression$$Tail1(final int yyStart)
04711: throws IOException {
04712:
04713: Result yyResult;
04714: Action<Node> yyValue;
04715: ParseError yyError = ParseError.DUMMY;
04716:
04717: // Alternative <Recursion>.
04718:
04719: yyResult = pRelationalOperator(yyStart);
04720: yyError = yyResult.select(yyError);
04721: if (yyResult.hasValue()) {
04722: final String v$g$2 = yyResult.semanticValue();
04723:
04724: yyResult = pShiftExpression(yyResult.index);
04725: yyError = yyResult.select(yyError);
04726: if (yyResult.hasValue()) {
04727: final Node v$g$3 = yyResult.semanticValue();
04728:
04729: yyValue = new Action<Node>() {
04730: public Node run(Node v$1) {
04731: return GNode.create("RelationalExpression",
04732: v$1, v$g$2, v$g$3);
04733: }
04734: };
04735:
04736: return yyResult.createValue(yyValue, yyError);
04737: }
04738: }
04739:
04740: // Done.
04741: return yyError;
04742: }
04743:
04744: // =========================================================================
04745:
04746: /**
04747: * Parse nonterminal xtc.lang.JavaPattern.RelationalOperator.
04748: *
04749: * @param yyStart The index.
04750: * @return The result.
04751: * @throws IOException Signals an I/O error.
04752: */
04753: private Result pRelationalOperator(final int yyStart)
04754: throws IOException {
04755: Result yyResult;
04756: String yyValue;
04757: ParseError yyError = ParseError.DUMMY;
04758:
04759: // Alternative <Less>.
04760:
04761: yyResult = pSymbol(yyStart);
04762: yyError = yyResult.select(yyError);
04763: if (yyResult.hasValue("<")) {
04764: yyValue = "<";
04765:
04766: return yyResult.createValue(yyValue, yyError);
04767: }
04768:
04769: // Alternative <Greater>.
04770:
04771: yyResult = pSymbol(yyStart);
04772: yyError = yyResult.select(yyError);
04773: if (yyResult.hasValue(">")) {
04774: yyValue = ">";
04775:
04776: return yyResult.createValue(yyValue, yyError);
04777: }
04778:
04779: // Alternative <LessEqual>.
04780:
04781: yyResult = pSymbol(yyStart);
04782: yyError = yyResult.select(yyError);
04783: if (yyResult.hasValue("<=")) {
04784: yyValue = "<=";
04785:
04786: return yyResult.createValue(yyValue, yyError);
04787: }
04788:
04789: // Alternative <GreaterEqual>.
04790:
04791: yyResult = pSymbol(yyStart);
04792: yyError = yyResult.select(yyError);
04793: if (yyResult.hasValue(">=")) {
04794: yyValue = ">=";
04795:
04796: return yyResult.createValue(yyValue, yyError);
04797: }
04798:
04799: // Done.
04800: yyError = yyError.select("relational operator expected",
04801: yyStart);
04802: return yyError;
04803: }
04804:
04805: // =========================================================================
04806:
04807: /**
04808: * Parse nonterminal xtc.lang.JavaPattern.ShiftExpression.
04809: *
04810: * @param yyStart The index.
04811: * @return The result.
04812: * @throws IOException Signals an I/O error.
04813: */
04814: private Result pShiftExpression(final int yyStart)
04815: throws IOException {
04816: Result yyResult;
04817: int yyRepetition1;
04818: Pair<Action<Node>> yyRepValue1;
04819: Node yyValue;
04820: ParseError yyError = ParseError.DUMMY;
04821:
04822: // Alternative <Base>.
04823:
04824: yyResult = pAdditiveExpression(yyStart);
04825: yyError = yyResult.select(yyError);
04826: if (yyResult.hasValue()) {
04827: final Node v$4 = yyResult.semanticValue();
04828:
04829: yyRepetition1 = yyResult.index;
04830: yyRepValue1 = Pair.empty();
04831: while (true) {
04832:
04833: yyResult = pShiftExpression$$Tail1(yyRepetition1);
04834: yyError = yyResult.select(yyError);
04835: if (yyResult.hasValue()) {
04836: final Action<Node> v$5 = yyResult.semanticValue();
04837:
04838: yyRepetition1 = yyResult.index;
04839: yyRepValue1 = new Pair<Action<Node>>(v$5,
04840: yyRepValue1);
04841: continue;
04842: }
04843: break;
04844: }
04845: { // Start scope for v$6.
04846: final Pair<Action<Node>> v$6 = yyRepValue1.reverse();
04847:
04848: yyValue = apply(v$6, v$4, yyStart);
04849:
04850: return new SemanticValue(yyValue, yyRepetition1,
04851: yyError);
04852: } // End scope for v$6.
04853: }
04854:
04855: // Done.
04856: return yyError;
04857: }
04858:
04859: // =========================================================================
04860:
04861: /**
04862: * Parse synthetic nonterminal xtc.lang.JavaFactory.ShiftExpression$$Tail1.
04863: *
04864: * @param yyStart The index.
04865: * @return The result.
04866: * @throws IOException Signals an I/O error.
04867: */
04868: private Result pShiftExpression$$Tail1(final int yyStart)
04869: throws IOException {
04870:
04871: Result yyResult;
04872: Action<Node> yyValue;
04873: ParseError yyError = ParseError.DUMMY;
04874:
04875: // Alternative <Recursion>.
04876:
04877: yyResult = pShiftOperator(yyStart);
04878: yyError = yyResult.select(yyError);
04879: if (yyResult.hasValue()) {
04880: final String v$g$2 = yyResult.semanticValue();
04881:
04882: yyResult = pAdditiveExpression(yyResult.index);
04883: yyError = yyResult.select(yyError);
04884: if (yyResult.hasValue()) {
04885: final Node v$g$3 = yyResult.semanticValue();
04886:
04887: yyValue = new Action<Node>() {
04888: public Node run(Node v$1) {
04889: return GNode.create("ShiftExpression", v$1,
04890: v$g$2, v$g$3);
04891: }
04892: };
04893:
04894: return yyResult.createValue(yyValue, yyError);
04895: }
04896: }
04897:
04898: // Done.
04899: return yyError;
04900: }
04901:
04902: // =========================================================================
04903:
04904: /**
04905: * Parse nonterminal xtc.lang.JavaPattern.ShiftOperator.
04906: *
04907: * @param yyStart The index.
04908: * @return The result.
04909: * @throws IOException Signals an I/O error.
04910: */
04911: private Result pShiftOperator(final int yyStart) throws IOException {
04912: Result yyResult;
04913: String yyValue;
04914: ParseError yyError = ParseError.DUMMY;
04915:
04916: // Alternative <Left>.
04917:
04918: yyResult = pSymbol(yyStart);
04919: yyError = yyResult.select(yyError);
04920: if (yyResult.hasValue("<<")) {
04921: yyValue = "<<";
04922:
04923: return yyResult.createValue(yyValue, yyError);
04924: }
04925:
04926: // Alternative <Right>.
04927:
04928: yyResult = pSymbol(yyStart);
04929: yyError = yyResult.select(yyError);
04930: if (yyResult.hasValue(">>")) {
04931: yyValue = ">>";
04932:
04933: return yyResult.createValue(yyValue, yyError);
04934: }
04935:
04936: // Alternative <UnsignedRight>.
04937:
04938: yyResult = pSymbol(yyStart);
04939: yyError = yyResult.select(yyError);
04940: if (yyResult.hasValue(">>>")) {
04941: yyValue = ">>>";
04942:
04943: return yyResult.createValue(yyValue, yyError);
04944: }
04945:
04946: // Done.
04947: yyError = yyError.select("shift operator expected", yyStart);
04948: return yyError;
04949: }
04950:
04951: // =========================================================================
04952:
04953: /**
04954: * Parse nonterminal xtc.lang.JavaPattern.AdditiveExpression.
04955: *
04956: * @param yyStart The index.
04957: * @return The result.
04958: * @throws IOException Signals an I/O error.
04959: */
04960: private Result pAdditiveExpression(final int yyStart)
04961: throws IOException {
04962: Result yyResult;
04963: int yyRepetition1;
04964: Pair<Action<Node>> yyRepValue1;
04965: Node yyValue;
04966: ParseError yyError = ParseError.DUMMY;
04967:
04968: // Alternative <Base>.
04969:
04970: yyResult = pMultiplicativeExpression(yyStart);
04971: yyError = yyResult.select(yyError);
04972: if (yyResult.hasValue()) {
04973: final Node v$4 = yyResult.semanticValue();
04974:
04975: yyRepetition1 = yyResult.index;
04976: yyRepValue1 = Pair.empty();
04977: while (true) {
04978:
04979: yyResult = pAdditiveExpression$$Tail1(yyRepetition1);
04980: yyError = yyResult.select(yyError);
04981: if (yyResult.hasValue()) {
04982: final Action<Node> v$5 = yyResult.semanticValue();
04983:
04984: yyRepetition1 = yyResult.index;
04985: yyRepValue1 = new Pair<Action<Node>>(v$5,
04986: yyRepValue1);
04987: continue;
04988: }
04989: break;
04990: }
04991: { // Start scope for v$6.
04992: final Pair<Action<Node>> v$6 = yyRepValue1.reverse();
04993:
04994: yyValue = apply(v$6, v$4, yyStart);
04995:
04996: return new SemanticValue(yyValue, yyRepetition1,
04997: yyError);
04998: } // End scope for v$6.
04999: }
05000:
05001: // Done.
05002: return yyError;
05003: }
05004:
05005: // =========================================================================
05006:
05007: /**
05008: * Parse synthetic nonterminal
05009: * xtc.lang.JavaFactory.AdditiveExpression$$Tail1.
05010: *
05011: * @param yyStart The index.
05012: * @return The result.
05013: * @throws IOException Signals an I/O error.
05014: */
05015: private Result pAdditiveExpression$$Tail1(final int yyStart)
05016: throws IOException {
05017:
05018: Result yyResult;
05019: Action<Node> yyValue;
05020: ParseError yyError = ParseError.DUMMY;
05021:
05022: // Alternative <Recursion>.
05023:
05024: yyResult = pAdditiveOperator(yyStart);
05025: yyError = yyResult.select(yyError);
05026: if (yyResult.hasValue()) {
05027: final String v$g$2 = yyResult.semanticValue();
05028:
05029: yyResult = pMultiplicativeExpression(yyResult.index);
05030: yyError = yyResult.select(yyError);
05031: if (yyResult.hasValue()) {
05032: final Node v$g$3 = yyResult.semanticValue();
05033:
05034: yyValue = new Action<Node>() {
05035: public Node run(Node v$1) {
05036: return GNode.create("AdditiveExpression", v$1,
05037: v$g$2, v$g$3);
05038: }
05039: };
05040:
05041: return yyResult.createValue(yyValue, yyError);
05042: }
05043: }
05044:
05045: // Done.
05046: return yyError;
05047: }
05048:
05049: // =========================================================================
05050:
05051: /**
05052: * Parse nonterminal xtc.lang.JavaPattern.AdditiveOperator.
05053: *
05054: * @param yyStart The index.
05055: * @return The result.
05056: * @throws IOException Signals an I/O error.
05057: */
05058: private Result pAdditiveOperator(final int yyStart)
05059: throws IOException {
05060: Result yyResult;
05061: String yyValue;
05062: ParseError yyError = ParseError.DUMMY;
05063:
05064: // Alternative <Plus>.
05065:
05066: yyResult = pSymbol(yyStart);
05067: yyError = yyResult.select(yyError);
05068: if (yyResult.hasValue("+")) {
05069: yyValue = "+";
05070:
05071: return yyResult.createValue(yyValue, yyError);
05072: }
05073:
05074: // Alternative <Minus>.
05075:
05076: yyResult = pSymbol(yyStart);
05077: yyError = yyResult.select(yyError);
05078: if (yyResult.hasValue("-")) {
05079: yyValue = "-";
05080:
05081: return yyResult.createValue(yyValue, yyError);
05082: }
05083:
05084: // Done.
05085: yyError = yyError.select("additive operator expected", yyStart);
05086: return yyError;
05087: }
05088:
05089: // =========================================================================
05090:
05091: /**
05092: * Parse nonterminal xtc.lang.JavaPattern.MultiplicativeExpression.
05093: *
05094: * @param yyStart The index.
05095: * @return The result.
05096: * @throws IOException Signals an I/O error.
05097: */
05098: private Result pMultiplicativeExpression(final int yyStart)
05099: throws IOException {
05100:
05101: Result yyResult;
05102: int yyRepetition1;
05103: Pair<Action<Node>> yyRepValue1;
05104: Node yyValue;
05105: ParseError yyError = ParseError.DUMMY;
05106:
05107: // Alternative <Base>.
05108:
05109: yyResult = pUnaryExpression(yyStart);
05110: yyError = yyResult.select(yyError);
05111: if (yyResult.hasValue()) {
05112: final Node v$4 = yyResult.semanticValue();
05113:
05114: yyRepetition1 = yyResult.index;
05115: yyRepValue1 = Pair.empty();
05116: while (true) {
05117:
05118: yyResult = pMultiplicativeExpression$$Tail1(yyRepetition1);
05119: yyError = yyResult.select(yyError);
05120: if (yyResult.hasValue()) {
05121: final Action<Node> v$5 = yyResult.semanticValue();
05122:
05123: yyRepetition1 = yyResult.index;
05124: yyRepValue1 = new Pair<Action<Node>>(v$5,
05125: yyRepValue1);
05126: continue;
05127: }
05128: break;
05129: }
05130: { // Start scope for v$6.
05131: final Pair<Action<Node>> v$6 = yyRepValue1.reverse();
05132:
05133: yyValue = apply(v$6, v$4, yyStart);
05134:
05135: return new SemanticValue(yyValue, yyRepetition1,
05136: yyError);
05137: } // End scope for v$6.
05138: }
05139:
05140: // Done.
05141: return yyError;
05142: }
05143:
05144: // =========================================================================
05145:
05146: /**
05147: * Parse synthetic nonterminal
05148: * xtc.lang.JavaFactory.MultiplicativeExpression$$Tail1.
05149: *
05150: * @param yyStart The index.
05151: * @return The result.
05152: * @throws IOException Signals an I/O error.
05153: */
05154: private Result pMultiplicativeExpression$$Tail1(final int yyStart)
05155: throws IOException {
05156:
05157: Result yyResult;
05158: Action<Node> yyValue;
05159: ParseError yyError = ParseError.DUMMY;
05160:
05161: // Alternative <Times>.
05162:
05163: yyResult = pMultiplicativeOperator(yyStart);
05164: yyError = yyResult.select(yyError);
05165: if (yyResult.hasValue()) {
05166: final String v$g$2 = yyResult.semanticValue();
05167:
05168: yyResult = pUnaryExpression(yyResult.index);
05169: yyError = yyResult.select(yyError);
05170: if (yyResult.hasValue()) {
05171: final Node v$g$3 = yyResult.semanticValue();
05172:
05173: yyValue = new Action<Node>() {
05174: public Node run(Node v$1) {
05175: return GNode.create("MultiplicativeExpression",
05176: v$1, v$g$2, v$g$3);
05177: }
05178: };
05179:
05180: return yyResult.createValue(yyValue, yyError);
05181: }
05182: }
05183:
05184: // Done.
05185: return yyError;
05186: }
05187:
05188: // =========================================================================
05189:
05190: /**
05191: * Parse nonterminal xtc.lang.JavaPattern.MultiplicativeOperator.
05192: *
05193: * @param yyStart The index.
05194: * @return The result.
05195: * @throws IOException Signals an I/O error.
05196: */
05197: private Result pMultiplicativeOperator(final int yyStart)
05198: throws IOException {
05199:
05200: Result yyResult;
05201: String yyValue;
05202: ParseError yyError = ParseError.DUMMY;
05203:
05204: // Alternative <Times>.
05205:
05206: yyResult = pSymbol(yyStart);
05207: yyError = yyResult.select(yyError);
05208: if (yyResult.hasValue("*")) {
05209: yyValue = "*";
05210:
05211: return yyResult.createValue(yyValue, yyError);
05212: }
05213:
05214: // Alternative <Over>.
05215:
05216: yyResult = pSymbol(yyStart);
05217: yyError = yyResult.select(yyError);
05218: if (yyResult.hasValue("/")) {
05219: yyValue = "/";
05220:
05221: return yyResult.createValue(yyValue, yyError);
05222: }
05223:
05224: // Alternative <Modulo>.
05225:
05226: yyResult = pSymbol(yyStart);
05227: yyError = yyResult.select(yyError);
05228: if (yyResult.hasValue("%")) {
05229: yyValue = "%";
05230:
05231: return yyResult.createValue(yyValue, yyError);
05232: }
05233:
05234: // Done.
05235: yyError = yyError.select("multiplicative operator expected",
05236: yyStart);
05237: return yyError;
05238: }
05239:
05240: // =========================================================================
05241:
05242: /**
05243: * Parse nonterminal xtc.lang.JavaPattern.UnaryExpression.
05244: *
05245: * @param yyStart The index.
05246: * @return The result.
05247: * @throws IOException Signals an I/O error.
05248: */
05249: private Result pUnaryExpression(final int yyStart)
05250: throws IOException {
05251: Result yyResult;
05252: Node yyValue;
05253: ParseError yyError = ParseError.DUMMY;
05254:
05255: // Alternative <Plus>.
05256:
05257: yyResult = pSymbol(yyStart);
05258: yyError = yyResult.select(yyError);
05259: if (yyResult.hasValue("+")) {
05260: final String v$g$1 = "+";
05261:
05262: yyResult = pUnaryExpression(yyResult.index);
05263: yyError = yyResult.select(yyError);
05264: if (yyResult.hasValue()) {
05265: final Node v$g$2 = yyResult.semanticValue();
05266:
05267: yyValue = GNode.create("UnaryExpression", v$g$1, v$g$2);
05268: yyValue.setLocation(location(yyStart));
05269:
05270: return yyResult.createValue(yyValue, yyError);
05271: }
05272: }
05273:
05274: // Alternative <Minus>.
05275:
05276: yyResult = pSymbol(yyStart);
05277: yyError = yyResult.select(yyError);
05278: if (yyResult.hasValue("-")) {
05279: final String v$g$3 = "-";
05280:
05281: yyResult = pUnaryExpression(yyResult.index);
05282: yyError = yyResult.select(yyError);
05283: if (yyResult.hasValue()) {
05284: final Node v$g$4 = yyResult.semanticValue();
05285:
05286: yyValue = GNode.create("UnaryExpression", v$g$3, v$g$4);
05287: yyValue.setLocation(location(yyStart));
05288:
05289: return yyResult.createValue(yyValue, yyError);
05290: }
05291: }
05292:
05293: // Alternative <Increment>.
05294:
05295: yyResult = pSymbol(yyStart);
05296: yyError = yyResult.select(yyError);
05297: if (yyResult.hasValue("++")) {
05298: final String v$g$5 = "++";
05299:
05300: yyResult = pUnaryExpression(yyResult.index);
05301: yyError = yyResult.select(yyError);
05302: if (yyResult.hasValue()) {
05303: final Node v$g$6 = yyResult.semanticValue();
05304:
05305: yyValue = GNode.create("UnaryExpression", v$g$5, v$g$6);
05306: yyValue.setLocation(location(yyStart));
05307:
05308: return yyResult.createValue(yyValue, yyError);
05309: }
05310: }
05311:
05312: // Alternative <Decrement>.
05313:
05314: yyResult = pSymbol(yyStart);
05315: yyError = yyResult.select(yyError);
05316: if (yyResult.hasValue("--")) {
05317: final String v$g$7 = "--";
05318:
05319: yyResult = pUnaryExpression(yyResult.index);
05320: yyError = yyResult.select(yyError);
05321: if (yyResult.hasValue()) {
05322: final Node v$g$8 = yyResult.semanticValue();
05323:
05324: yyValue = GNode.create("UnaryExpression", v$g$7, v$g$8);
05325: yyValue.setLocation(location(yyStart));
05326:
05327: return yyResult.createValue(yyValue, yyError);
05328: }
05329: }
05330:
05331: // Alternative <Base>.
05332:
05333: yyResult = pUnaryExpressionNotPlusMinus(yyStart);
05334: yyError = yyResult.select(yyError);
05335: if (yyResult.hasValue()) {
05336: yyValue = yyResult.semanticValue();
05337:
05338: return yyResult.createValue(yyValue, yyError);
05339: }
05340:
05341: // Done.
05342: yyError = yyError.select("unary expression expected", yyStart);
05343: return yyError;
05344: }
05345:
05346: // =========================================================================
05347:
05348: /**
05349: * Parse nonterminal xtc.lang.JavaPattern.UnaryExpressionNotPlusMinus.
05350: *
05351: * @param yyStart The index.
05352: * @return The result.
05353: * @throws IOException Signals an I/O error.
05354: */
05355: private Result pUnaryExpressionNotPlusMinus(final int yyStart)
05356: throws IOException {
05357:
05358: Result yyResult;
05359: int yyBase;
05360: int yyOption1;
05361: Node yyOpValue1;
05362: Node yyValue;
05363: ParseError yyError = ParseError.DUMMY;
05364:
05365: // Alternative 1.
05366:
05367: yyResult = pSymbol(yyStart);
05368: yyError = yyResult.select(yyError);
05369: if (yyResult.hasValue("~")) {
05370:
05371: yyResult = pUnaryExpression(yyResult.index);
05372: yyError = yyResult.select(yyError);
05373: if (yyResult.hasValue()) {
05374: final Node v$g$1 = yyResult.semanticValue();
05375:
05376: yyValue = GNode.create("BitwiseNegationExpression",
05377: v$g$1);
05378: yyValue.setLocation(location(yyStart));
05379:
05380: return yyResult.createValue(yyValue, yyError);
05381: }
05382: }
05383:
05384: // Alternative 2.
05385:
05386: yyResult = pSymbol(yyStart);
05387: yyError = yyResult.select(yyError);
05388: if (yyResult.hasValue("!")) {
05389:
05390: yyResult = pUnaryExpression(yyResult.index);
05391: yyError = yyResult.select(yyError);
05392: if (yyResult.hasValue()) {
05393: final Node v$g$1 = yyResult.semanticValue();
05394:
05395: yyValue = GNode.create("LogicalNegationExpression",
05396: v$g$1);
05397: yyValue.setLocation(location(yyStart));
05398:
05399: return yyResult.createValue(yyValue, yyError);
05400: }
05401: }
05402:
05403: // Alternative 3.
05404:
05405: yyResult = pSymbol(yyStart);
05406: yyError = yyResult.select(yyError);
05407: if (yyResult.hasValue("(")) {
05408:
05409: final int yyChoice1 = yyResult.index;
05410:
05411: // Nested alternative 1.
05412:
05413: yyResult = pPrimitiveType(yyChoice1);
05414: yyError = yyResult.select(yyError);
05415: if (yyResult.hasValue()) {
05416: final Node v$g$1 = yyResult.semanticValue();
05417:
05418: yyOption1 = yyResult.index;
05419: yyOpValue1 = null;
05420:
05421: yyResult = pDimensions(yyOption1);
05422: yyError = yyResult.select(yyError);
05423: if (yyResult.hasValue()) {
05424: final Node v$el$1 = yyResult.semanticValue();
05425:
05426: yyOption1 = yyResult.index;
05427: yyOpValue1 = v$el$1;
05428: }
05429: { // Start scope for v$g$2.
05430: final Node v$g$2 = yyOpValue1;
05431:
05432: yyBase = yyOption1;
05433: yyResult = pSymbol(yyBase);
05434: yyError = yyResult.select(yyError);
05435: if (yyResult.hasValue(")")) {
05436:
05437: yyResult = pUnaryExpression(yyResult.index);
05438: yyError = yyResult.select(yyError);
05439: if (yyResult.hasValue()) {
05440: final Node v$g$3 = yyResult.semanticValue();
05441:
05442: yyValue = GNode.create(
05443: "BasicCastExpression", v$g$1,
05444: v$g$2, v$g$3);
05445: yyValue.setLocation(location(yyStart));
05446:
05447: return yyResult.createValue(yyValue,
05448: yyError);
05449: }
05450: } else {
05451: yyError = yyError.select("\")\" expected",
05452: yyBase);
05453: }
05454: } // End scope for v$g$2.
05455: }
05456:
05457: // Nested alternative 2.
05458:
05459: yyResult = pType(yyChoice1);
05460: yyError = yyResult.select(yyError);
05461: if (yyResult.hasValue()) {
05462: final Node v$g$1 = yyResult.semanticValue();
05463:
05464: yyBase = yyResult.index;
05465: yyResult = pSymbol(yyBase);
05466: yyError = yyResult.select(yyError);
05467: if (yyResult.hasValue(")")) {
05468:
05469: yyResult = pUnaryExpressionNotPlusMinus(yyResult.index);
05470: yyError = yyResult.select(yyError);
05471: if (yyResult.hasValue()) {
05472: final Node v$g$2 = yyResult.semanticValue();
05473:
05474: yyValue = GNode.create("CastExpression", v$g$1,
05475: v$g$2);
05476: yyValue.setLocation(location(yyStart));
05477:
05478: return yyResult.createValue(yyValue, yyError);
05479: }
05480: } else {
05481: yyError = yyError.select("\")\" expected", yyBase);
05482: }
05483: }
05484: }
05485:
05486: // Alternative <Base>.
05487:
05488: yyResult = pPostfixExpression(yyStart);
05489: yyError = yyResult.select(yyError);
05490: if (yyResult.hasValue()) {
05491: yyValue = yyResult.semanticValue();
05492:
05493: return yyResult.createValue(yyValue, yyError);
05494: }
05495:
05496: // Done.
05497: yyError = yyError.select(
05498: "unary expression not plus minus expected", yyStart);
05499: return yyError;
05500: }
05501:
05502: // =========================================================================
05503:
05504: /**
05505: * Parse nonterminal xtc.lang.JavaPattern.PostfixExpression.
05506: *
05507: * @param yyStart The index.
05508: * @return The result.
05509: * @throws IOException Signals an I/O error.
05510: */
05511: private Result pPostfixExpression(final int yyStart)
05512: throws IOException {
05513: Result yyResult;
05514: int yyRepetition1;
05515: Pair<Action<Node>> yyRepValue1;
05516: Node yyValue;
05517: ParseError yyError = ParseError.DUMMY;
05518:
05519: // Alternative <Base>.
05520:
05521: yyResult = pPrimaryExpression(yyStart);
05522: yyError = yyResult.select(yyError);
05523: if (yyResult.hasValue()) {
05524: final Node v$g$16 = yyResult.semanticValue();
05525:
05526: yyRepetition1 = yyResult.index;
05527: yyRepValue1 = Pair.empty();
05528: while (true) {
05529:
05530: yyResult = pPostfixExpression$$Tail1(yyRepetition1);
05531: yyError = yyResult.select(yyError);
05532: if (yyResult.hasValue()) {
05533: final Action<Node> v$17 = yyResult.semanticValue();
05534:
05535: yyRepetition1 = yyResult.index;
05536: yyRepValue1 = new Pair<Action<Node>>(v$17,
05537: yyRepValue1);
05538: continue;
05539: }
05540: break;
05541: }
05542: { // Start scope for v$18.
05543: final Pair<Action<Node>> v$18 = yyRepValue1.reverse();
05544:
05545: yyValue = apply(v$18, v$g$16, yyStart);
05546:
05547: return new SemanticValue(yyValue, yyRepetition1,
05548: yyError);
05549: } // End scope for v$18.
05550: }
05551:
05552: // Done.
05553: return yyError;
05554: }
05555:
05556: // =========================================================================
05557:
05558: /**
05559: * Parse synthetic nonterminal
05560: * xtc.lang.JavaFactory.PostfixExpression$$Tail1.
05561: *
05562: * @param yyStart The index.
05563: * @return The result.
05564: * @throws IOException Signals an I/O error.
05565: */
05566: private Result pPostfixExpression$$Tail1(final int yyStart)
05567: throws IOException {
05568:
05569: Result yyResult;
05570: int yyBase;
05571: int yyOption1;
05572: Node yyOpValue1;
05573: Action<Node> yyValue;
05574: ParseError yyError = ParseError.DUMMY;
05575:
05576: // Alternative 1.
05577:
05578: yyResult = pSymbol(yyStart);
05579: yyError = yyResult.select(yyError);
05580: if (yyResult.hasValue(".")) {
05581:
05582: final int yyChoice1 = yyResult.index;
05583:
05584: // Nested alternative 1.
05585:
05586: yyOption1 = yyChoice1;
05587: yyOpValue1 = null;
05588:
05589: yyResult = pTypeArguments(yyOption1);
05590: yyError = yyResult.select(yyError);
05591: if (yyResult.hasValue()) {
05592: final Node v$el$1 = yyResult.semanticValue();
05593:
05594: yyOption1 = yyResult.index;
05595: yyOpValue1 = v$el$1;
05596: }
05597: { // Start scope for v$g$2.
05598: final Node v$g$2 = yyOpValue1;
05599:
05600: yyResult = pName(yyOption1);
05601: yyError = yyResult.select(yyError);
05602: if (yyResult.hasValue()) {
05603: final Object v$g$3 = yyResult.semanticValue();
05604:
05605: yyResult = pArguments(yyResult.index);
05606: yyError = yyResult.select(yyError);
05607: if (yyResult.hasValue()) {
05608: final Node v$g$4 = yyResult.semanticValue();
05609:
05610: yyValue = new Action<Node>() {
05611: public Node run(Node v$1) {
05612: return GNode.create("CallExpression",
05613: v$1, v$g$2, v$g$3, v$g$4);
05614: }
05615: };
05616:
05617: return yyResult.createValue(yyValue, yyError);
05618: }
05619: }
05620: } // End scope for v$g$2.
05621:
05622: // Nested alternative 2.
05623:
05624: yyBase = yyChoice1;
05625: yyResult = pWord(yyBase);
05626: yyError = yyResult.select(yyError);
05627: if (yyResult.hasValue("super")) {
05628: final String v$g$6 = "super";
05629:
05630: yyResult = pArguments(yyResult.index);
05631: yyError = yyResult.select(yyError);
05632: if (yyResult.hasValue()) {
05633: final Node v$g$7 = yyResult.semanticValue();
05634:
05635: yyValue = new Action<Node>() {
05636: public Node run(Node v$1) {
05637: return GNode.create("CallExpression", v$1,
05638: null, v$g$6, v$g$7);
05639: }
05640: };
05641:
05642: return yyResult.createValue(yyValue, yyError);
05643: }
05644: } else {
05645: yyError = yyError.select("\"super\" expected", yyBase);
05646: }
05647:
05648: // Nested alternative 3.
05649:
05650: yyBase = yyChoice1;
05651: yyResult = pWord(yyBase);
05652: yyError = yyResult.select(yyError);
05653: if (yyResult.hasValue("super")) {
05654:
05655: yyValue = new Action<Node>() {
05656: public Node run(Node v$1) {
05657: return GNode.create("SuperExpression", v$1);
05658: }
05659: };
05660:
05661: return yyResult.createValue(yyValue, yyError);
05662: } else {
05663: yyError = yyError.select("\"super\" expected", yyBase);
05664: }
05665:
05666: // Nested alternative 4.
05667:
05668: yyResult = pName(yyChoice1);
05669: yyError = yyResult.select(yyError);
05670: if (yyResult.hasValue()) {
05671: final Object v$g$8 = yyResult.semanticValue();
05672:
05673: yyValue = new Action<Node>() {
05674: public Node run(Node v$1) {
05675: return GNode.create("SelectionExpression", v$1,
05676: v$g$8);
05677: }
05678: };
05679:
05680: return yyResult.createValue(yyValue, yyError);
05681: }
05682: }
05683:
05684: // Alternative 2.
05685:
05686: yyResult = pSymbol(yyStart);
05687: yyError = yyResult.select(yyError);
05688: if (yyResult.hasValue("[")) {
05689:
05690: yyResult = pExpression(yyResult.index);
05691: yyError = yyResult.select(yyError);
05692: if (yyResult.hasValue()) {
05693: final Node v$g$9 = yyResult.semanticValue();
05694:
05695: yyBase = yyResult.index;
05696: yyResult = pSymbol(yyBase);
05697: yyError = yyResult.select(yyError);
05698: if (yyResult.hasValue("]")) {
05699:
05700: yyValue = new Action<Node>() {
05701: public Node run(Node v$1) {
05702: return GNode.create("SubscriptExpression",
05703: v$1, v$g$9);
05704: }
05705: };
05706:
05707: return yyResult.createValue(yyValue, yyError);
05708: } else {
05709: yyError = yyError.select("\"]\" expected", yyBase);
05710: }
05711: }
05712: }
05713:
05714: // Alternative 3.
05715:
05716: yyResult = pSymbol(yyStart);
05717: yyError = yyResult.select(yyError);
05718: if (yyResult.hasValue("++")) {
05719: final String v$g$10 = "++";
05720:
05721: yyValue = new Action<Node>() {
05722: public Node run(Node v$1) {
05723: return GNode.create("PostfixExpression", v$1,
05724: v$g$10);
05725: }
05726: };
05727:
05728: return yyResult.createValue(yyValue, yyError);
05729: }
05730:
05731: // Alternative 4.
05732:
05733: yyResult = pSymbol(yyStart);
05734: yyError = yyResult.select(yyError);
05735: if (yyResult.hasValue("--")) {
05736: final String v$g$11 = "--";
05737:
05738: yyValue = new Action<Node>() {
05739: public Node run(Node v$1) {
05740: return GNode.create("PostfixExpression", v$1,
05741: v$g$11);
05742: }
05743: };
05744:
05745: return yyResult.createValue(yyValue, yyError);
05746: }
05747:
05748: // Alternative 5.
05749:
05750: yyResult = pSymbol(yyStart);
05751: yyError = yyResult.select(yyError);
05752: if (yyResult.hasValue(".")) {
05753:
05754: yyBase = yyResult.index;
05755: yyResult = pWord(yyBase);
05756: yyError = yyResult.select(yyError);
05757: if (yyResult.hasValue("new")) {
05758:
05759: yyOption1 = yyResult.index;
05760: yyOpValue1 = null;
05761:
05762: yyResult = pTypeArguments(yyOption1);
05763: yyError = yyResult.select(yyError);
05764: if (yyResult.hasValue()) {
05765: final Node v$el$2 = yyResult.semanticValue();
05766:
05767: yyOption1 = yyResult.index;
05768: yyOpValue1 = v$el$2;
05769: }
05770: { // Start scope for v$g$12.
05771: final Node v$g$12 = yyOpValue1;
05772:
05773: yyResult = pTypeName(yyOption1);
05774: yyError = yyResult.select(yyError);
05775: if (yyResult.hasValue()) {
05776: final Node v$g$13 = yyResult.semanticValue();
05777:
05778: yyResult = pArguments(yyResult.index);
05779: yyError = yyResult.select(yyError);
05780: if (yyResult.hasValue()) {
05781: final Node v$g$14 = yyResult
05782: .semanticValue();
05783:
05784: yyOption1 = yyResult.index;
05785: yyOpValue1 = null;
05786:
05787: yyResult = pClassBody(yyOption1);
05788: yyError = yyResult.select(yyError);
05789: if (yyResult.hasValue()) {
05790: final Node v$el$3 = yyResult
05791: .semanticValue();
05792:
05793: yyOption1 = yyResult.index;
05794: yyOpValue1 = v$el$3;
05795: }
05796: { // Start scope for v$g$15.
05797: final Node v$g$15 = yyOpValue1;
05798:
05799: yyValue = new Action<Node>() {
05800: public Node run(Node v$1) {
05801: return GNode.create(
05802: "NewClassExpression",
05803: v$1, v$g$12, v$g$13,
05804: v$g$14, v$g$15);
05805: }
05806: };
05807:
05808: return new SemanticValue(yyValue,
05809: yyOption1, yyError);
05810: } // End scope for v$g$15.
05811: }
05812: }
05813: } // End scope for v$g$12.
05814: } else {
05815: yyError = yyError.select("\"new\" expected", yyBase);
05816: }
05817: }
05818:
05819: // Done.
05820: yyError = yyError
05821: .select("postfix expression expected", yyStart);
05822: return yyError;
05823: }
05824:
05825: // =========================================================================
05826:
05827: /**
05828: * Parse nonterminal xtc.lang.JavaPattern.PrimaryExpression.
05829: *
05830: * @param yyStart The index.
05831: * @return The result.
05832: * @throws IOException Signals an I/O error.
05833: */
05834: private Result pPrimaryExpression(final int yyStart)
05835: throws IOException {
05836: Result yyResult;
05837: int yyBase;
05838: int yyOption1;
05839: Node yyOpValue1;
05840: Node yyValue;
05841: ParseError yyError = ParseError.DUMMY;
05842:
05843: // Alternative <Literal>.
05844:
05845: yyResult = pLiteral(yyStart);
05846: yyError = yyResult.select(yyError);
05847: if (yyResult.hasValue()) {
05848: yyValue = yyResult.semanticValue();
05849:
05850: return yyResult.createValue(yyValue, yyError);
05851: }
05852:
05853: // Alternative <Expression>.
05854:
05855: yyOption1 = yyStart;
05856: yyOpValue1 = null;
05857:
05858: yyResult = pTypeArguments(yyOption1);
05859: yyError = yyResult.select(yyError);
05860: if (yyResult.hasValue()) {
05861: final Node v$el$1 = yyResult.semanticValue();
05862:
05863: yyOption1 = yyResult.index;
05864: yyOpValue1 = v$el$1;
05865: }
05866: { // Start scope for v$g$2.
05867: final Node v$g$2 = yyOpValue1;
05868:
05869: yyResult = pName(yyOption1);
05870: yyError = yyResult.select(yyError);
05871: if (yyResult.hasValue()) {
05872: final Object v$g$3 = yyResult.semanticValue();
05873:
05874: yyResult = pArguments(yyResult.index);
05875: yyError = yyResult.select(yyError);
05876: if (yyResult.hasValue()) {
05877: final Node v$g$4 = yyResult.semanticValue();
05878:
05879: yyValue = GNode.create("CallExpression", null,
05880: v$g$2, v$g$3, v$g$4);
05881: yyValue.setLocation(location(yyStart));
05882:
05883: return yyResult.createValue(yyValue, yyError);
05884: }
05885: }
05886: } // End scope for v$g$2.
05887:
05888: // Alternative <Expression>.
05889:
05890: yyResult = pResultType(yyStart);
05891: yyError = yyResult.select(yyError);
05892: if (yyResult.hasValue()) {
05893: final Node v$g$1 = yyResult.semanticValue();
05894:
05895: yyBase = yyResult.index;
05896: yyResult = pSymbol(yyBase);
05897: yyError = yyResult.select(yyError);
05898: if (yyResult.hasValue(".")) {
05899:
05900: yyBase = yyResult.index;
05901: yyResult = pWord(yyBase);
05902: yyError = yyResult.select(yyError);
05903: if (yyResult.hasValue("class")) {
05904:
05905: yyValue = GNode.create("ClassLiteralExpression",
05906: v$g$1);
05907: yyValue.setLocation(location(yyStart));
05908:
05909: return yyResult.createValue(yyValue, yyError);
05910: } else {
05911: yyError = yyError.select("\"class\" expected",
05912: yyBase);
05913: }
05914: } else {
05915: yyError = yyError.select("\".\" expected", yyBase);
05916: }
05917: }
05918:
05919: // Alternative <Expression>.
05920:
05921: yyResult = pWord(yyStart);
05922: yyError = yyResult.select(yyError);
05923: if (yyResult.hasValue("this")) {
05924: final String v$g$3 = "this";
05925:
05926: yyResult = pArguments(yyResult.index);
05927: yyError = yyResult.select(yyError);
05928: if (yyResult.hasValue()) {
05929: final Node v$g$4 = yyResult.semanticValue();
05930:
05931: yyValue = GNode.create("CallExpression", null, null,
05932: v$g$3, v$g$4);
05933: yyValue.setLocation(location(yyStart));
05934:
05935: return yyResult.createValue(yyValue, yyError);
05936: }
05937: }
05938:
05939: // Alternative <Expression>.
05940:
05941: yyOption1 = yyStart;
05942: yyOpValue1 = null;
05943:
05944: yyResult = pQualifiedIdentifier(yyOption1);
05945: yyError = yyResult.select(yyError);
05946: if (yyResult.hasValue()) {
05947: final Node v$el$1 = yyResult.semanticValue();
05948:
05949: yyBase = yyResult.index;
05950: yyResult = pSymbol(yyBase);
05951: yyError = yyResult.select(yyError);
05952: if (yyResult.hasValue(".")) {
05953:
05954: yyOption1 = yyResult.index;
05955: yyOpValue1 = v$el$1;
05956: } else {
05957: yyError = yyError.select("\".\" expected", yyBase);
05958: }
05959: }
05960: { // Start scope for v$g$1.
05961: final Node v$g$1 = yyOpValue1;
05962:
05963: yyBase = yyOption1;
05964: yyResult = pWord(yyBase);
05965: yyError = yyResult.select(yyError);
05966: if (yyResult.hasValue("this")) {
05967:
05968: yyValue = GNode.create("ThisExpression", v$g$1);
05969: yyValue.setLocation(location(yyStart));
05970:
05971: return yyResult.createValue(yyValue, yyError);
05972: } else {
05973: yyError = yyError.select("\"this\" expected", yyBase);
05974: }
05975: } // End scope for v$g$1.
05976:
05977: // Alternative 6.
05978: { // Start scope for nested choice.
05979:
05980: final int yyChoice1 = yyStart;
05981:
05982: // Nested alternative 1.
05983:
05984: yyResult = pWord(yyChoice1);
05985: yyError = yyResult.select(yyError);
05986: if (yyResult.hasValue("super")) {
05987: final String v$g$3 = "super";
05988:
05989: yyResult = pArguments(yyResult.index);
05990: yyError = yyResult.select(yyError);
05991: if (yyResult.hasValue()) {
05992: final Node v$g$4 = yyResult.semanticValue();
05993:
05994: yyValue = GNode.create("CallExpression", null,
05995: null, v$g$3, v$g$4);
05996: yyValue.setLocation(location(yyStart));
05997:
05998: return yyResult.createValue(yyValue, yyError);
05999: }
06000: }
06001:
06002: // Nested alternative 2.
06003:
06004: yyBase = yyChoice1;
06005: yyResult = pWord(yyBase);
06006: yyError = yyResult.select(yyError);
06007: if (yyResult.hasValue("super")) {
06008:
06009: yyValue = GNode.create("SuperExpression", null);
06010: yyValue.setLocation(location(yyStart));
06011:
06012: return yyResult.createValue(yyValue, yyError);
06013: } else {
06014: yyError = yyError.select("\"super\" expected", yyBase);
06015: }
06016: } // End scope for nested choice.
06017:
06018: // Alternative 7.
06019:
06020: yyResult = pIdentifier(yyStart);
06021: yyError = yyResult.select(yyError);
06022: if (yyResult.hasValue()) {
06023: final String v$g$1 = yyResult.semanticValue();
06024:
06025: yyValue = GNode.create("PrimaryIdentifier", v$g$1);
06026: yyValue.setLocation(location(yyStart));
06027:
06028: return yyResult.createValue(yyValue, yyError);
06029: }
06030:
06031: // Alternative <Expression>.
06032:
06033: yyResult = pWord(yyStart);
06034: yyError = yyResult.select(yyError);
06035: if (yyResult.hasValue("new")) {
06036:
06037: yyOption1 = yyResult.index;
06038: yyOpValue1 = null;
06039:
06040: yyResult = pTypeArguments(yyOption1);
06041: yyError = yyResult.select(yyError);
06042: if (yyResult.hasValue()) {
06043: final Node v$el$1 = yyResult.semanticValue();
06044:
06045: yyOption1 = yyResult.index;
06046: yyOpValue1 = v$el$1;
06047: }
06048: { // Start scope for v$g$2.
06049: final Node v$g$2 = yyOpValue1;
06050:
06051: yyResult = pTypeName(yyOption1);
06052: yyError = yyResult.select(yyError);
06053: if (yyResult.hasValue()) {
06054: final Node v$g$3 = yyResult.semanticValue();
06055:
06056: yyResult = pArguments(yyResult.index);
06057: yyError = yyResult.select(yyError);
06058: if (yyResult.hasValue()) {
06059: final Node v$g$4 = yyResult.semanticValue();
06060:
06061: yyOption1 = yyResult.index;
06062: yyOpValue1 = null;
06063:
06064: yyResult = pClassBody(yyOption1);
06065: yyError = yyResult.select(yyError);
06066: if (yyResult.hasValue()) {
06067: final Node v$el$2 = yyResult
06068: .semanticValue();
06069:
06070: yyOption1 = yyResult.index;
06071: yyOpValue1 = v$el$2;
06072: }
06073: { // Start scope for v$g$5.
06074: final Node v$g$5 = yyOpValue1;
06075:
06076: yyValue = GNode.create(
06077: "NewClassExpression", null, v$g$2,
06078: v$g$3, v$g$4, v$g$5);
06079: yyValue.setLocation(location(yyStart));
06080:
06081: return new SemanticValue(yyValue,
06082: yyOption1, yyError);
06083: } // End scope for v$g$5.
06084: }
06085: }
06086: } // End scope for v$g$2.
06087: }
06088:
06089: // Alternative 9.
06090:
06091: yyResult = pWord(yyStart);
06092: yyError = yyResult.select(yyError);
06093: if (yyResult.hasValue("new")) {
06094:
06095: yyResult = pTypeName(yyResult.index);
06096: yyError = yyResult.select(yyError);
06097: if (yyResult.hasValue()) {
06098: final Node v$g$1 = yyResult.semanticValue();
06099:
06100: final int yyChoice1 = yyResult.index;
06101:
06102: // Nested alternative 1.
06103:
06104: yyResult = pConcreteDimensions(yyChoice1);
06105: yyError = yyResult.select(yyError);
06106: if (yyResult.hasValue()) {
06107: final Node v$g$2 = yyResult.semanticValue();
06108:
06109: yyOption1 = yyResult.index;
06110: yyOpValue1 = null;
06111:
06112: yyResult = pDimensions(yyOption1);
06113: yyError = yyResult.select(yyError);
06114: if (yyResult.hasValue()) {
06115: final Node v$el$1 = yyResult.semanticValue();
06116:
06117: yyOption1 = yyResult.index;
06118: yyOpValue1 = v$el$1;
06119: }
06120: { // Start scope for v$g$3.
06121: final Node v$g$3 = yyOpValue1;
06122:
06123: yyValue = GNode.create("NewArrayExpression",
06124: v$g$1, v$g$2, v$g$3, null);
06125: yyValue.setLocation(location(yyStart));
06126:
06127: return new SemanticValue(yyValue, yyOption1,
06128: yyError);
06129: } // End scope for v$g$3.
06130: }
06131:
06132: // Nested alternative 2.
06133:
06134: yyOption1 = yyChoice1;
06135: yyOpValue1 = null;
06136:
06137: yyResult = pDimensions(yyOption1);
06138: yyError = yyResult.select(yyError);
06139: if (yyResult.hasValue()) {
06140: final Node v$el$2 = yyResult.semanticValue();
06141:
06142: yyOption1 = yyResult.index;
06143: yyOpValue1 = v$el$2;
06144: }
06145: { // Start scope for v$g$6.
06146: final Node v$g$6 = yyOpValue1;
06147:
06148: yyResult = pArrayInitializer(yyOption1);
06149: yyError = yyResult.select(yyError);
06150: if (yyResult.hasValue()) {
06151: final Node v$g$7 = yyResult.semanticValue();
06152:
06153: yyValue = GNode.create("NewArrayExpression",
06154: v$g$1, null, v$g$6, v$g$7);
06155: yyValue.setLocation(location(yyStart));
06156:
06157: return yyResult.createValue(yyValue, yyError);
06158: }
06159: } // End scope for v$g$6.
06160: }
06161: }
06162:
06163: // Alternative <Nested>.
06164:
06165: yyResult = pSymbol(yyStart);
06166: yyError = yyResult.select(yyError);
06167: if (yyResult.hasValue("(")) {
06168:
06169: yyResult = pExpression(yyResult.index);
06170: yyError = yyResult.select(yyError);
06171: if (yyResult.hasValue()) {
06172: yyValue = yyResult.semanticValue();
06173:
06174: yyBase = yyResult.index;
06175: yyResult = pSymbol(yyBase);
06176: yyError = yyResult.select(yyError);
06177: if (yyResult.hasValue(")")) {
06178:
06179: return yyResult.createValue(yyValue, yyError);
06180: } else {
06181: yyError = yyError.select("\")\" expected", yyBase);
06182: }
06183: }
06184: }
06185:
06186: // Alternative <Pattern>.
06187:
06188: yyResult = pJavaPattern$NodeVariable(yyStart);
06189: yyError = yyResult.select(yyError);
06190: if (yyResult.hasValue()) {
06191: yyValue = yyResult.semanticValue();
06192:
06193: return yyResult.createValue(yyValue, yyError);
06194: }
06195:
06196: // Done.
06197: yyError = yyError
06198: .select("primary expression expected", yyStart);
06199: return yyError;
06200: }
06201:
06202: // =========================================================================
06203:
06204: /**
06205: * Parse nonterminal xtc.lang.JavaPattern.ConcreteDimensions.
06206: *
06207: * @param yyStart The index.
06208: * @return The result.
06209: * @throws IOException Signals an I/O error.
06210: */
06211: private Result pConcreteDimensions(final int yyStart)
06212: throws IOException {
06213: Result yyResult;
06214: int yyRepetition1;
06215: boolean yyRepeated1;
06216: Pair<Node> yyRepValue1;
06217: Node yyValue;
06218: ParseError yyError = ParseError.DUMMY;
06219:
06220: // Alternative 1.
06221:
06222: yyRepetition1 = yyStart;
06223: yyRepeated1 = false;
06224: yyRepValue1 = Pair.empty();
06225: while (true) {
06226:
06227: yyResult = pConcreteDimension(yyRepetition1);
06228: yyError = yyResult.select(yyError);
06229: if (yyResult.hasValue()) {
06230: final Node v$el$1 = yyResult.semanticValue();
06231:
06232: yyRepetition1 = yyResult.index;
06233: yyRepeated1 = true;
06234: yyRepValue1 = new Pair<Node>(v$el$1, yyRepValue1);
06235: continue;
06236: }
06237: break;
06238: }
06239:
06240: if (yyRepeated1) {
06241: final Pair<Node> v$g$1 = yyRepValue1.reverse();
06242:
06243: yyValue = GNode.createFromPair("ConcreteDimensions", v$g$1);
06244: yyValue.setLocation(location(yyStart));
06245:
06246: return new SemanticValue(yyValue, yyRepetition1, yyError);
06247: }
06248:
06249: // Done.
06250: return yyError;
06251: }
06252:
06253: // =========================================================================
06254:
06255: /**
06256: * Parse nonterminal xtc.lang.JavaPattern.ConcreteDimension.
06257: *
06258: * @param yyStart The index.
06259: * @return The result.
06260: * @throws IOException Signals an I/O error.
06261: */
06262: private Result pConcreteDimension(final int yyStart)
06263: throws IOException {
06264: Result yyResult;
06265: int yyBase;
06266: Node yyValue;
06267: ParseError yyError = ParseError.DUMMY;
06268:
06269: // Alternative 1.
06270:
06271: yyResult = pSymbol(yyStart);
06272: yyError = yyResult.select(yyError);
06273: if (yyResult.hasValue("[")) {
06274:
06275: yyResult = pExpression(yyResult.index);
06276: yyError = yyResult.select(yyError);
06277: if (yyResult.hasValue()) {
06278: yyValue = yyResult.semanticValue();
06279:
06280: yyBase = yyResult.index;
06281: yyResult = pSymbol(yyBase);
06282: yyError = yyResult.select(yyError);
06283: if (yyResult.hasValue("]")) {
06284:
06285: return yyResult.createValue(yyValue, yyError);
06286: } else {
06287: yyError = yyError.select("\"]\" expected", yyBase);
06288: }
06289: }
06290: }
06291:
06292: // Done.
06293: yyError = yyError
06294: .select("concrete dimension expected", yyStart);
06295: return yyError;
06296: }
06297:
06298: // =========================================================================
06299:
06300: /**
06301: * Parse nonterminal xtc.lang.JavaPattern.ArrayInitializer.
06302: *
06303: * @param yyStart The index.
06304: * @return The result.
06305: * @throws IOException Signals an I/O error.
06306: */
06307: private Result pArrayInitializer(final int yyStart)
06308: throws IOException {
06309: Result yyResult;
06310: int yyBase;
06311: int yyRepetition1;
06312: Pair<Node> yyRepValue1;
06313: int yyOption1;
06314: Node yyValue;
06315: ParseError yyError = ParseError.DUMMY;
06316:
06317: // Alternative 1.
06318:
06319: yyResult = pSymbol(yyStart);
06320: yyError = yyResult.select(yyError);
06321: if (yyResult.hasValue("{")) {
06322:
06323: final int yyChoice1 = yyResult.index;
06324:
06325: // Nested alternative 1.
06326:
06327: yyResult = pVariableInitializer(yyChoice1);
06328: yyError = yyResult.select(yyError);
06329: if (yyResult.hasValue()) {
06330: final Node v$g$1 = yyResult.semanticValue();
06331:
06332: yyRepetition1 = yyResult.index;
06333: yyRepValue1 = Pair.empty();
06334: while (true) {
06335:
06336: yyBase = yyRepetition1;
06337: yyResult = pSymbol(yyBase);
06338: yyError = yyResult.select(yyError);
06339: if (yyResult.hasValue(",")) {
06340:
06341: yyResult = pVariableInitializer(yyResult.index);
06342: yyError = yyResult.select(yyError);
06343: if (yyResult.hasValue()) {
06344: final Node v$el$1 = yyResult
06345: .semanticValue();
06346:
06347: yyRepetition1 = yyResult.index;
06348: yyRepValue1 = new Pair<Node>(v$el$1,
06349: yyRepValue1);
06350: continue;
06351: }
06352: } else {
06353: yyError = yyError.select("\",\" expected",
06354: yyBase);
06355: }
06356: break;
06357: }
06358: { // Start scope for v$g$2.
06359: final Pair<Node> v$g$2 = yyRepValue1.reverse();
06360:
06361: yyOption1 = yyRepetition1;
06362:
06363: yyBase = yyOption1;
06364: yyResult = pSymbol(yyBase);
06365: yyError = yyResult.select(yyError);
06366: if (yyResult.hasValue(",")) {
06367:
06368: yyOption1 = yyResult.index;
06369: } else {
06370: yyError = yyError.select("\",\" expected",
06371: yyBase);
06372: }
06373:
06374: yyBase = yyOption1;
06375: yyResult = pSymbol(yyBase);
06376: yyError = yyResult.select(yyError);
06377: if (yyResult.hasValue("}")) {
06378:
06379: yyValue = GNode.createFromPair(
06380: "ArrayInitializer", v$g$1, v$g$2);
06381: yyValue.setLocation(location(yyStart));
06382:
06383: return yyResult.createValue(yyValue, yyError);
06384: } else {
06385: yyError = yyError.select("\"}\" expected",
06386: yyBase);
06387: }
06388: } // End scope for v$g$2.
06389: }
06390:
06391: // Nested alternative 2.
06392:
06393: yyOption1 = yyChoice1;
06394:
06395: yyBase = yyOption1;
06396: yyResult = pSymbol(yyBase);
06397: yyError = yyResult.select(yyError);
06398: if (yyResult.hasValue(",")) {
06399:
06400: yyOption1 = yyResult.index;
06401: } else {
06402: yyError = yyError.select("\",\" expected", yyBase);
06403: }
06404:
06405: yyBase = yyOption1;
06406: yyResult = pSymbol(yyBase);
06407: yyError = yyResult.select(yyError);
06408: if (yyResult.hasValue("}")) {
06409:
06410: yyValue = GNode.create("ArrayInitializer", false);
06411: yyValue.setLocation(location(yyStart));
06412:
06413: return yyResult.createValue(yyValue, yyError);
06414: } else {
06415: yyError = yyError.select("\"}\" expected", yyBase);
06416: }
06417: }
06418:
06419: // Done.
06420: yyError = yyError.select("array initializer expected", yyStart);
06421: return yyError;
06422: }
06423:
06424: // =========================================================================
06425:
06426: /**
06427: * Parse nonterminal xtc.lang.JavaPattern.VariableInitializer.
06428: *
06429: * @param yyStart The index.
06430: * @return The result.
06431: * @throws IOException Signals an I/O error.
06432: */
06433: private Result pVariableInitializer(final int yyStart)
06434: throws IOException {
06435: JavaFactoryParserColumn yyColumn = (JavaFactoryParserColumn) column(yyStart);
06436: if (null == yyColumn.chunk2)
06437: yyColumn.chunk2 = new Chunk2();
06438: if (null == yyColumn.chunk2.fVariableInitializer)
06439: yyColumn.chunk2.fVariableInitializer = pVariableInitializer$1(yyStart);
06440: return yyColumn.chunk2.fVariableInitializer;
06441: }
06442:
06443: /** Actually parse xtc.lang.JavaPattern.VariableInitializer. */
06444: private Result pVariableInitializer$1(final int yyStart)
06445: throws IOException {
06446:
06447: Result yyResult;
06448: Node yyValue;
06449: ParseError yyError = ParseError.DUMMY;
06450:
06451: // Alternative <Array>.
06452:
06453: yyResult = pArrayInitializer(yyStart);
06454: yyError = yyResult.select(yyError);
06455: if (yyResult.hasValue()) {
06456: yyValue = yyResult.semanticValue();
06457:
06458: return yyResult.createValue(yyValue, yyError);
06459: }
06460:
06461: // Alternative <Expression>.
06462:
06463: yyResult = pExpression(yyStart);
06464: yyError = yyResult.select(yyError);
06465: if (yyResult.hasValue()) {
06466: yyValue = yyResult.semanticValue();
06467:
06468: return yyResult.createValue(yyValue, yyError);
06469: }
06470:
06471: // Done.
06472: return yyError;
06473: }
06474:
06475: // =========================================================================
06476:
06477: /**
06478: * Parse nonterminal xtc.lang.JavaPattern.Arguments.
06479: *
06480: * @param yyStart The index.
06481: * @return The result.
06482: * @throws IOException Signals an I/O error.
06483: */
06484: private Result pArguments(final int yyStart) throws IOException {
06485: Result yyResult;
06486: int yyBase;
06487: int yyRepetition1;
06488: Pair<Node> yyRepValue1;
06489: Node yyValue;
06490: ParseError yyError = ParseError.DUMMY;
06491:
06492: // Alternative 1.
06493:
06494: yyResult = pSymbol(yyStart);
06495: yyError = yyResult.select(yyError);
06496: if (yyResult.hasValue("(")) {
06497:
06498: final int yyChoice1 = yyResult.index;
06499:
06500: // Nested alternative 1.
06501:
06502: yyResult = pNodeListVariable(yyChoice1);
06503: yyError = yyResult.select(yyError);
06504: if (yyResult.hasValue()) {
06505: final Node v$g$1 = yyResult.semanticValue();
06506:
06507: yyBase = yyResult.index;
06508: yyResult = pSymbol(yyBase);
06509: yyError = yyResult.select(yyError);
06510: if (yyResult.hasValue(")")) {
06511:
06512: yyValue = GNode.create("Arguments", v$g$1);
06513: yyValue.setLocation(location(yyStart));
06514:
06515: return yyResult.createValue(yyValue, yyError);
06516: } else {
06517: yyError = yyError.select("\")\" expected", yyBase);
06518: }
06519: }
06520:
06521: // Nested alternative 2.
06522:
06523: yyResult = pExpression(yyChoice1);
06524: yyError = yyResult.select(yyError);
06525: if (yyResult.hasValue()) {
06526: final Node v$g$2 = yyResult.semanticValue();
06527:
06528: yyRepetition1 = yyResult.index;
06529: yyRepValue1 = Pair.empty();
06530: while (true) {
06531:
06532: yyBase = yyRepetition1;
06533: yyResult = pSymbol(yyBase);
06534: yyError = yyResult.select(yyError);
06535: if (yyResult.hasValue(",")) {
06536:
06537: yyResult = pExpression(yyResult.index);
06538: yyError = yyResult.select(yyError);
06539: if (yyResult.hasValue()) {
06540: final Node v$el$1 = yyResult
06541: .semanticValue();
06542:
06543: yyRepetition1 = yyResult.index;
06544: yyRepValue1 = new Pair<Node>(v$el$1,
06545: yyRepValue1);
06546: continue;
06547: }
06548: } else {
06549: yyError = yyError.select("\",\" expected",
06550: yyBase);
06551: }
06552: break;
06553: }
06554: { // Start scope for v$g$3.
06555: final Pair<Node> v$g$3 = yyRepValue1.reverse();
06556:
06557: yyBase = yyRepetition1;
06558: yyResult = pSymbol(yyBase);
06559: yyError = yyResult.select(yyError);
06560: if (yyResult.hasValue(")")) {
06561:
06562: yyValue = GNode.createFromPair("Arguments",
06563: v$g$2, v$g$3);
06564: yyValue.setLocation(location(yyStart));
06565:
06566: return yyResult.createValue(yyValue, yyError);
06567: } else {
06568: yyError = yyError.select("\")\" expected",
06569: yyBase);
06570: }
06571: } // End scope for v$g$3.
06572: }
06573:
06574: // Nested alternative 3.
06575:
06576: yyBase = yyChoice1;
06577: yyResult = pSymbol(yyBase);
06578: yyError = yyResult.select(yyError);
06579: if (yyResult.hasValue(")")) {
06580:
06581: yyValue = GNode.create("Arguments", false);
06582: yyValue.setLocation(location(yyStart));
06583:
06584: return yyResult.createValue(yyValue, yyError);
06585: } else {
06586: yyError = yyError.select("\")\" expected", yyBase);
06587: }
06588: }
06589:
06590: // Done.
06591: yyError = yyError.select("arguments expected", yyStart);
06592: return yyError;
06593: }
06594:
06595: // =========================================================================
06596:
06597: /**
06598: * Parse nonterminal xtc.lang.JavaPattern.VariableModifier.
06599: *
06600: * @param yyStart The index.
06601: * @return The result.
06602: * @throws IOException Signals an I/O error.
06603: */
06604: private Result pVariableModifier(final int yyStart)
06605: throws IOException {
06606: Result yyResult;
06607: Node yyValue;
06608: ParseError yyError = ParseError.DUMMY;
06609:
06610: // Alternative <Final>.
06611:
06612: yyResult = pFinalModifier(yyStart);
06613: yyError = yyResult.select(yyError);
06614: if (yyResult.hasValue()) {
06615: yyValue = yyResult.semanticValue();
06616:
06617: return yyResult.createValue(yyValue, yyError);
06618: }
06619:
06620: // Alternative <Annotation>.
06621:
06622: yyResult = pAnnotation(yyStart);
06623: yyError = yyResult.select(yyError);
06624: if (yyResult.hasValue()) {
06625: yyValue = yyResult.semanticValue();
06626:
06627: return yyResult.createValue(yyValue, yyError);
06628: }
06629:
06630: // Done.
06631: return yyError;
06632: }
06633:
06634: // =========================================================================
06635:
06636: /**
06637: * Parse nonterminal xtc.lang.JavaPattern.Annotations.
06638: *
06639: * @param yyStart The index.
06640: * @return The result.
06641: * @throws IOException Signals an I/O error.
06642: */
06643: private Result pAnnotations(final int yyStart) throws IOException {
06644: Result yyResult;
06645: int yyRepetition1;
06646: boolean yyRepeated1;
06647: Pair<Node> yyRepValue1;
06648: Node yyValue;
06649: ParseError yyError = ParseError.DUMMY;
06650:
06651: // Alternative 1.
06652:
06653: yyRepetition1 = yyStart;
06654: yyRepeated1 = false;
06655: yyRepValue1 = Pair.empty();
06656: while (true) {
06657:
06658: yyResult = pAnnotation(yyRepetition1);
06659: yyError = yyResult.select(yyError);
06660: if (yyResult.hasValue()) {
06661: final Node v$el$1 = yyResult.semanticValue();
06662:
06663: yyRepetition1 = yyResult.index;
06664: yyRepeated1 = true;
06665: yyRepValue1 = new Pair<Node>(v$el$1, yyRepValue1);
06666: continue;
06667: }
06668: break;
06669: }
06670:
06671: if (yyRepeated1) {
06672: final Pair<Node> v$g$1 = yyRepValue1.reverse();
06673:
06674: yyValue = GNode.createFromPair("Annotations", v$g$1);
06675: yyValue.setLocation(location(yyStart));
06676:
06677: return new SemanticValue(yyValue, yyRepetition1, yyError);
06678: }
06679:
06680: // Done.
06681: return yyError;
06682: }
06683:
06684: // =========================================================================
06685:
06686: /**
06687: * Parse nonterminal xtc.lang.JavaPattern.Annotation.
06688: *
06689: * @param yyStart The index.
06690: * @return The result.
06691: * @throws IOException Signals an I/O error.
06692: */
06693: private Result pAnnotation(final int yyStart) throws IOException {
06694: Result yyResult;
06695: Node yyValue;
06696: ParseError yyError = ParseError.DUMMY;
06697:
06698: // Alternative 1.
06699:
06700: yyResult = pSymbol(yyStart);
06701: yyError = yyResult.select(yyError);
06702: if (yyResult.hasValue("@")) {
06703:
06704: yyResult = pTypeName(yyResult.index);
06705: yyError = yyResult.select(yyError);
06706: if (yyResult.hasValue()) {
06707: final Node v$g$1 = yyResult.semanticValue();
06708:
06709: yyResult = pAnnotationValue(yyResult.index);
06710: yyError = yyResult.select(yyError);
06711: if (yyResult.hasValue()) {
06712: final Node v$g$2 = yyResult.semanticValue();
06713:
06714: yyValue = GNode.create("Annotation", v$g$1, v$g$2);
06715: yyValue.setLocation(location(yyStart));
06716:
06717: return yyResult.createValue(yyValue, yyError);
06718: }
06719: }
06720: }
06721:
06722: // Done.
06723: yyError = yyError.select("annotation expected", yyStart);
06724: return yyError;
06725: }
06726:
06727: // =========================================================================
06728:
06729: /**
06730: * Parse nonterminal xtc.lang.JavaPattern.AnnotationValue.
06731: *
06732: * @param yyStart The index.
06733: * @return The result.
06734: * @throws IOException Signals an I/O error.
06735: */
06736: private Result pAnnotationValue(final int yyStart)
06737: throws IOException {
06738: Result yyResult;
06739: int yyBase;
06740: int yyOption1;
06741: Node yyOpValue1;
06742: Node yyValue;
06743: ParseError yyError = ParseError.DUMMY;
06744:
06745: // Alternative 1.
06746:
06747: yyResult = pSymbol(yyStart);
06748: yyError = yyResult.select(yyError);
06749: if (yyResult.hasValue("(")) {
06750:
06751: final int yyChoice1 = yyResult.index;
06752:
06753: // Nested alternative 1.
06754:
06755: yyOption1 = yyChoice1;
06756: yyOpValue1 = null;
06757:
06758: yyResult = pElementValuePairs(yyOption1);
06759: yyError = yyResult.select(yyError);
06760: if (yyResult.hasValue()) {
06761: final Node v$el$4 = yyResult.semanticValue();
06762:
06763: yyOption1 = yyResult.index;
06764: yyOpValue1 = v$el$4;
06765: }
06766: { // Start scope for yyValue.
06767: yyValue = yyOpValue1;
06768:
06769: yyBase = yyOption1;
06770: yyResult = pSymbol(yyBase);
06771: yyError = yyResult.select(yyError);
06772: if (yyResult.hasValue(")")) {
06773:
06774: return yyResult.createValue(yyValue, yyError);
06775: } else {
06776: yyError = yyError.select("\")\" expected", yyBase);
06777: }
06778: } // End scope for yyValue.
06779:
06780: // Nested alternative 2.
06781:
06782: yyResult = pElementValue(yyChoice1);
06783: yyError = yyResult.select(yyError);
06784: if (yyResult.hasValue()) {
06785: yyValue = yyResult.semanticValue();
06786:
06787: yyBase = yyResult.index;
06788: yyResult = pSymbol(yyBase);
06789: yyError = yyResult.select(yyError);
06790: if (yyResult.hasValue(")")) {
06791:
06792: return yyResult.createValue(yyValue, yyError);
06793: } else {
06794: yyError = yyError.select("\")\" expected", yyBase);
06795: }
06796: }
06797: }
06798:
06799: // Alternative <Empty>.
06800: { // Start scope for yyValue.
06801: yyValue = null;
06802:
06803: return new SemanticValue(yyValue, yyStart, yyError);
06804: } // End scope for yyValue.
06805: }
06806:
06807: // =========================================================================
06808:
06809: /**
06810: * Parse nonterminal xtc.lang.JavaPattern.ElementValuePairs.
06811: *
06812: * @param yyStart The index.
06813: * @return The result.
06814: * @throws IOException Signals an I/O error.
06815: */
06816: private Result pElementValuePairs(final int yyStart)
06817: throws IOException {
06818: Result yyResult;
06819: int yyBase;
06820: int yyRepetition1;
06821: Pair<Node> yyRepValue1;
06822: Node yyValue;
06823: ParseError yyError = ParseError.DUMMY;
06824:
06825: // Alternative 1.
06826:
06827: yyResult = pElementValuePair(yyStart);
06828: yyError = yyResult.select(yyError);
06829: if (yyResult.hasValue()) {
06830: final Node v$g$1 = yyResult.semanticValue();
06831:
06832: yyRepetition1 = yyResult.index;
06833: yyRepValue1 = Pair.empty();
06834: while (true) {
06835:
06836: yyBase = yyRepetition1;
06837: yyResult = pSymbol(yyBase);
06838: yyError = yyResult.select(yyError);
06839: if (yyResult.hasValue(",")) {
06840:
06841: yyResult = pElementValuePair(yyResult.index);
06842: yyError = yyResult.select(yyError);
06843: if (yyResult.hasValue()) {
06844: final Node v$el$1 = yyResult.semanticValue();
06845:
06846: yyRepetition1 = yyResult.index;
06847: yyRepValue1 = new Pair<Node>(v$el$1,
06848: yyRepValue1);
06849: continue;
06850: }
06851: } else {
06852: yyError = yyError.select("\",\" expected", yyBase);
06853: }
06854: break;
06855: }
06856: { // Start scope for v$g$2.
06857: final Pair<Node> v$g$2 = yyRepValue1.reverse();
06858:
06859: yyValue = GNode.createFromPair("ElementValuePairs",
06860: v$g$1, v$g$2);
06861: yyValue.setLocation(location(yyStart));
06862:
06863: return new SemanticValue(yyValue, yyRepetition1,
06864: yyError);
06865: } // End scope for v$g$2.
06866: }
06867:
06868: // Done.
06869: return yyError;
06870: }
06871:
06872: // =========================================================================
06873:
06874: /**
06875: * Parse nonterminal xtc.lang.JavaPattern.ElementValuePair.
06876: *
06877: * @param yyStart The index.
06878: * @return The result.
06879: * @throws IOException Signals an I/O error.
06880: */
06881: private Result pElementValuePair(final int yyStart)
06882: throws IOException {
06883: JavaFactoryParserColumn yyColumn = (JavaFactoryParserColumn) column(yyStart);
06884: if (null == yyColumn.chunk2)
06885: yyColumn.chunk2 = new Chunk2();
06886: if (null == yyColumn.chunk2.fElementValuePair)
06887: yyColumn.chunk2.fElementValuePair = pElementValuePair$1(yyStart);
06888: return yyColumn.chunk2.fElementValuePair;
06889: }
06890:
06891: /** Actually parse xtc.lang.JavaPattern.ElementValuePair. */
06892: private Result pElementValuePair$1(final int yyStart)
06893: throws IOException {
06894: Result yyResult;
06895: int yyBase;
06896: Node yyValue;
06897: ParseError yyError = ParseError.DUMMY;
06898:
06899: // Alternative 1.
06900:
06901: yyResult = pName(yyStart);
06902: yyError = yyResult.select(yyError);
06903: if (yyResult.hasValue()) {
06904: final Object v$g$1 = yyResult.semanticValue();
06905:
06906: yyBase = yyResult.index;
06907: yyResult = pSymbol(yyBase);
06908: yyError = yyResult.select(yyError);
06909: if (yyResult.hasValue("=")) {
06910:
06911: yyResult = pElementValue(yyResult.index);
06912: yyError = yyResult.select(yyError);
06913: if (yyResult.hasValue()) {
06914: final Node v$g$2 = yyResult.semanticValue();
06915:
06916: yyValue = GNode.create("ElementValuePair", v$g$1,
06917: v$g$2);
06918: yyValue.setLocation(location(yyStart));
06919:
06920: return yyResult.createValue(yyValue, yyError);
06921: }
06922: } else {
06923: yyError = yyError.select("\"=\" expected", yyBase);
06924: }
06925: }
06926:
06927: // Done.
06928: return yyError;
06929: }
06930:
06931: // =========================================================================
06932:
06933: /**
06934: * Parse nonterminal xtc.lang.JavaPattern.ElementValue.
06935: *
06936: * @param yyStart The index.
06937: * @return The result.
06938: * @throws IOException Signals an I/O error.
06939: */
06940: private Result pElementValue(final int yyStart) throws IOException {
06941: JavaFactoryParserColumn yyColumn = (JavaFactoryParserColumn) column(yyStart);
06942: if (null == yyColumn.chunk2)
06943: yyColumn.chunk2 = new Chunk2();
06944: if (null == yyColumn.chunk2.fElementValue)
06945: yyColumn.chunk2.fElementValue = pElementValue$1(yyStart);
06946: return yyColumn.chunk2.fElementValue;
06947: }
06948:
06949: /** Actually parse xtc.lang.JavaPattern.ElementValue. */
06950: private Result pElementValue$1(final int yyStart)
06951: throws IOException {
06952: Result yyResult;
06953: Node yyValue;
06954: ParseError yyError = ParseError.DUMMY;
06955:
06956: // Alternative <Expression>.
06957:
06958: yyResult = pExpression(yyStart);
06959: yyError = yyResult.select(yyError);
06960: if (yyResult.hasValue()) {
06961: yyValue = yyResult.semanticValue();
06962:
06963: return yyResult.createValue(yyValue, yyError);
06964: }
06965:
06966: // Alternative <Annotation>.
06967:
06968: yyResult = pAnnotation(yyStart);
06969: yyError = yyResult.select(yyError);
06970: if (yyResult.hasValue()) {
06971: yyValue = yyResult.semanticValue();
06972:
06973: return yyResult.createValue(yyValue, yyError);
06974: }
06975:
06976: // Alternative <Array>.
06977:
06978: yyResult = pElementArrayInitializer(yyStart);
06979: yyError = yyResult.select(yyError);
06980: if (yyResult.hasValue()) {
06981: yyValue = yyResult.semanticValue();
06982:
06983: return yyResult.createValue(yyValue, yyError);
06984: }
06985:
06986: // Done.
06987: return yyError;
06988: }
06989:
06990: // =========================================================================
06991:
06992: /**
06993: * Parse nonterminal xtc.lang.JavaPattern.ElementArrayInitializer.
06994: *
06995: * @param yyStart The index.
06996: * @return The result.
06997: * @throws IOException Signals an I/O error.
06998: */
06999: private Result pElementArrayInitializer(final int yyStart)
07000: throws IOException {
07001:
07002: Result yyResult;
07003: int yyBase;
07004: int yyRepetition1;
07005: Pair<Node> yyRepValue1;
07006: int yyOption1;
07007: Node yyValue;
07008: ParseError yyError = ParseError.DUMMY;
07009:
07010: // Alternative 1.
07011:
07012: yyResult = pSymbol(yyStart);
07013: yyError = yyResult.select(yyError);
07014: if (yyResult.hasValue("{")) {
07015:
07016: final int yyChoice1 = yyResult.index;
07017:
07018: // Nested alternative 1.
07019:
07020: yyResult = pElementValue(yyChoice1);
07021: yyError = yyResult.select(yyError);
07022: if (yyResult.hasValue()) {
07023: final Node v$g$1 = yyResult.semanticValue();
07024:
07025: yyRepetition1 = yyResult.index;
07026: yyRepValue1 = Pair.empty();
07027: while (true) {
07028:
07029: yyBase = yyRepetition1;
07030: yyResult = pSymbol(yyBase);
07031: yyError = yyResult.select(yyError);
07032: if (yyResult.hasValue(",")) {
07033:
07034: yyResult = pElementValue(yyResult.index);
07035: yyError = yyResult.select(yyError);
07036: if (yyResult.hasValue()) {
07037: final Node v$el$1 = yyResult
07038: .semanticValue();
07039:
07040: yyRepetition1 = yyResult.index;
07041: yyRepValue1 = new Pair<Node>(v$el$1,
07042: yyRepValue1);
07043: continue;
07044: }
07045: } else {
07046: yyError = yyError.select("\",\" expected",
07047: yyBase);
07048: }
07049: break;
07050: }
07051: { // Start scope for v$g$2.
07052: final Pair<Node> v$g$2 = yyRepValue1.reverse();
07053:
07054: yyOption1 = yyRepetition1;
07055:
07056: yyBase = yyOption1;
07057: yyResult = pSymbol(yyBase);
07058: yyError = yyResult.select(yyError);
07059: if (yyResult.hasValue(",")) {
07060:
07061: yyOption1 = yyResult.index;
07062: } else {
07063: yyError = yyError.select("\",\" expected",
07064: yyBase);
07065: }
07066:
07067: yyBase = yyOption1;
07068: yyResult = pSymbol(yyBase);
07069: yyError = yyResult.select(yyError);
07070: if (yyResult.hasValue("}")) {
07071:
07072: yyValue = GNode.createFromPair(
07073: "ArrayInitializer", v$g$1, v$g$2);
07074: yyValue.setLocation(location(yyStart));
07075:
07076: return yyResult.createValue(yyValue, yyError);
07077: } else {
07078: yyError = yyError.select("\"}\" expected",
07079: yyBase);
07080: }
07081: } // End scope for v$g$2.
07082: }
07083:
07084: // Nested alternative 2.
07085:
07086: yyOption1 = yyChoice1;
07087:
07088: yyBase = yyOption1;
07089: yyResult = pSymbol(yyBase);
07090: yyError = yyResult.select(yyError);
07091: if (yyResult.hasValue(",")) {
07092:
07093: yyOption1 = yyResult.index;
07094: } else {
07095: yyError = yyError.select("\",\" expected", yyBase);
07096: }
07097:
07098: yyBase = yyOption1;
07099: yyResult = pSymbol(yyBase);
07100: yyError = yyResult.select(yyError);
07101: if (yyResult.hasValue("}")) {
07102:
07103: yyValue = GNode.create("ArrayInitializer", false);
07104: yyValue.setLocation(location(yyStart));
07105:
07106: return yyResult.createValue(yyValue, yyError);
07107: } else {
07108: yyError = yyError.select("\"}\" expected", yyBase);
07109: }
07110: }
07111:
07112: // Done.
07113: yyError = yyError.select("element array initializer expected",
07114: yyStart);
07115: return yyError;
07116: }
07117:
07118: // =========================================================================
07119:
07120: /**
07121: * Parse nonterminal xtc.lang.JavaPattern.AnnotationBody.
07122: *
07123: * @param yyStart The index.
07124: * @return The result.
07125: * @throws IOException Signals an I/O error.
07126: */
07127: private Result pAnnotationBody(final int yyStart)
07128: throws IOException {
07129: Result yyResult;
07130: int yyBase;
07131: int yyRepetition1;
07132: Pair<Node> yyRepValue1;
07133: Node yyValue;
07134: ParseError yyError = ParseError.DUMMY;
07135:
07136: // Alternative <Body>.
07137:
07138: yyResult = pSymbol(yyStart);
07139: yyError = yyResult.select(yyError);
07140: if (yyResult.hasValue("{")) {
07141:
07142: yyRepetition1 = yyResult.index;
07143: yyRepValue1 = Pair.empty();
07144: while (true) {
07145:
07146: yyResult = pAnnotationElement(yyRepetition1);
07147: yyError = yyResult.select(yyError);
07148: if (yyResult.hasValue()) {
07149: final Node v$el$1 = yyResult.semanticValue();
07150:
07151: yyRepetition1 = yyResult.index;
07152: yyRepValue1 = new Pair<Node>(v$el$1, yyRepValue1);
07153: continue;
07154: }
07155: break;
07156: }
07157: { // Start scope for v$g$1.
07158: final Pair<Node> v$g$1 = yyRepValue1.reverse();
07159:
07160: yyBase = yyRepetition1;
07161: yyResult = pSymbol(yyBase);
07162: yyError = yyResult.select(yyError);
07163: if (yyResult.hasValue("}")) {
07164:
07165: yyValue = GNode.createFromPair("ClassBody", v$g$1);
07166: yyValue.setLocation(location(yyStart));
07167:
07168: return yyResult.createValue(yyValue, yyError);
07169: } else {
07170: yyError = yyError.select("\"}\" expected", yyBase);
07171: }
07172: } // End scope for v$g$1.
07173: }
07174:
07175: // Done.
07176: yyError = yyError.select("annotation body expected", yyStart);
07177: return yyError;
07178: }
07179:
07180: // =========================================================================
07181:
07182: /**
07183: * Parse nonterminal xtc.lang.JavaPattern.AnnotationElement.
07184: *
07185: * @param yyStart The index.
07186: * @return The result.
07187: * @throws IOException Signals an I/O error.
07188: */
07189: private Result pAnnotationElement(final int yyStart)
07190: throws IOException {
07191: Result yyResult;
07192: int yyBase;
07193: int yyOption1;
07194: Node yyOpValue1;
07195: Node yyValue;
07196: ParseError yyError = ParseError.DUMMY;
07197:
07198: // Alternative 1.
07199:
07200: yyResult = pModifiers(yyStart);
07201: yyError = yyResult.select(yyError);
07202: if (yyResult.hasValue()) {
07203: final Node v$g$1 = yyResult.semanticValue();
07204:
07205: final int yyChoice1 = yyResult.index;
07206:
07207: // Nested alternative 1.
07208:
07209: yyResult = pType(yyChoice1);
07210: yyError = yyResult.select(yyError);
07211: if (yyResult.hasValue()) {
07212: final Node v$g$2 = yyResult.semanticValue();
07213:
07214: final int yyChoice2 = yyResult.index;
07215:
07216: // Nested alternative 1.
07217:
07218: yyResult = pName(yyChoice2);
07219: yyError = yyResult.select(yyError);
07220: if (yyResult.hasValue()) {
07221: final Object v$g$3 = yyResult.semanticValue();
07222:
07223: yyBase = yyResult.index;
07224: yyResult = pSymbol(yyBase);
07225: yyError = yyResult.select(yyError);
07226: if (yyResult.hasValue("(")) {
07227:
07228: yyBase = yyResult.index;
07229: yyResult = pSymbol(yyBase);
07230: yyError = yyResult.select(yyError);
07231: if (yyResult.hasValue(")")) {
07232:
07233: yyOption1 = yyResult.index;
07234: yyOpValue1 = null;
07235:
07236: yyResult = pDefaultValue(yyOption1);
07237: yyError = yyResult.select(yyError);
07238: if (yyResult.hasValue()) {
07239: final Node v$el$1 = yyResult
07240: .semanticValue();
07241:
07242: yyOption1 = yyResult.index;
07243: yyOpValue1 = v$el$1;
07244: }
07245: { // Start scope for v$g$4.
07246: final Node v$g$4 = yyOpValue1;
07247:
07248: yyBase = yyOption1;
07249: yyResult = pSymbol(yyBase);
07250: yyError = yyResult.select(yyError);
07251: if (yyResult.hasValue(";")) {
07252:
07253: yyValue = GNode.create(
07254: "AnnotationMethod", v$g$1,
07255: v$g$2, v$g$3, v$g$4);
07256: yyValue
07257: .setLocation(location(yyStart));
07258:
07259: return yyResult.createValue(
07260: yyValue, yyError);
07261: } else {
07262: yyError = yyError.select(
07263: "\";\" expected", yyBase);
07264: }
07265: } // End scope for v$g$4.
07266: } else {
07267: yyError = yyError.select("\")\" expected",
07268: yyBase);
07269: }
07270: } else {
07271: yyError = yyError.select("\"(\" expected",
07272: yyBase);
07273: }
07274: }
07275:
07276: // Nested alternative 2.
07277:
07278: yyResult = pDeclarators(yyChoice2);
07279: yyError = yyResult.select(yyError);
07280: if (yyResult.hasValue()) {
07281: final Node v$g$3 = yyResult.semanticValue();
07282:
07283: yyBase = yyResult.index;
07284: yyResult = pSymbol(yyBase);
07285: yyError = yyResult.select(yyError);
07286: if (yyResult.hasValue(";")) {
07287:
07288: yyValue = GNode.create("FieldDeclaration",
07289: v$g$1, v$g$2, v$g$3);
07290: yyValue.setLocation(location(yyStart));
07291:
07292: return yyResult.createValue(yyValue, yyError);
07293: } else {
07294: yyError = yyError.select("\";\" expected",
07295: yyBase);
07296: }
07297: }
07298: }
07299:
07300: // Nested alternative 2.
07301:
07302: yyBase = yyChoice1;
07303: yyResult = pWord(yyBase);
07304: yyError = yyResult.select(yyError);
07305: if (yyResult.hasValue("class")) {
07306:
07307: yyResult = pName(yyResult.index);
07308: yyError = yyResult.select(yyError);
07309: if (yyResult.hasValue()) {
07310: final Object v$g$2 = yyResult.semanticValue();
07311:
07312: yyOption1 = yyResult.index;
07313: yyOpValue1 = null;
07314:
07315: yyResult = pTypeParameters(yyOption1);
07316: yyError = yyResult.select(yyError);
07317: if (yyResult.hasValue()) {
07318: final Node v$el$1 = yyResult.semanticValue();
07319:
07320: yyOption1 = yyResult.index;
07321: yyOpValue1 = v$el$1;
07322: }
07323: { // Start scope for v$g$3.
07324: final Node v$g$3 = yyOpValue1;
07325:
07326: yyOpValue1 = null;
07327:
07328: yyResult = pExtension(yyOption1);
07329: yyError = yyResult.select(yyError);
07330: if (yyResult.hasValue()) {
07331: final Node v$el$2 = yyResult
07332: .semanticValue();
07333:
07334: yyOption1 = yyResult.index;
07335: yyOpValue1 = v$el$2;
07336: }
07337: { // Start scope for v$g$4.
07338: final Node v$g$4 = yyOpValue1;
07339:
07340: yyOpValue1 = null;
07341:
07342: yyResult = pImplementation(yyOption1);
07343: yyError = yyResult.select(yyError);
07344: if (yyResult.hasValue()) {
07345: final Node v$el$3 = yyResult
07346: .semanticValue();
07347:
07348: yyOption1 = yyResult.index;
07349: yyOpValue1 = v$el$3;
07350: }
07351: { // Start scope for v$g$5.
07352: final Node v$g$5 = yyOpValue1;
07353:
07354: yyResult = pClassBody(yyOption1);
07355: yyError = yyResult.select(yyError);
07356: if (yyResult.hasValue()) {
07357: final Node v$g$6 = yyResult
07358: .semanticValue();
07359:
07360: yyValue = GNode.create(
07361: "ClassDeclaration", v$g$1,
07362: v$g$2, v$g$3, v$g$4, v$g$5,
07363: v$g$6);
07364: yyValue
07365: .setLocation(location(yyStart));
07366:
07367: return yyResult.createValue(
07368: yyValue, yyError);
07369: }
07370: } // End scope for v$g$5.
07371: } // End scope for v$g$4.
07372: } // End scope for v$g$3.
07373: }
07374: } else {
07375: yyError = yyError.select("\"class\" expected", yyBase);
07376: }
07377:
07378: // Nested alternative 3.
07379:
07380: yyBase = yyChoice1;
07381: yyResult = pWord(yyBase);
07382: yyError = yyResult.select(yyError);
07383: if (yyResult.hasValue("interface")) {
07384:
07385: yyResult = pName(yyResult.index);
07386: yyError = yyResult.select(yyError);
07387: if (yyResult.hasValue()) {
07388: final Object v$g$2 = yyResult.semanticValue();
07389:
07390: yyOption1 = yyResult.index;
07391: yyOpValue1 = null;
07392:
07393: yyResult = pTypeParameters(yyOption1);
07394: yyError = yyResult.select(yyError);
07395: if (yyResult.hasValue()) {
07396: final Node v$el$1 = yyResult.semanticValue();
07397:
07398: yyOption1 = yyResult.index;
07399: yyOpValue1 = v$el$1;
07400: }
07401: { // Start scope for v$g$3.
07402: final Node v$g$3 = yyOpValue1;
07403:
07404: yyOpValue1 = null;
07405:
07406: yyResult = pExtension(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: yyResult = pClassBody(yyOption1);
07419: yyError = yyResult.select(yyError);
07420: if (yyResult.hasValue()) {
07421: final Node v$g$5 = yyResult
07422: .semanticValue();
07423:
07424: yyValue = GNode.create(
07425: "InterfaceDeclaration", v$g$1,
07426: v$g$2, v$g$3, v$g$4, v$g$5);
07427: yyValue.setLocation(location(yyStart));
07428:
07429: return yyResult.createValue(yyValue,
07430: yyError);
07431: }
07432: } // End scope for v$g$4.
07433: } // End scope for v$g$3.
07434: }
07435: } else {
07436: yyError = yyError.select("\"interface\" expected",
07437: yyBase);
07438: }
07439:
07440: // Nested alternative 4.
07441:
07442: yyBase = yyChoice1;
07443: yyResult = pWord(yyBase);
07444: yyError = yyResult.select(yyError);
07445: if (yyResult.hasValue("enum")) {
07446:
07447: yyResult = pName(yyResult.index);
07448: yyError = yyResult.select(yyError);
07449: if (yyResult.hasValue()) {
07450: final Object v$g$2 = yyResult.semanticValue();
07451:
07452: yyOption1 = yyResult.index;
07453: yyOpValue1 = null;
07454:
07455: yyResult = pImplementation(yyOption1);
07456: yyError = yyResult.select(yyError);
07457: if (yyResult.hasValue()) {
07458: final Node v$el$1 = yyResult.semanticValue();
07459:
07460: yyOption1 = yyResult.index;
07461: yyOpValue1 = v$el$1;
07462: }
07463: { // Start scope for v$g$3.
07464: final Node v$g$3 = yyOpValue1;
07465:
07466: yyBase = yyOption1;
07467: yyResult = pSymbol(yyBase);
07468: yyError = yyResult.select(yyError);
07469: if (yyResult.hasValue("{")) {
07470:
07471: yyOption1 = yyResult.index;
07472: yyOpValue1 = null;
07473:
07474: yyResult = pEnumConstants(yyOption1);
07475: yyError = yyResult.select(yyError);
07476: if (yyResult.hasValue()) {
07477: final Node v$el$2 = yyResult
07478: .semanticValue();
07479:
07480: yyOption1 = yyResult.index;
07481: yyOpValue1 = v$el$2;
07482: }
07483: { // Start scope for v$g$4.
07484: final Node v$g$4 = yyOpValue1;
07485:
07486: yyBase = yyOption1;
07487: yyResult = pSymbol(yyBase);
07488: yyError = yyResult.select(yyError);
07489: if (yyResult.hasValue(",")) {
07490:
07491: yyOption1 = yyResult.index;
07492: } else {
07493: yyError = yyError.select(
07494: "\",\" expected", yyBase);
07495: }
07496:
07497: yyOpValue1 = null;
07498:
07499: yyResult = pEnumMembers(yyOption1);
07500: yyError = yyResult.select(yyError);
07501: if (yyResult.hasValue()) {
07502: final Node v$el$3 = yyResult
07503: .semanticValue();
07504:
07505: yyOption1 = yyResult.index;
07506: yyOpValue1 = v$el$3;
07507: }
07508: { // Start scope for v$g$5.
07509: final Node v$g$5 = yyOpValue1;
07510:
07511: yyBase = yyOption1;
07512: yyResult = pSymbol(yyBase);
07513: yyError = yyResult.select(yyError);
07514: if (yyResult.hasValue("}")) {
07515:
07516: yyValue = GNode.create(
07517: "EnumDeclaration",
07518: v$g$1, v$g$2, v$g$3,
07519: v$g$4, v$g$5);
07520: yyValue
07521: .setLocation(location(yyStart));
07522:
07523: return yyResult.createValue(
07524: yyValue, yyError);
07525: } else {
07526: yyError = yyError.select(
07527: "\"}\" expected",
07528: yyBase);
07529: }
07530: } // End scope for v$g$5.
07531: } // End scope for v$g$4.
07532: } else {
07533: yyError = yyError.select("\"{\" expected",
07534: yyBase);
07535: }
07536: } // End scope for v$g$3.
07537: }
07538: } else {
07539: yyError = yyError.select("\"enum\" expected", yyBase);
07540: }
07541:
07542: // Nested alternative 5.
07543:
07544: yyBase = yyChoice1;
07545: yyResult = pSymbol(yyBase);
07546: yyError = yyResult.select(yyError);
07547: if (yyResult.hasValue("@")) {
07548:
07549: yyBase = yyResult.index;
07550: yyResult = pWord(yyBase);
07551: yyError = yyResult.select(yyError);
07552: if (yyResult.hasValue("interface")) {
07553:
07554: yyResult = pName(yyResult.index);
07555: yyError = yyResult.select(yyError);
07556: if (yyResult.hasValue()) {
07557: final Object v$g$2 = yyResult.semanticValue();
07558:
07559: yyResult = pAnnotationBody(yyResult.index);
07560: yyError = yyResult.select(yyError);
07561: if (yyResult.hasValue()) {
07562: final Node v$g$3 = yyResult.semanticValue();
07563:
07564: yyValue = GNode.create(
07565: "AnnotationDeclaration", v$g$1,
07566: v$g$2, v$g$3);
07567: yyValue.setLocation(location(yyStart));
07568:
07569: return yyResult.createValue(yyValue,
07570: yyError);
07571: }
07572: }
07573: } else {
07574: yyError = yyError.select("\"interface\" expected",
07575: yyBase);
07576: }
07577: } else {
07578: yyError = yyError.select("\"@\" expected", yyBase);
07579: }
07580: }
07581:
07582: // Done.
07583: return yyError;
07584: }
07585:
07586: // =========================================================================
07587:
07588: /**
07589: * Parse nonterminal xtc.lang.JavaPattern.DefaultValue.
07590: *
07591: * @param yyStart The index.
07592: * @return The result.
07593: * @throws IOException Signals an I/O error.
07594: */
07595: private Result pDefaultValue(final int yyStart) throws IOException {
07596: Result yyResult;
07597: Node yyValue;
07598: ParseError yyError = ParseError.DUMMY;
07599:
07600: // Alternative <Default>.
07601:
07602: yyResult = pWord(yyStart);
07603: yyError = yyResult.select(yyError);
07604: if (yyResult.hasValue("default")) {
07605:
07606: yyResult = pElementValue(yyResult.index);
07607: yyError = yyResult.select(yyError);
07608: if (yyResult.hasValue()) {
07609: final Node v$g$1 = yyResult.semanticValue();
07610:
07611: yyValue = GNode.create("DefaultValue", v$g$1);
07612: yyValue.setLocation(location(yyStart));
07613:
07614: return yyResult.createValue(yyValue, yyError);
07615: }
07616: }
07617:
07618: // Done.
07619: yyError = yyError.select("default value expected", yyStart);
07620: return yyError;
07621: }
07622:
07623: // =========================================================================
07624:
07625: /**
07626: * Parse nonterminal xtc.lang.JavaPattern.EnumConstants.
07627: *
07628: * @param yyStart The index.
07629: * @return The result.
07630: * @throws IOException Signals an I/O error.
07631: */
07632: private Result pEnumConstants(final int yyStart) throws IOException {
07633: Result yyResult;
07634: int yyBase;
07635: int yyRepetition1;
07636: Pair<Node> yyRepValue1;
07637: Node yyValue;
07638: ParseError yyError = ParseError.DUMMY;
07639:
07640: // Alternative <Constants>.
07641:
07642: yyResult = pEnumConstant(yyStart);
07643: yyError = yyResult.select(yyError);
07644: if (yyResult.hasValue()) {
07645: final Node v$g$1 = yyResult.semanticValue();
07646:
07647: yyRepetition1 = yyResult.index;
07648: yyRepValue1 = Pair.empty();
07649: while (true) {
07650:
07651: yyBase = yyRepetition1;
07652: yyResult = pSymbol(yyBase);
07653: yyError = yyResult.select(yyError);
07654: if (yyResult.hasValue(",")) {
07655:
07656: yyResult = pEnumConstant(yyResult.index);
07657: yyError = yyResult.select(yyError);
07658: if (yyResult.hasValue()) {
07659: final Node v$el$1 = yyResult.semanticValue();
07660:
07661: yyRepetition1 = yyResult.index;
07662: yyRepValue1 = new Pair<Node>(v$el$1,
07663: yyRepValue1);
07664: continue;
07665: }
07666: } else {
07667: yyError = yyError.select("\",\" expected", yyBase);
07668: }
07669: break;
07670: }
07671: { // Start scope for v$g$2.
07672: final Pair<Node> v$g$2 = yyRepValue1.reverse();
07673:
07674: yyValue = GNode.createFromPair("EnumConstants", v$g$1,
07675: v$g$2);
07676: yyValue.setLocation(location(yyStart));
07677:
07678: return new SemanticValue(yyValue, yyRepetition1,
07679: yyError);
07680: } // End scope for v$g$2.
07681: }
07682:
07683: // Alternative <Patterned>.
07684:
07685: yyResult = pNodeListVariable(yyStart);
07686: yyError = yyResult.select(yyError);
07687: if (yyResult.hasValue()) {
07688: final Node v$g$3 = yyResult.semanticValue();
07689:
07690: yyValue = GNode.create("EnumConstants", v$g$3);
07691: yyValue.setLocation(location(yyStart));
07692:
07693: return yyResult.createValue(yyValue, yyError);
07694: }
07695:
07696: // Done.
07697: return yyError;
07698: }
07699:
07700: // =========================================================================
07701:
07702: /**
07703: * Parse nonterminal xtc.lang.JavaPattern.EnumConstant.
07704: *
07705: * @param yyStart The index.
07706: * @return The result.
07707: * @throws IOException Signals an I/O error.
07708: */
07709: private Result pEnumConstant(final int yyStart) throws IOException {
07710: Result yyResult;
07711: int yyOption1;
07712: Node yyOpValue1;
07713: Node yyValue;
07714: ParseError yyError = ParseError.DUMMY;
07715:
07716: // Alternative 1.
07717:
07718: yyOption1 = yyStart;
07719: yyOpValue1 = null;
07720:
07721: yyResult = pAnnotations(yyOption1);
07722: yyError = yyResult.select(yyError);
07723: if (yyResult.hasValue()) {
07724: final Node v$el$1 = yyResult.semanticValue();
07725:
07726: yyOption1 = yyResult.index;
07727: yyOpValue1 = v$el$1;
07728: }
07729: { // Start scope for v$g$1.
07730: final Node v$g$1 = yyOpValue1;
07731:
07732: yyResult = pName(yyOption1);
07733: yyError = yyResult.select(yyError);
07734: if (yyResult.hasValue()) {
07735: final Object v$g$2 = yyResult.semanticValue();
07736:
07737: yyOption1 = yyResult.index;
07738: yyOpValue1 = null;
07739:
07740: yyResult = pArguments(yyOption1);
07741: yyError = yyResult.select(yyError);
07742: if (yyResult.hasValue()) {
07743: final Node v$el$2 = yyResult.semanticValue();
07744:
07745: yyOption1 = yyResult.index;
07746: yyOpValue1 = v$el$2;
07747: }
07748: { // Start scope for v$g$3.
07749: final Node v$g$3 = yyOpValue1;
07750:
07751: yyOpValue1 = null;
07752:
07753: yyResult = pClassBody(yyOption1);
07754: yyError = yyResult.select(yyError);
07755: if (yyResult.hasValue()) {
07756: final Node v$el$3 = yyResult.semanticValue();
07757:
07758: yyOption1 = yyResult.index;
07759: yyOpValue1 = v$el$3;
07760: }
07761: { // Start scope for v$g$4.
07762: final Node v$g$4 = yyOpValue1;
07763:
07764: yyValue = GNode.create("EnumConstant", v$g$1,
07765: v$g$2, v$g$3, v$g$4);
07766: yyValue.setLocation(location(yyStart));
07767:
07768: return new SemanticValue(yyValue, yyOption1,
07769: yyError);
07770: } // End scope for v$g$4.
07771: } // End scope for v$g$3.
07772: }
07773: } // End scope for v$g$1.
07774:
07775: // Done.
07776: return yyError;
07777: }
07778:
07779: // =========================================================================
07780:
07781: /**
07782: * Parse nonterminal xtc.lang.JavaPattern.EnumMembers.
07783: *
07784: * @param yyStart The index.
07785: * @return The result.
07786: * @throws IOException Signals an I/O error.
07787: */
07788: private Result pEnumMembers(final int yyStart) throws IOException {
07789: Result yyResult;
07790: int yyRepetition1;
07791: Pair<Node> yyRepValue1;
07792: Node yyValue;
07793: ParseError yyError = ParseError.DUMMY;
07794:
07795: // Alternative 1.
07796:
07797: yyResult = pSymbol(yyStart);
07798: yyError = yyResult.select(yyError);
07799: if (yyResult.hasValue(";")) {
07800:
07801: yyRepetition1 = yyResult.index;
07802: yyRepValue1 = Pair.empty();
07803: while (true) {
07804:
07805: yyResult = pDeclaration(yyRepetition1);
07806: yyError = yyResult.select(yyError);
07807: if (yyResult.hasValue()) {
07808: final Node v$el$1 = yyResult.semanticValue();
07809:
07810: yyRepetition1 = yyResult.index;
07811: yyRepValue1 = new Pair<Node>(v$el$1, yyRepValue1);
07812: continue;
07813: }
07814: break;
07815: }
07816: { // Start scope for v$g$1.
07817: final Pair<Node> v$g$1 = yyRepValue1.reverse();
07818:
07819: yyValue = GNode.createFromPair("EnumMembers", v$g$1);
07820: yyValue.setLocation(location(yyStart));
07821:
07822: return new SemanticValue(yyValue, yyRepetition1,
07823: yyError);
07824: } // End scope for v$g$1.
07825: }
07826:
07827: // Done.
07828: yyError = yyError.select("enum members expected", yyStart);
07829: return yyError;
07830: }
07831:
07832: // =========================================================================
07833:
07834: /**
07835: * Parse nonterminal xtc.lang.JavaPattern.Pattern.
07836: *
07837: * @param yyStart The index.
07838: * @return The result.
07839: * @throws IOException Signals an I/O error.
07840: */
07841: private Result pPattern(final int yyStart) throws IOException {
07842: Result yyResult;
07843: int yyBase;
07844: int yyOption1;
07845: Node yyOpValue1;
07846: Node yyValue;
07847: ParseError yyError = ParseError.DUMMY;
07848:
07849: // Alternative <Import>.
07850:
07851: yyResult = pImportDeclaration(yyStart);
07852: yyError = yyResult.select(yyError);
07853: if (yyResult.hasValue()) {
07854: yyValue = yyResult.semanticValue();
07855:
07856: return yyResult.createValue(yyValue, yyError);
07857: }
07858:
07859: // Alternative 2.
07860:
07861: yyResult = pModifiers(yyStart);
07862: yyError = yyResult.select(yyError);
07863: if (yyResult.hasValue()) {
07864: final Node v$g$1 = yyResult.semanticValue();
07865:
07866: final int yyChoice1 = yyResult.index;
07867:
07868: // Nested alternative 1.
07869:
07870: yyResult = pType(yyChoice1);
07871: yyError = yyResult.select(yyError);
07872: if (yyResult.hasValue()) {
07873: final Node v$g$2 = yyResult.semanticValue();
07874:
07875: yyResult = pDeclarators(yyResult.index);
07876: yyError = yyResult.select(yyError);
07877: if (yyResult.hasValue()) {
07878: final Node v$g$3 = yyResult.semanticValue();
07879:
07880: yyBase = yyResult.index;
07881: yyResult = pSymbol(yyBase);
07882: yyError = yyResult.select(yyError);
07883: if (yyResult.hasValue(";")) {
07884:
07885: yyValue = GNode.create("FieldDeclaration",
07886: v$g$1, v$g$2, v$g$3);
07887: yyValue.setLocation(location(yyStart));
07888:
07889: return yyResult.createValue(yyValue, yyError);
07890: } else {
07891: yyError = yyError.select("\";\" expected",
07892: yyBase);
07893: }
07894: }
07895: }
07896:
07897: // Nested alternative 2.
07898:
07899: yyOption1 = yyChoice1;
07900: yyOpValue1 = null;
07901:
07902: yyResult = pTypeParameters(yyOption1);
07903: yyError = yyResult.select(yyError);
07904: if (yyResult.hasValue()) {
07905: final Node v$el$1 = yyResult.semanticValue();
07906:
07907: yyOption1 = yyResult.index;
07908: yyOpValue1 = v$el$1;
07909: }
07910: { // Start scope for v$g$2.
07911: final Node v$g$2 = yyOpValue1;
07912:
07913: final int yyChoice2 = yyOption1;
07914:
07915: // Nested alternative 1.
07916:
07917: yyResult = pResultType(yyChoice2);
07918: yyError = yyResult.select(yyError);
07919: if (yyResult.hasValue()) {
07920: final Node v$g$3 = yyResult.semanticValue();
07921:
07922: yyResult = pName(yyResult.index);
07923: yyError = yyResult.select(yyError);
07924: if (yyResult.hasValue()) {
07925: final Object v$g$4 = yyResult.semanticValue();
07926:
07927: yyResult = pFormalParameters(yyResult.index);
07928: yyError = yyResult.select(yyError);
07929: if (yyResult.hasValue()) {
07930: final Node v$g$5 = yyResult.semanticValue();
07931:
07932: yyOption1 = yyResult.index;
07933: yyOpValue1 = null;
07934:
07935: yyResult = pDimensions(yyOption1);
07936: yyError = yyResult.select(yyError);
07937: if (yyResult.hasValue()) {
07938: final Node v$el$2 = yyResult
07939: .semanticValue();
07940:
07941: yyOption1 = yyResult.index;
07942: yyOpValue1 = v$el$2;
07943: }
07944: { // Start scope for v$g$6.
07945: final Node v$g$6 = yyOpValue1;
07946:
07947: yyOpValue1 = null;
07948:
07949: yyResult = pThrowsClause(yyOption1);
07950: yyError = yyResult.select(yyError);
07951: if (yyResult.hasValue()) {
07952: final Node v$el$3 = yyResult
07953: .semanticValue();
07954:
07955: yyOption1 = yyResult.index;
07956: yyOpValue1 = v$el$3;
07957: }
07958: { // Start scope for v$g$7.
07959: final Node v$g$7 = yyOpValue1;
07960:
07961: final int yyChoice3 = yyOption1;
07962:
07963: // Nested alternative 1.
07964:
07965: yyResult = pBlock(yyChoice3);
07966: yyError = yyResult.select(yyError);
07967: if (yyResult.hasValue()) {
07968: final Node v$g$8 = yyResult
07969: .semanticValue();
07970:
07971: yyValue = GNode.create(
07972: "MethodDeclaration",
07973: v$g$1, v$g$2, v$g$3,
07974: v$g$4, v$g$5, v$g$6,
07975: v$g$7, v$g$8);
07976: yyValue
07977: .setLocation(location(yyStart));
07978:
07979: return yyResult.createValue(
07980: yyValue, yyError);
07981: }
07982:
07983: // Nested alternative 2.
07984:
07985: yyBase = yyChoice3;
07986: yyResult = pSymbol(yyBase);
07987: yyError = yyResult.select(yyError);
07988: if (yyResult.hasValue(";")) {
07989:
07990: yyValue = GNode.create(
07991: "MethodDeclaration",
07992: v$g$1, v$g$2, v$g$3,
07993: v$g$4, v$g$5, v$g$6,
07994: v$g$7, null);
07995: yyValue
07996: .setLocation(location(yyStart));
07997:
07998: return yyResult.createValue(
07999: yyValue, yyError);
08000: } else {
08001: yyError = yyError.select(
08002: "\";\" expected",
08003: yyBase);
08004: }
08005: } // End scope for v$g$7.
08006: } // End scope for v$g$6.
08007: }
08008: }
08009: }
08010:
08011: // Nested alternative 2.
08012:
08013: yyResult = pName(yyChoice2);
08014: yyError = yyResult.select(yyError);
08015: if (yyResult.hasValue()) {
08016: final Object v$g$3 = yyResult.semanticValue();
08017:
08018: yyResult = pFormalParameters(yyResult.index);
08019: yyError = yyResult.select(yyError);
08020: if (yyResult.hasValue()) {
08021: final Node v$g$4 = yyResult.semanticValue();
08022:
08023: yyOption1 = yyResult.index;
08024: yyOpValue1 = null;
08025:
08026: yyResult = pThrowsClause(yyOption1);
08027: yyError = yyResult.select(yyError);
08028: if (yyResult.hasValue()) {
08029: final Node v$el$2 = yyResult
08030: .semanticValue();
08031:
08032: yyOption1 = yyResult.index;
08033: yyOpValue1 = v$el$2;
08034: }
08035: { // Start scope for v$g$5.
08036: final Node v$g$5 = yyOpValue1;
08037:
08038: yyResult = pBlock(yyOption1);
08039: yyError = yyResult.select(yyError);
08040: if (yyResult.hasValue()) {
08041: final Node v$g$6 = yyResult
08042: .semanticValue();
08043:
08044: yyValue = GNode.create(
08045: "ConstructorDeclaration",
08046: v$g$1, v$g$2, v$g$3, v$g$4,
08047: v$g$5, v$g$6);
08048: yyValue.setLocation(location(yyStart));
08049:
08050: return yyResult.createValue(yyValue,
08051: yyError);
08052: }
08053: } // End scope for v$g$5.
08054: }
08055: }
08056: } // End scope for v$g$2.
08057:
08058: // Nested alternative 3.
08059:
08060: yyBase = yyChoice1;
08061: yyResult = pWord(yyBase);
08062: yyError = yyResult.select(yyError);
08063: if (yyResult.hasValue("class")) {
08064:
08065: yyResult = pName(yyResult.index);
08066: yyError = yyResult.select(yyError);
08067: if (yyResult.hasValue()) {
08068: final Object v$g$2 = yyResult.semanticValue();
08069:
08070: yyOption1 = yyResult.index;
08071: yyOpValue1 = null;
08072:
08073: yyResult = pTypeParameters(yyOption1);
08074: yyError = yyResult.select(yyError);
08075: if (yyResult.hasValue()) {
08076: final Node v$el$1 = yyResult.semanticValue();
08077:
08078: yyOption1 = yyResult.index;
08079: yyOpValue1 = v$el$1;
08080: }
08081: { // Start scope for v$g$3.
08082: final Node v$g$3 = yyOpValue1;
08083:
08084: yyOpValue1 = null;
08085:
08086: yyResult = pExtension(yyOption1);
08087: yyError = yyResult.select(yyError);
08088: if (yyResult.hasValue()) {
08089: final Node v$el$2 = yyResult
08090: .semanticValue();
08091:
08092: yyOption1 = yyResult.index;
08093: yyOpValue1 = v$el$2;
08094: }
08095: { // Start scope for v$g$4.
08096: final Node v$g$4 = yyOpValue1;
08097:
08098: yyOpValue1 = null;
08099:
08100: yyResult = pImplementation(yyOption1);
08101: yyError = yyResult.select(yyError);
08102: if (yyResult.hasValue()) {
08103: final Node v$el$3 = yyResult
08104: .semanticValue();
08105:
08106: yyOption1 = yyResult.index;
08107: yyOpValue1 = v$el$3;
08108: }
08109: { // Start scope for v$g$5.
08110: final Node v$g$5 = yyOpValue1;
08111:
08112: yyResult = pClassBody(yyOption1);
08113: yyError = yyResult.select(yyError);
08114: if (yyResult.hasValue()) {
08115: final Node v$g$6 = yyResult
08116: .semanticValue();
08117:
08118: yyValue = GNode.create(
08119: "ClassDeclaration", v$g$1,
08120: v$g$2, v$g$3, v$g$4, v$g$5,
08121: v$g$6);
08122: yyValue
08123: .setLocation(location(yyStart));
08124:
08125: return yyResult.createValue(
08126: yyValue, yyError);
08127: }
08128: } // End scope for v$g$5.
08129: } // End scope for v$g$4.
08130: } // End scope for v$g$3.
08131: }
08132: } else {
08133: yyError = yyError.select("\"class\" expected", yyBase);
08134: }
08135:
08136: // Nested alternative 4.
08137:
08138: yyBase = yyChoice1;
08139: yyResult = pWord(yyBase);
08140: yyError = yyResult.select(yyError);
08141: if (yyResult.hasValue("interface")) {
08142:
08143: yyResult = pName(yyResult.index);
08144: yyError = yyResult.select(yyError);
08145: if (yyResult.hasValue()) {
08146: final Object v$g$2 = yyResult.semanticValue();
08147:
08148: yyOption1 = yyResult.index;
08149: yyOpValue1 = null;
08150:
08151: yyResult = pTypeParameters(yyOption1);
08152: yyError = yyResult.select(yyError);
08153: if (yyResult.hasValue()) {
08154: final Node v$el$1 = yyResult.semanticValue();
08155:
08156: yyOption1 = yyResult.index;
08157: yyOpValue1 = v$el$1;
08158: }
08159: { // Start scope for v$g$3.
08160: final Node v$g$3 = yyOpValue1;
08161:
08162: yyOpValue1 = null;
08163:
08164: yyResult = pExtension(yyOption1);
08165: yyError = yyResult.select(yyError);
08166: if (yyResult.hasValue()) {
08167: final Node v$el$2 = yyResult
08168: .semanticValue();
08169:
08170: yyOption1 = yyResult.index;
08171: yyOpValue1 = v$el$2;
08172: }
08173: { // Start scope for v$g$4.
08174: final Node v$g$4 = yyOpValue1;
08175:
08176: yyResult = pClassBody(yyOption1);
08177: yyError = yyResult.select(yyError);
08178: if (yyResult.hasValue()) {
08179: final Node v$g$5 = yyResult
08180: .semanticValue();
08181:
08182: yyValue = GNode.create(
08183: "InterfaceDeclaration", v$g$1,
08184: v$g$2, v$g$3, v$g$4, v$g$5);
08185: yyValue.setLocation(location(yyStart));
08186:
08187: return yyResult.createValue(yyValue,
08188: yyError);
08189: }
08190: } // End scope for v$g$4.
08191: } // End scope for v$g$3.
08192: }
08193: } else {
08194: yyError = yyError.select("\"interface\" expected",
08195: yyBase);
08196: }
08197: }
08198:
08199: // Alternative <Statement>.
08200:
08201: yyResult = pStatement(yyStart);
08202: yyError = yyResult.select(yyError);
08203: if (yyResult.hasValue()) {
08204: yyValue = yyResult.semanticValue();
08205:
08206: return yyResult.createValue(yyValue, yyError);
08207: }
08208:
08209: // Alternative <Expression>.
08210:
08211: yyResult = pExpression(yyStart);
08212: yyError = yyResult.select(yyError);
08213: if (yyResult.hasValue()) {
08214: yyValue = yyResult.semanticValue();
08215:
08216: if (!yyValue.hasName("NodeVariable")) {
08217:
08218: return yyResult.createValue(yyValue, yyError);
08219: }
08220: }
08221:
08222: // Done.
08223: yyError = yyError.select("pattern expected", yyStart);
08224: return yyError;
08225: }
08226:
08227: // =========================================================================
08228:
08229: /**
08230: * Parse nonterminal xtc.lang.JavaPattern.NodeVariable.
08231: *
08232: * @param yyStart The index.
08233: * @return The result.
08234: * @throws IOException Signals an I/O error.
08235: */
08236: private Result pJavaPattern$NodeVariable(final int yyStart)
08237: throws IOException {
08238:
08239: JavaFactoryParserColumn yyColumn = (JavaFactoryParserColumn) column(yyStart);
08240: if (null == yyColumn.chunk2)
08241: yyColumn.chunk2 = new Chunk2();
08242: if (null == yyColumn.chunk2.fJavaPattern$NodeVariable)
08243: yyColumn.chunk2.fJavaPattern$NodeVariable = pJavaPattern$NodeVariable$1(yyStart);
08244: return yyColumn.chunk2.fJavaPattern$NodeVariable;
08245: }
08246:
08247: /** Actually parse xtc.lang.JavaPattern.NodeVariable. */
08248: private Result pJavaPattern$NodeVariable$1(final int yyStart)
08249: throws IOException {
08250:
08251: int yyC;
08252: int yyIndex;
08253: Result yyResult;
08254: Node yyValue;
08255: ParseError yyError = ParseError.DUMMY;
08256:
08257: // Alternative 1.
08258:
08259: yyC = character(yyStart);
08260: if ('#' == yyC) {
08261: yyIndex = yyStart + 1;
08262:
08263: yyResult = pWord(yyIndex);
08264: yyError = yyResult.select(yyError);
08265: if (yyResult.hasValue()) {
08266: final String v$g$1 = yyResult.semanticValue();
08267:
08268: yyValue = GNode.create("NodeVariable", v$g$1);
08269: yyValue.setLocation(location(yyStart));
08270:
08271: return yyResult.createValue(yyValue, yyError);
08272: }
08273: }
08274:
08275: // Done.
08276: yyError = yyError.select("node variable expected", yyStart);
08277: return yyError;
08278: }
08279:
08280: // =========================================================================
08281:
08282: /**
08283: * Parse nonterminal xtc.lang.JavaPattern.StringVariable.
08284: *
08285: * @param yyStart The index.
08286: * @return The result.
08287: * @throws IOException Signals an I/O error.
08288: */
08289: private Result pJavaPattern$StringVariable(final int yyStart)
08290: throws IOException {
08291:
08292: int yyC;
08293: int yyIndex;
08294: Result yyResult;
08295: Node yyValue;
08296: ParseError yyError = ParseError.DUMMY;
08297:
08298: // Alternative 1.
08299:
08300: yyC = character(yyStart);
08301: if ('#' == yyC) {
08302: yyIndex = yyStart + 1;
08303:
08304: yyResult = pWord(yyIndex);
08305: yyError = yyResult.select(yyError);
08306: if (yyResult.hasValue()) {
08307: final String v$g$1 = yyResult.semanticValue();
08308:
08309: yyValue = GNode.create("StringVariable", v$g$1);
08310: yyValue.setLocation(location(yyStart));
08311:
08312: return yyResult.createValue(yyValue, yyError);
08313: }
08314: }
08315:
08316: // Done.
08317: yyError = yyError.select("string variable expected", yyStart);
08318: return yyError;
08319: }
08320:
08321: // =========================================================================
08322:
08323: /**
08324: * Parse nonterminal xtc.lang.JavaPattern.NodeListVariable.
08325: *
08326: * @param yyStart The index.
08327: * @return The result.
08328: * @throws IOException Signals an I/O error.
08329: */
08330: private Result pNodeListVariable(final int yyStart)
08331: throws IOException {
08332: JavaFactoryParserColumn yyColumn = (JavaFactoryParserColumn) column(yyStart);
08333: if (null == yyColumn.chunk2)
08334: yyColumn.chunk2 = new Chunk2();
08335: if (null == yyColumn.chunk2.fNodeListVariable)
08336: yyColumn.chunk2.fNodeListVariable = pNodeListVariable$1(yyStart);
08337: return yyColumn.chunk2.fNodeListVariable;
08338: }
08339:
08340: /** Actually parse xtc.lang.JavaPattern.NodeListVariable. */
08341: private Result pNodeListVariable$1(final int yyStart)
08342: throws IOException {
08343: int yyC;
08344: int yyIndex;
08345: Result yyResult;
08346: Node yyValue;
08347: ParseError yyError = ParseError.DUMMY;
08348:
08349: // Alternative 1.
08350:
08351: yyC = character(yyStart);
08352: if ('#' == yyC) {
08353: yyIndex = yyStart + 1;
08354:
08355: yyC = character(yyIndex);
08356: if ('[' == yyC) {
08357: yyIndex = yyIndex + 1;
08358:
08359: yyResult = pWordCharacters(yyIndex);
08360: yyError = yyResult.select(yyError);
08361: if (yyResult.hasValue()) {
08362: final String v$g$1 = yyResult.semanticValue();
08363:
08364: yyC = character(yyResult.index);
08365: if (']' == yyC) {
08366: yyIndex = yyResult.index + 1;
08367:
08368: yyResult = pSpacing(yyIndex);
08369: yyError = yyResult.select(yyError);
08370: if (yyResult.hasValue()) {
08371:
08372: yyValue = GNode.create("NodeListVariable",
08373: v$g$1);
08374: yyValue.setLocation(location(yyStart));
08375:
08376: return yyResult.createValue(yyValue,
08377: yyError);
08378: }
08379: }
08380: }
08381: }
08382: }
08383:
08384: // Done.
08385: yyError = yyError
08386: .select("node list variable expected", yyStart);
08387: return yyError;
08388: }
08389:
08390: // =========================================================================
08391:
08392: /**
08393: * Parse nonterminal xtc.lang.JavaTypePattern.ResultType.
08394: *
08395: * @param yyStart The index.
08396: * @return The result.
08397: * @throws IOException Signals an I/O error.
08398: */
08399: private Result pResultType(final int yyStart) throws IOException {
08400: JavaFactoryParserColumn yyColumn = (JavaFactoryParserColumn) column(yyStart);
08401: if (null == yyColumn.chunk3)
08402: yyColumn.chunk3 = new Chunk3();
08403: if (null == yyColumn.chunk3.fResultType)
08404: yyColumn.chunk3.fResultType = pResultType$1(yyStart);
08405: return yyColumn.chunk3.fResultType;
08406: }
08407:
08408: /** Actually parse xtc.lang.JavaTypePattern.ResultType. */
08409: private Result pResultType$1(final int yyStart) throws IOException {
08410: Result yyResult;
08411: Node yyValue;
08412: ParseError yyError = ParseError.DUMMY;
08413:
08414: // Alternative <Void>.
08415:
08416: yyResult = pVoidType(yyStart);
08417: yyError = yyResult.select(yyError);
08418: if (yyResult.hasValue()) {
08419: yyValue = yyResult.semanticValue();
08420:
08421: return yyResult.createValue(yyValue, yyError);
08422: }
08423:
08424: // Alternative <Regular>.
08425:
08426: yyResult = pType(yyStart);
08427: yyError = yyResult.select(yyError);
08428: if (yyResult.hasValue()) {
08429: yyValue = yyResult.semanticValue();
08430:
08431: return yyResult.createValue(yyValue, yyError);
08432: }
08433:
08434: // Done.
08435: return yyError;
08436: }
08437:
08438: // =========================================================================
08439:
08440: /**
08441: * Parse nonterminal xtc.lang.JavaTypePattern.VoidType.
08442: *
08443: * @param yyStart The index.
08444: * @return The result.
08445: * @throws IOException Signals an I/O error.
08446: */
08447: private Result pVoidType(final int yyStart) throws IOException {
08448: Result yyResult;
08449: Node yyValue;
08450: ParseError yyError = ParseError.DUMMY;
08451:
08452: // Alternative <Void>.
08453:
08454: yyResult = pWord(yyStart);
08455: yyError = yyResult.select(yyError);
08456: if (yyResult.hasValue("void")) {
08457:
08458: yyValue = GNode.create("VoidType", false);
08459: yyValue.setLocation(location(yyStart));
08460:
08461: return yyResult.createValue(yyValue, yyError);
08462: }
08463:
08464: // Done.
08465: yyError = yyError.select("void type expected", yyStart);
08466: return yyError;
08467: }
08468:
08469: // =========================================================================
08470:
08471: /**
08472: * Parse nonterminal xtc.lang.JavaTypePattern.Type.
08473: *
08474: * @param yyStart The index.
08475: * @return The result.
08476: * @throws IOException Signals an I/O error.
08477: */
08478: private Result pType(final int yyStart) throws IOException {
08479: JavaFactoryParserColumn yyColumn = (JavaFactoryParserColumn) column(yyStart);
08480: if (null == yyColumn.chunk3)
08481: yyColumn.chunk3 = new Chunk3();
08482: if (null == yyColumn.chunk3.fType)
08483: yyColumn.chunk3.fType = pType$1(yyStart);
08484: return yyColumn.chunk3.fType;
08485: }
08486:
08487: /** Actually parse xtc.lang.JavaTypePattern.Type. */
08488: private Result pType$1(final int yyStart) throws IOException {
08489: Result yyResult;
08490: int yyOption1;
08491: Node yyOpValue1;
08492: Node yyValue;
08493: ParseError yyError = ParseError.DUMMY;
08494:
08495: // Alternative <Type>.
08496:
08497: yyResult = pTypeName(yyStart);
08498: yyError = yyResult.select(yyError);
08499: if (yyResult.hasValue()) {
08500: final Node v$g$1 = yyResult.semanticValue();
08501:
08502: yyOption1 = yyResult.index;
08503: yyOpValue1 = null;
08504:
08505: yyResult = pDimensions(yyOption1);
08506: yyError = yyResult.select(yyError);
08507: if (yyResult.hasValue()) {
08508: final Node v$el$1 = yyResult.semanticValue();
08509:
08510: yyOption1 = yyResult.index;
08511: yyOpValue1 = v$el$1;
08512: }
08513: { // Start scope for v$g$2.
08514: final Node v$g$2 = yyOpValue1;
08515:
08516: yyValue = GNode.create("Type", v$g$1, v$g$2);
08517: yyValue.setLocation(location(yyStart));
08518:
08519: return new SemanticValue(yyValue, yyOption1, yyError);
08520: } // End scope for v$g$2.
08521: }
08522:
08523: // Done.
08524: return yyError;
08525: }
08526:
08527: // =========================================================================
08528:
08529: /**
08530: * Parse nonterminal xtc.lang.JavaTypePattern.TypeName.
08531: *
08532: * @param yyStart The index.
08533: * @return The result.
08534: * @throws IOException Signals an I/O error.
08535: */
08536: private Result pTypeName(final int yyStart) throws IOException {
08537: JavaFactoryParserColumn yyColumn = (JavaFactoryParserColumn) column(yyStart);
08538: if (null == yyColumn.chunk3)
08539: yyColumn.chunk3 = new Chunk3();
08540: if (null == yyColumn.chunk3.fTypeName)
08541: yyColumn.chunk3.fTypeName = pTypeName$1(yyStart);
08542: return yyColumn.chunk3.fTypeName;
08543: }
08544:
08545: /** Actually parse xtc.lang.JavaTypePattern.TypeName. */
08546: private Result pTypeName$1(final int yyStart) throws IOException {
08547: Result yyResult;
08548: Node yyValue;
08549: ParseError yyError = ParseError.DUMMY;
08550:
08551: // Alternative <Basic>.
08552:
08553: yyResult = pPrimitiveType(yyStart);
08554: yyError = yyResult.select(yyError);
08555: if (yyResult.hasValue()) {
08556: yyValue = yyResult.semanticValue();
08557:
08558: return yyResult.createValue(yyValue, yyError);
08559: }
08560:
08561: // Alternative <Class>.
08562:
08563: yyResult = pClassType(yyStart);
08564: yyError = yyResult.select(yyError);
08565: if (yyResult.hasValue()) {
08566: yyValue = yyResult.semanticValue();
08567:
08568: return yyResult.createValue(yyValue, yyError);
08569: }
08570:
08571: // Done.
08572: return yyError;
08573: }
08574:
08575: // =========================================================================
08576:
08577: /**
08578: * Parse nonterminal xtc.lang.JavaTypePattern.PrimitiveType.
08579: *
08580: * @param yyStart The index.
08581: * @return The result.
08582: * @throws IOException Signals an I/O error.
08583: */
08584: private Result pPrimitiveType(final int yyStart) throws IOException {
08585: JavaFactoryParserColumn yyColumn = (JavaFactoryParserColumn) column(yyStart);
08586: if (null == yyColumn.chunk3)
08587: yyColumn.chunk3 = new Chunk3();
08588: if (null == yyColumn.chunk3.fPrimitiveType)
08589: yyColumn.chunk3.fPrimitiveType = pPrimitiveType$1(yyStart);
08590: return yyColumn.chunk3.fPrimitiveType;
08591: }
08592:
08593: /** Actually parse xtc.lang.JavaTypePattern.PrimitiveType. */
08594: private Result pPrimitiveType$1(final int yyStart)
08595: throws IOException {
08596: Result yyResult;
08597: Node yyValue;
08598: ParseError yyError = ParseError.DUMMY;
08599:
08600: // Alternative <Byte>.
08601:
08602: yyResult = pWord(yyStart);
08603: yyError = yyResult.select(yyError);
08604: if (yyResult.hasValue("byte")) {
08605: final String v$g$1 = "byte";
08606:
08607: yyValue = GNode.create("PrimitiveType", v$g$1);
08608: yyValue.setLocation(location(yyStart));
08609:
08610: return yyResult.createValue(yyValue, yyError);
08611: }
08612:
08613: // Alternative <Short>.
08614:
08615: yyResult = pWord(yyStart);
08616: yyError = yyResult.select(yyError);
08617: if (yyResult.hasValue("short")) {
08618: final String v$g$2 = "short";
08619:
08620: yyValue = GNode.create("PrimitiveType", v$g$2);
08621: yyValue.setLocation(location(yyStart));
08622:
08623: return yyResult.createValue(yyValue, yyError);
08624: }
08625:
08626: // Alternative <Char>.
08627:
08628: yyResult = pWord(yyStart);
08629: yyError = yyResult.select(yyError);
08630: if (yyResult.hasValue("char")) {
08631: final String v$g$3 = "char";
08632:
08633: yyValue = GNode.create("PrimitiveType", v$g$3);
08634: yyValue.setLocation(location(yyStart));
08635:
08636: return yyResult.createValue(yyValue, yyError);
08637: }
08638:
08639: // Alternative <Int>.
08640:
08641: yyResult = pWord(yyStart);
08642: yyError = yyResult.select(yyError);
08643: if (yyResult.hasValue("int")) {
08644: final String v$g$4 = "int";
08645:
08646: yyValue = GNode.create("PrimitiveType", v$g$4);
08647: yyValue.setLocation(location(yyStart));
08648:
08649: return yyResult.createValue(yyValue, yyError);
08650: }
08651:
08652: // Alternative <Long>.
08653:
08654: yyResult = pWord(yyStart);
08655: yyError = yyResult.select(yyError);
08656: if (yyResult.hasValue("long")) {
08657: final String v$g$5 = "long";
08658:
08659: yyValue = GNode.create("PrimitiveType", v$g$5);
08660: yyValue.setLocation(location(yyStart));
08661:
08662: return yyResult.createValue(yyValue, yyError);
08663: }
08664:
08665: // Alternative <Float>.
08666:
08667: yyResult = pWord(yyStart);
08668: yyError = yyResult.select(yyError);
08669: if (yyResult.hasValue("float")) {
08670: final String v$g$6 = "float";
08671:
08672: yyValue = GNode.create("PrimitiveType", v$g$6);
08673: yyValue.setLocation(location(yyStart));
08674:
08675: return yyResult.createValue(yyValue, yyError);
08676: }
08677:
08678: // Alternative <Double>.
08679:
08680: yyResult = pWord(yyStart);
08681: yyError = yyResult.select(yyError);
08682: if (yyResult.hasValue("double")) {
08683: final String v$g$7 = "double";
08684:
08685: yyValue = GNode.create("PrimitiveType", v$g$7);
08686: yyValue.setLocation(location(yyStart));
08687:
08688: return yyResult.createValue(yyValue, yyError);
08689: }
08690:
08691: // Alternative <Boolean>.
08692:
08693: yyResult = pWord(yyStart);
08694: yyError = yyResult.select(yyError);
08695: if (yyResult.hasValue("boolean")) {
08696: final String v$g$8 = "boolean";
08697:
08698: yyValue = GNode.create("PrimitiveType", v$g$8);
08699: yyValue.setLocation(location(yyStart));
08700:
08701: return yyResult.createValue(yyValue, yyError);
08702: }
08703:
08704: // Done.
08705: yyError = yyError.select("primitive type expected", yyStart);
08706: return yyError;
08707: }
08708:
08709: // =========================================================================
08710:
08711: /**
08712: * Parse nonterminal xtc.lang.JavaTypePattern.ClassType.
08713: *
08714: * @param yyStart The index.
08715: * @return The result.
08716: * @throws IOException Signals an I/O error.
08717: */
08718: private Result pClassType(final int yyStart) throws IOException {
08719: int yyC;
08720: Result yyResult;
08721: boolean yyPredMatched;
08722: Node yyValue;
08723: ParseError yyError = ParseError.DUMMY;
08724:
08725: // Alternative <Name>.
08726:
08727: yyResult = pQualifiedIdentifier(yyStart);
08728: yyError = yyResult.select(yyError);
08729: if (yyResult.hasValue()) {
08730: yyValue = yyResult.semanticValue();
08731:
08732: yyPredMatched = false;
08733:
08734: yyC = character(yyResult.index);
08735: if ('<' == yyC) {
08736:
08737: yyPredMatched = true;
08738: }
08739:
08740: if (!yyPredMatched) {
08741:
08742: return yyResult.createValue(yyValue, yyError);
08743: } else {
08744: yyError = yyError
08745: .select("class type expected", yyStart);
08746: }
08747: }
08748:
08749: // Alternative <Instantiated>.
08750:
08751: yyResult = pInstantiatedType(yyStart);
08752: yyError = yyResult.select(yyError);
08753: if (yyResult.hasValue()) {
08754: yyValue = yyResult.semanticValue();
08755:
08756: return yyResult.createValue(yyValue, yyError);
08757: }
08758:
08759: // Alternative <Patterned>.
08760:
08761: yyResult = pJavaTypePattern$NodeVariable(yyStart);
08762: yyError = yyResult.select(yyError);
08763: if (yyResult.hasValue()) {
08764: yyValue = yyResult.semanticValue();
08765:
08766: return yyResult.createValue(yyValue, yyError);
08767: }
08768:
08769: // Done.
08770: return yyError;
08771: }
08772:
08773: // =========================================================================
08774:
08775: /**
08776: * Parse nonterminal xtc.lang.JavaTypePattern.Dimensions.
08777: *
08778: * @param yyStart The index.
08779: * @return The result.
08780: * @throws IOException Signals an I/O error.
08781: */
08782: private Result pDimensions(final int yyStart) throws IOException {
08783: JavaFactoryParserColumn yyColumn = (JavaFactoryParserColumn) column(yyStart);
08784: if (null == yyColumn.chunk3)
08785: yyColumn.chunk3 = new Chunk3();
08786: if (null == yyColumn.chunk3.fDimensions)
08787: yyColumn.chunk3.fDimensions = pDimensions$1(yyStart);
08788: return yyColumn.chunk3.fDimensions;
08789: }
08790:
08791: /** Actually parse xtc.lang.JavaTypePattern.Dimensions. */
08792: private Result pDimensions$1(final int yyStart) throws IOException {
08793: Result yyResult;
08794: Node yyValue;
08795: ParseError yyError = ParseError.DUMMY;
08796:
08797: // Alternative 1.
08798:
08799: yyResult = pDimensions$$Plus1(yyStart);
08800: yyError = yyResult.select(yyError);
08801: if (yyResult.hasValue()) {
08802: final Pair<String> v$g$1 = yyResult.semanticValue();
08803:
08804: yyValue = GNode.createFromPair("Dimensions", v$g$1);
08805: yyValue.setLocation(location(yyStart));
08806:
08807: return yyResult.createValue(yyValue, yyError);
08808: }
08809:
08810: // Done.
08811: return yyError;
08812: }
08813:
08814: // =========================================================================
08815:
08816: /**
08817: * Parse synthetic nonterminal xtc.lang.JavaFactory.Dimensions$$Plus1.
08818: *
08819: * @param yyStart The index.
08820: * @return The result.
08821: * @throws IOException Signals an I/O error.
08822: */
08823: private Result pDimensions$$Plus1(final int yyStart)
08824: throws IOException {
08825: JavaFactoryParserColumn yyColumn = (JavaFactoryParserColumn) column(yyStart);
08826: if (null == yyColumn.chunk3)
08827: yyColumn.chunk3 = new Chunk3();
08828: if (null == yyColumn.chunk3.fDimensions$$Plus1)
08829: yyColumn.chunk3.fDimensions$$Plus1 = pDimensions$$Plus1$1(yyStart);
08830: return yyColumn.chunk3.fDimensions$$Plus1;
08831: }
08832:
08833: /** Actually parse xtc.lang.JavaFactory.Dimensions$$Plus1. */
08834: private Result pDimensions$$Plus1$1(final int yyStart)
08835: throws IOException {
08836: Result yyResult;
08837: int yyBase;
08838: Pair<String> yyValue;
08839: ParseError yyError = ParseError.DUMMY;
08840:
08841: // Alternative 1.
08842:
08843: yyResult = pSymbol(yyStart);
08844: yyError = yyResult.select(yyError);
08845: if (yyResult.hasValue("[")) {
08846: final String v$el$1 = "[";
08847:
08848: yyBase = yyResult.index;
08849: yyResult = pSymbol(yyBase);
08850: yyError = yyResult.select(yyError);
08851: if (yyResult.hasValue("]")) {
08852:
08853: final int yyChoice1 = yyResult.index;
08854:
08855: // Nested alternative 1.
08856:
08857: yyResult = pDimensions$$Plus1(yyChoice1);
08858: yyError = yyResult.select(yyError);
08859: if (yyResult.hasValue()) {
08860: final Pair<String> v$2 = yyResult.semanticValue();
08861:
08862: yyValue = new Pair<String>(v$el$1, v$2);
08863:
08864: return yyResult.createValue(yyValue, yyError);
08865: }
08866:
08867: // Nested alternative 2.
08868:
08869: yyValue = new Pair<String>(v$el$1);
08870:
08871: return new SemanticValue(yyValue, yyChoice1, yyError);
08872: } else {
08873: yyError = yyError.select("\"]\" expected", yyBase);
08874: }
08875: }
08876:
08877: // Done.
08878: yyError = yyError.select("dimensions expected", yyStart);
08879: return yyError;
08880: }
08881:
08882: // =========================================================================
08883:
08884: /**
08885: * Parse nonterminal xtc.lang.JavaTypePattern.TypeParameters.
08886: *
08887: * @param yyStart The index.
08888: * @return The result.
08889: * @throws IOException Signals an I/O error.
08890: */
08891: private Result pTypeParameters(final int yyStart)
08892: throws IOException {
08893: JavaFactoryParserColumn yyColumn = (JavaFactoryParserColumn) column(yyStart);
08894: if (null == yyColumn.chunk3)
08895: yyColumn.chunk3 = new Chunk3();
08896: if (null == yyColumn.chunk3.fTypeParameters)
08897: yyColumn.chunk3.fTypeParameters = pTypeParameters$1(yyStart);
08898: return yyColumn.chunk3.fTypeParameters;
08899: }
08900:
08901: /** Actually parse xtc.lang.JavaTypePattern.TypeParameters. */
08902: private Result pTypeParameters$1(final int yyStart)
08903: throws IOException {
08904: int yyC;
08905: int yyIndex;
08906: Result yyResult;
08907: int yyBase;
08908: Node yyValue;
08909: ParseError yyError = ParseError.DUMMY;
08910:
08911: // Alternative <Parameters>.
08912:
08913: yyC = character(yyStart);
08914: if ('<' == yyC) {
08915: yyIndex = yyStart + 1;
08916:
08917: yyResult = pSpacing(yyIndex);
08918: yyError = yyResult.select(yyError);
08919: if (yyResult.hasValue()) {
08920:
08921: yyResult = pTypeParameter(yyResult.index);
08922: yyError = yyResult.select(yyError);
08923: if (yyResult.hasValue()) {
08924: final Node v$g$1 = yyResult.semanticValue();
08925:
08926: yyResult = pTypeParameters$$Star1(yyResult.index);
08927: yyError = yyResult.select(yyError);
08928: if (yyResult.hasValue()) {
08929: final Pair<Node> v$g$2 = yyResult
08930: .semanticValue();
08931:
08932: yyBase = yyResult.index;
08933: yyC = character(yyBase);
08934: if ('>' == yyC) {
08935: yyIndex = yyResult.index + 1;
08936:
08937: yyResult = pSpacing(yyIndex);
08938: yyError = yyResult.select(yyError);
08939: if (yyResult.hasValue()) {
08940:
08941: yyValue = GNode.createFromPair(
08942: "TypeParameters", v$g$1, v$g$2);
08943: yyValue.setLocation(location(yyStart));
08944:
08945: return yyResult.createValue(yyValue,
08946: yyError);
08947: }
08948: } else {
08949: yyError = yyError.select("\">\" expected",
08950: yyBase);
08951: }
08952: }
08953: }
08954: }
08955: }
08956:
08957: // Done.
08958: yyError = yyError.select("type parameters expected", yyStart);
08959: return yyError;
08960: }
08961:
08962: // =========================================================================
08963:
08964: /**
08965: * Parse synthetic nonterminal xtc.lang.JavaFactory.TypeParameters$$Star1.
08966: *
08967: * @param yyStart The index.
08968: * @return The result.
08969: * @throws IOException Signals an I/O error.
08970: */
08971: private Result pTypeParameters$$Star1(final int yyStart)
08972: throws IOException {
08973:
08974: JavaFactoryParserColumn yyColumn = (JavaFactoryParserColumn) column(yyStart);
08975: if (null == yyColumn.chunk3)
08976: yyColumn.chunk3 = new Chunk3();
08977: if (null == yyColumn.chunk3.fTypeParameters$$Star1)
08978: yyColumn.chunk3.fTypeParameters$$Star1 = pTypeParameters$$Star1$1(yyStart);
08979: return yyColumn.chunk3.fTypeParameters$$Star1;
08980: }
08981:
08982: /** Actually parse xtc.lang.JavaFactory.TypeParameters$$Star1. */
08983: private Result pTypeParameters$$Star1$1(final int yyStart)
08984: throws IOException {
08985:
08986: Result yyResult;
08987: Pair<Node> yyValue;
08988: ParseError yyError = ParseError.DUMMY;
08989:
08990: // Alternative 1.
08991:
08992: yyResult = pSymbol(yyStart);
08993: yyError = yyResult.select(yyError);
08994: if (yyResult.hasValue(",")) {
08995:
08996: yyResult = pTypeParameter(yyResult.index);
08997: yyError = yyResult.select(yyError);
08998: if (yyResult.hasValue()) {
08999: final Node v$el$1 = yyResult.semanticValue();
09000:
09001: yyResult = pTypeParameters$$Star1(yyResult.index);
09002: yyError = yyResult.select(yyError);
09003: if (yyResult.hasValue()) {
09004: final Pair<Node> v$2 = yyResult.semanticValue();
09005:
09006: yyValue = new Pair<Node>(v$el$1, v$2);
09007:
09008: return yyResult.createValue(yyValue, yyError);
09009: }
09010: }
09011: }
09012:
09013: // Alternative 2.
09014:
09015: yyValue = Pair.empty();
09016:
09017: return new SemanticValue(yyValue, yyStart, yyError);
09018: }
09019:
09020: // =========================================================================
09021:
09022: /**
09023: * Parse nonterminal xtc.lang.JavaTypePattern.TypeParameter.
09024: *
09025: * @param yyStart The index.
09026: * @return The result.
09027: * @throws IOException Signals an I/O error.
09028: */
09029: private Result pTypeParameter(final int yyStart) throws IOException {
09030: JavaFactoryParserColumn yyColumn = (JavaFactoryParserColumn) column(yyStart);
09031: if (null == yyColumn.chunk3)
09032: yyColumn.chunk3 = new Chunk3();
09033: if (null == yyColumn.chunk3.fTypeParameter)
09034: yyColumn.chunk3.fTypeParameter = pTypeParameter$1(yyStart);
09035: return yyColumn.chunk3.fTypeParameter;
09036: }
09037:
09038: /** Actually parse xtc.lang.JavaTypePattern.TypeParameter. */
09039: private Result pTypeParameter$1(final int yyStart)
09040: throws IOException {
09041: Result yyResult;
09042: int yyBase;
09043: int yyOption1;
09044: Node yyOpValue1;
09045: Node yyValue;
09046: ParseError yyError = ParseError.DUMMY;
09047:
09048: // Alternative <Parameter>.
09049:
09050: yyResult = pIdentifier(yyStart);
09051: yyError = yyResult.select(yyError);
09052: if (yyResult.hasValue()) {
09053: final String v$g$1 = yyResult.semanticValue();
09054:
09055: yyOption1 = yyResult.index;
09056: yyOpValue1 = null;
09057:
09058: yyBase = yyOption1;
09059: yyResult = pWord(yyBase);
09060: yyError = yyResult.select(yyError);
09061: if (yyResult.hasValue("extends")) {
09062:
09063: yyResult = pBound(yyResult.index);
09064: yyError = yyResult.select(yyError);
09065: if (yyResult.hasValue()) {
09066: final Node v$el$1 = yyResult.semanticValue();
09067:
09068: yyOption1 = yyResult.index;
09069: yyOpValue1 = v$el$1;
09070: }
09071: } else {
09072: yyError = yyError
09073: .select("\"extends\" expected", yyBase);
09074: }
09075: { // Start scope for v$g$2.
09076: final Node v$g$2 = yyOpValue1;
09077:
09078: yyValue = GNode.create("TypeParameter", v$g$1, v$g$2);
09079: yyValue.setLocation(location(yyStart));
09080:
09081: return new SemanticValue(yyValue, yyOption1, yyError);
09082: } // End scope for v$g$2.
09083: }
09084:
09085: // Alternative <Patterned>.
09086:
09087: yyResult = pJavaTypePattern$StringVariable(yyStart);
09088: yyError = yyResult.select(yyError);
09089: if (yyResult.hasValue()) {
09090: final Node v$g$3 = yyResult.semanticValue();
09091:
09092: yyValue = GNode.create("TypeParameter", v$g$3, null);
09093: yyValue.setLocation(location(yyStart));
09094:
09095: return yyResult.createValue(yyValue, yyError);
09096: }
09097:
09098: // Done.
09099: return yyError;
09100: }
09101:
09102: // =========================================================================
09103:
09104: /**
09105: * Parse nonterminal xtc.lang.JavaTypePattern.Bound.
09106: *
09107: * @param yyStart The index.
09108: * @return The result.
09109: * @throws IOException Signals an I/O error.
09110: */
09111: private Result pBound(final int yyStart) throws IOException {
09112: Result yyResult;
09113: int yyBase;
09114: int yyRepetition1;
09115: Pair<Node> yyRepValue1;
09116: Node yyValue;
09117: ParseError yyError = ParseError.DUMMY;
09118:
09119: // Alternative <Bound>.
09120:
09121: yyResult = pType(yyStart);
09122: yyError = yyResult.select(yyError);
09123: if (yyResult.hasValue()) {
09124: final Node v$g$1 = yyResult.semanticValue();
09125:
09126: yyRepetition1 = yyResult.index;
09127: yyRepValue1 = Pair.empty();
09128: while (true) {
09129:
09130: yyBase = yyRepetition1;
09131: yyResult = pSymbol(yyBase);
09132: yyError = yyResult.select(yyError);
09133: if (yyResult.hasValue("&")) {
09134:
09135: yyResult = pType(yyResult.index);
09136: yyError = yyResult.select(yyError);
09137: if (yyResult.hasValue()) {
09138: final Node v$el$1 = yyResult.semanticValue();
09139:
09140: yyRepetition1 = yyResult.index;
09141: yyRepValue1 = new Pair<Node>(v$el$1,
09142: yyRepValue1);
09143: continue;
09144: }
09145: } else {
09146: yyError = yyError.select("\"&\" expected", yyBase);
09147: }
09148: break;
09149: }
09150: { // Start scope for v$g$2.
09151: final Pair<Node> v$g$2 = yyRepValue1.reverse();
09152:
09153: yyValue = GNode.createFromPair("Bound", v$g$1, v$g$2);
09154: yyValue.setLocation(location(yyStart));
09155:
09156: return new SemanticValue(yyValue, yyRepetition1,
09157: yyError);
09158: } // End scope for v$g$2.
09159: }
09160:
09161: // Done.
09162: return yyError;
09163: }
09164:
09165: // =========================================================================
09166:
09167: /**
09168: * Parse nonterminal xtc.lang.JavaTypePattern.TypeArguments.
09169: *
09170: * @param yyStart The index.
09171: * @return The result.
09172: * @throws IOException Signals an I/O error.
09173: */
09174: private Result pTypeArguments(final int yyStart) throws IOException {
09175: JavaFactoryParserColumn yyColumn = (JavaFactoryParserColumn) column(yyStart);
09176: if (null == yyColumn.chunk3)
09177: yyColumn.chunk3 = new Chunk3();
09178: if (null == yyColumn.chunk3.fTypeArguments)
09179: yyColumn.chunk3.fTypeArguments = pTypeArguments$1(yyStart);
09180: return yyColumn.chunk3.fTypeArguments;
09181: }
09182:
09183: /** Actually parse xtc.lang.JavaTypePattern.TypeArguments. */
09184: private Result pTypeArguments$1(final int yyStart)
09185: throws IOException {
09186: int yyC;
09187: int yyIndex;
09188: Result yyResult;
09189: int yyBase;
09190: Node yyValue;
09191: ParseError yyError = ParseError.DUMMY;
09192:
09193: // Alternative <Arguments>.
09194:
09195: yyC = character(yyStart);
09196: if ('<' == yyC) {
09197: yyIndex = yyStart + 1;
09198:
09199: yyResult = pSpacing(yyIndex);
09200: yyError = yyResult.select(yyError);
09201: if (yyResult.hasValue()) {
09202:
09203: yyResult = pTypeArgument(yyResult.index);
09204: yyError = yyResult.select(yyError);
09205: if (yyResult.hasValue()) {
09206: final Node v$g$1 = yyResult.semanticValue();
09207:
09208: yyResult = pTypeArguments$$Star1(yyResult.index);
09209: yyError = yyResult.select(yyError);
09210: if (yyResult.hasValue()) {
09211: final Pair<Node> v$g$2 = yyResult
09212: .semanticValue();
09213:
09214: yyBase = yyResult.index;
09215: yyC = character(yyBase);
09216: if ('>' == yyC) {
09217: yyIndex = yyResult.index + 1;
09218:
09219: yyResult = pSpacing(yyIndex);
09220: yyError = yyResult.select(yyError);
09221: if (yyResult.hasValue()) {
09222:
09223: yyValue = GNode.createFromPair(
09224: "TypeArguments", v$g$1, v$g$2);
09225: yyValue.setLocation(location(yyStart));
09226:
09227: return yyResult.createValue(yyValue,
09228: yyError);
09229: }
09230: } else {
09231: yyError = yyError.select("\">\" expected",
09232: yyBase);
09233: }
09234: }
09235: }
09236: }
09237: }
09238:
09239: // Done.
09240: yyError = yyError.select("type arguments expected", yyStart);
09241: return yyError;
09242: }
09243:
09244: // =========================================================================
09245:
09246: /**
09247: * Parse synthetic nonterminal xtc.lang.JavaFactory.TypeArguments$$Star1.
09248: *
09249: * @param yyStart The index.
09250: * @return The result.
09251: * @throws IOException Signals an I/O error.
09252: */
09253: private Result pTypeArguments$$Star1(final int yyStart)
09254: throws IOException {
09255: JavaFactoryParserColumn yyColumn = (JavaFactoryParserColumn) column(yyStart);
09256: if (null == yyColumn.chunk4)
09257: yyColumn.chunk4 = new Chunk4();
09258: if (null == yyColumn.chunk4.fTypeArguments$$Star1)
09259: yyColumn.chunk4.fTypeArguments$$Star1 = pTypeArguments$$Star1$1(yyStart);
09260: return yyColumn.chunk4.fTypeArguments$$Star1;
09261: }
09262:
09263: /** Actually parse xtc.lang.JavaFactory.TypeArguments$$Star1. */
09264: private Result pTypeArguments$$Star1$1(final int yyStart)
09265: throws IOException {
09266:
09267: Result yyResult;
09268: Pair<Node> yyValue;
09269: ParseError yyError = ParseError.DUMMY;
09270:
09271: // Alternative 1.
09272:
09273: yyResult = pSymbol(yyStart);
09274: yyError = yyResult.select(yyError);
09275: if (yyResult.hasValue(",")) {
09276:
09277: yyResult = pTypeArgument(yyResult.index);
09278: yyError = yyResult.select(yyError);
09279: if (yyResult.hasValue()) {
09280: final Node v$el$1 = yyResult.semanticValue();
09281:
09282: yyResult = pTypeArguments$$Star1(yyResult.index);
09283: yyError = yyResult.select(yyError);
09284: if (yyResult.hasValue()) {
09285: final Pair<Node> v$2 = yyResult.semanticValue();
09286:
09287: yyValue = new Pair<Node>(v$el$1, v$2);
09288:
09289: return yyResult.createValue(yyValue, yyError);
09290: }
09291: }
09292: }
09293:
09294: // Alternative 2.
09295:
09296: yyValue = Pair.empty();
09297:
09298: return new SemanticValue(yyValue, yyStart, yyError);
09299: }
09300:
09301: // =========================================================================
09302:
09303: /**
09304: * Parse nonterminal xtc.lang.JavaTypePattern.TypeArgument.
09305: *
09306: * @param yyStart The index.
09307: * @return The result.
09308: * @throws IOException Signals an I/O error.
09309: */
09310: private Result pTypeArgument(final int yyStart) throws IOException {
09311: JavaFactoryParserColumn yyColumn = (JavaFactoryParserColumn) column(yyStart);
09312: if (null == yyColumn.chunk4)
09313: yyColumn.chunk4 = new Chunk4();
09314: if (null == yyColumn.chunk4.fTypeArgument)
09315: yyColumn.chunk4.fTypeArgument = pTypeArgument$1(yyStart);
09316: return yyColumn.chunk4.fTypeArgument;
09317: }
09318:
09319: /** Actually parse xtc.lang.JavaTypePattern.TypeArgument. */
09320: private Result pTypeArgument$1(final int yyStart)
09321: throws IOException {
09322: Result yyResult;
09323: Node yyValue;
09324: ParseError yyError = ParseError.DUMMY;
09325:
09326: // Alternative <Type>.
09327:
09328: yyResult = pType(yyStart);
09329: yyError = yyResult.select(yyError);
09330: if (yyResult.hasValue()) {
09331: yyValue = yyResult.semanticValue();
09332:
09333: return yyResult.createValue(yyValue, yyError);
09334: }
09335:
09336: // Alternative <Wildcard>.
09337:
09338: yyResult = pWildcard(yyStart);
09339: yyError = yyResult.select(yyError);
09340: if (yyResult.hasValue()) {
09341: yyValue = yyResult.semanticValue();
09342:
09343: return yyResult.createValue(yyValue, yyError);
09344: }
09345:
09346: // Done.
09347: return yyError;
09348: }
09349:
09350: // =========================================================================
09351:
09352: /**
09353: * Parse nonterminal xtc.lang.JavaTypePattern.Wildcard.
09354: *
09355: * @param yyStart The index.
09356: * @return The result.
09357: * @throws IOException Signals an I/O error.
09358: */
09359: private Result pWildcard(final int yyStart) throws IOException {
09360: Result yyResult;
09361: int yyOption1;
09362: Node yyOpValue1;
09363: Node yyValue;
09364: ParseError yyError = ParseError.DUMMY;
09365:
09366: // Alternative <Wildcard>.
09367:
09368: yyResult = pSymbol(yyStart);
09369: yyError = yyResult.select(yyError);
09370: if (yyResult.hasValue("?")) {
09371:
09372: yyOption1 = yyResult.index;
09373: yyOpValue1 = null;
09374:
09375: yyResult = pWildcardBound(yyOption1);
09376: yyError = yyResult.select(yyError);
09377: if (yyResult.hasValue()) {
09378: final Node v$el$1 = yyResult.semanticValue();
09379:
09380: yyOption1 = yyResult.index;
09381: yyOpValue1 = v$el$1;
09382: }
09383: { // Start scope for v$g$1.
09384: final Node v$g$1 = yyOpValue1;
09385:
09386: yyValue = GNode.create("Wildcard", v$g$1);
09387: yyValue.setLocation(location(yyStart));
09388:
09389: return new SemanticValue(yyValue, yyOption1, yyError);
09390: } // End scope for v$g$1.
09391: }
09392:
09393: // Done.
09394: yyError = yyError.select("wildcard expected", yyStart);
09395: return yyError;
09396: }
09397:
09398: // =========================================================================
09399:
09400: /**
09401: * Parse nonterminal xtc.lang.JavaTypePattern.WildcardBound.
09402: *
09403: * @param yyStart The index.
09404: * @return The result.
09405: * @throws IOException Signals an I/O error.
09406: */
09407: private Result pWildcardBound(final int yyStart) throws IOException {
09408: Result yyResult;
09409: Node yyValue;
09410: ParseError yyError = ParseError.DUMMY;
09411:
09412: // Alternative <Extends>.
09413:
09414: yyResult = pWord(yyStart);
09415: yyError = yyResult.select(yyError);
09416: if (yyResult.hasValue("extends")) {
09417: final String v$g$1 = "extends";
09418:
09419: yyResult = pType(yyResult.index);
09420: yyError = yyResult.select(yyError);
09421: if (yyResult.hasValue()) {
09422: final Node v$g$2 = yyResult.semanticValue();
09423:
09424: yyValue = GNode.create("WildcardBound", v$g$1, v$g$2);
09425: yyValue.setLocation(location(yyStart));
09426:
09427: return yyResult.createValue(yyValue, yyError);
09428: }
09429: }
09430:
09431: // Alternative <Super>.
09432:
09433: yyResult = pWord(yyStart);
09434: yyError = yyResult.select(yyError);
09435: if (yyResult.hasValue("super")) {
09436: final String v$g$3 = "super";
09437:
09438: yyResult = pType(yyResult.index);
09439: yyError = yyResult.select(yyError);
09440: if (yyResult.hasValue()) {
09441: final Node v$g$4 = yyResult.semanticValue();
09442:
09443: yyValue = GNode.create("WildcardBound", v$g$3, v$g$4);
09444: yyValue.setLocation(location(yyStart));
09445:
09446: return yyResult.createValue(yyValue, yyError);
09447: }
09448: }
09449:
09450: // Done.
09451: yyError = yyError.select("wildcard bound expected", yyStart);
09452: return yyError;
09453: }
09454:
09455: // =========================================================================
09456:
09457: /**
09458: * Parse nonterminal xtc.lang.JavaTypePattern.InstantiatedType.
09459: *
09460: * @param yyStart The index.
09461: * @return The result.
09462: * @throws IOException Signals an I/O error.
09463: */
09464: private Result pInstantiatedType(final int yyStart)
09465: throws IOException {
09466: Result yyResult;
09467: int yyBase;
09468: int yyRepetition1;
09469: Pair<Node> yyRepValue1;
09470: Node yyValue;
09471: ParseError yyError = ParseError.DUMMY;
09472:
09473: // Alternative <Reference>.
09474:
09475: yyResult = pTypeInstantiation(yyStart);
09476: yyError = yyResult.select(yyError);
09477: if (yyResult.hasValue()) {
09478: final Node v$g$1 = yyResult.semanticValue();
09479:
09480: yyRepetition1 = yyResult.index;
09481: yyRepValue1 = Pair.empty();
09482: while (true) {
09483:
09484: yyBase = yyRepetition1;
09485: yyResult = pSymbol(yyBase);
09486: yyError = yyResult.select(yyError);
09487: if (yyResult.hasValue(".")) {
09488:
09489: yyResult = pTypeInstantiation(yyResult.index);
09490: yyError = yyResult.select(yyError);
09491: if (yyResult.hasValue()) {
09492: final Node v$el$1 = yyResult.semanticValue();
09493:
09494: yyRepetition1 = yyResult.index;
09495: yyRepValue1 = new Pair<Node>(v$el$1,
09496: yyRepValue1);
09497: continue;
09498: }
09499: } else {
09500: yyError = yyError.select("\".\" expected", yyBase);
09501: }
09502: break;
09503: }
09504: { // Start scope for v$g$2.
09505: final Pair<Node> v$g$2 = yyRepValue1.reverse();
09506:
09507: yyValue = GNode.createFromPair("InstantiatedType",
09508: v$g$1, v$g$2);
09509: yyValue.setLocation(location(yyStart));
09510:
09511: return new SemanticValue(yyValue, yyRepetition1,
09512: yyError);
09513: } // End scope for v$g$2.
09514: }
09515:
09516: // Done.
09517: return yyError;
09518: }
09519:
09520: // =========================================================================
09521:
09522: /**
09523: * Parse nonterminal xtc.lang.JavaTypePattern.TypeInstantiation.
09524: *
09525: * @param yyStart The index.
09526: * @return The result.
09527: * @throws IOException Signals an I/O error.
09528: */
09529: private Result pTypeInstantiation(final int yyStart)
09530: throws IOException {
09531: JavaFactoryParserColumn yyColumn = (JavaFactoryParserColumn) column(yyStart);
09532: if (null == yyColumn.chunk4)
09533: yyColumn.chunk4 = new Chunk4();
09534: if (null == yyColumn.chunk4.fTypeInstantiation)
09535: yyColumn.chunk4.fTypeInstantiation = pTypeInstantiation$1(yyStart);
09536: return yyColumn.chunk4.fTypeInstantiation;
09537: }
09538:
09539: /** Actually parse xtc.lang.JavaTypePattern.TypeInstantiation. */
09540: private Result pTypeInstantiation$1(final int yyStart)
09541: throws IOException {
09542: Result yyResult;
09543: int yyOption1;
09544: Node yyOpValue1;
09545: Node yyValue;
09546: ParseError yyError = ParseError.DUMMY;
09547:
09548: // Alternative <Instantiation>.
09549:
09550: yyResult = pIdentifier(yyStart);
09551: yyError = yyResult.select(yyError);
09552: if (yyResult.hasValue()) {
09553: final String v$g$1 = yyResult.semanticValue();
09554:
09555: yyOption1 = yyResult.index;
09556: yyOpValue1 = null;
09557:
09558: yyResult = pTypeArguments(yyOption1);
09559: yyError = yyResult.select(yyError);
09560: if (yyResult.hasValue()) {
09561: final Node v$el$1 = yyResult.semanticValue();
09562:
09563: yyOption1 = yyResult.index;
09564: yyOpValue1 = v$el$1;
09565: }
09566: { // Start scope for v$g$2.
09567: final Node v$g$2 = yyOpValue1;
09568:
09569: yyValue = GNode.create("TypeInstantiation", v$g$1,
09570: v$g$2);
09571: yyValue.setLocation(location(yyStart));
09572:
09573: return new SemanticValue(yyValue, yyOption1, yyError);
09574: } // End scope for v$g$2.
09575: }
09576:
09577: // Done.
09578: return yyError;
09579: }
09580:
09581: // =========================================================================
09582:
09583: /**
09584: * Parse nonterminal xtc.lang.JavaTypePattern.NodeVariable.
09585: *
09586: * @param yyStart The index.
09587: * @return The result.
09588: * @throws IOException Signals an I/O error.
09589: */
09590: private Result pJavaTypePattern$NodeVariable(final int yyStart)
09591: throws IOException {
09592:
09593: int yyC;
09594: int yyIndex;
09595: Result yyResult;
09596: Node yyValue;
09597: ParseError yyError = ParseError.DUMMY;
09598:
09599: // Alternative 1.
09600:
09601: yyC = character(yyStart);
09602: if ('#' == yyC) {
09603: yyIndex = yyStart + 1;
09604:
09605: yyResult = pWord(yyIndex);
09606: yyError = yyResult.select(yyError);
09607: if (yyResult.hasValue()) {
09608: final String v$g$1 = yyResult.semanticValue();
09609:
09610: yyValue = GNode.create("NodeVariable", v$g$1);
09611: yyValue.setLocation(location(yyStart));
09612:
09613: return yyResult.createValue(yyValue, yyError);
09614: }
09615: }
09616:
09617: // Done.
09618: yyError = yyError.select("node variable expected", yyStart);
09619: return yyError;
09620: }
09621:
09622: // =========================================================================
09623:
09624: /**
09625: * Parse nonterminal xtc.lang.JavaTypePattern.StringVariable.
09626: *
09627: * @param yyStart The index.
09628: * @return The result.
09629: * @throws IOException Signals an I/O error.
09630: */
09631: private Result pJavaTypePattern$StringVariable(final int yyStart)
09632: throws IOException {
09633:
09634: int yyC;
09635: int yyIndex;
09636: Result yyResult;
09637: Node yyValue;
09638: ParseError yyError = ParseError.DUMMY;
09639:
09640: // Alternative 1.
09641:
09642: yyC = character(yyStart);
09643: if ('#' == yyC) {
09644: yyIndex = yyStart + 1;
09645:
09646: yyResult = pWord(yyIndex);
09647: yyError = yyResult.select(yyError);
09648: if (yyResult.hasValue()) {
09649: final String v$g$1 = yyResult.semanticValue();
09650:
09651: yyValue = GNode.create("StringVariable", v$g$1);
09652: yyValue.setLocation(location(yyStart));
09653:
09654: return yyResult.createValue(yyValue, yyError);
09655: }
09656: }
09657:
09658: // Done.
09659: yyError = yyError.select("string variable expected", yyStart);
09660: return yyError;
09661: }
09662:
09663: // =========================================================================
09664:
09665: /**
09666: * Parse nonterminal xtc.lang.JavaConstant.Literal.
09667: *
09668: * @param yyStart The index.
09669: * @return The result.
09670: * @throws IOException Signals an I/O error.
09671: */
09672: private Result pLiteral(final int yyStart) throws IOException {
09673: Result yyResult;
09674: Node yyValue;
09675: ParseError yyError = ParseError.DUMMY;
09676:
09677: // Alternative 1.
09678:
09679: yyResult = pFloatingPointLiteral(yyStart);
09680: yyError = yyResult.select(yyError);
09681: if (yyResult.hasValue()) {
09682: yyValue = yyResult.semanticValue();
09683:
09684: yyResult = pSpacing(yyResult.index);
09685: yyError = yyResult.select(yyError);
09686: if (yyResult.hasValue()) {
09687:
09688: return yyResult.createValue(yyValue, yyError);
09689: }
09690: }
09691:
09692: // Alternative 2.
09693:
09694: yyResult = pIntegerLiteral(yyStart);
09695: yyError = yyResult.select(yyError);
09696: if (yyResult.hasValue()) {
09697: yyValue = yyResult.semanticValue();
09698:
09699: yyResult = pSpacing(yyResult.index);
09700: yyError = yyResult.select(yyError);
09701: if (yyResult.hasValue()) {
09702:
09703: return yyResult.createValue(yyValue, yyError);
09704: }
09705: }
09706:
09707: // Alternative 3.
09708:
09709: yyResult = pCharacterLiteral(yyStart);
09710: yyError = yyResult.select(yyError);
09711: if (yyResult.hasValue()) {
09712: yyValue = yyResult.semanticValue();
09713:
09714: yyResult = pSpacing(yyResult.index);
09715: yyError = yyResult.select(yyError);
09716: if (yyResult.hasValue()) {
09717:
09718: return yyResult.createValue(yyValue, yyError);
09719: }
09720: }
09721:
09722: // Alternative 4.
09723:
09724: yyResult = pStringLiteral(yyStart);
09725: yyError = yyResult.select(yyError);
09726: if (yyResult.hasValue()) {
09727: yyValue = yyResult.semanticValue();
09728:
09729: yyResult = pSpacing(yyResult.index);
09730: yyError = yyResult.select(yyError);
09731: if (yyResult.hasValue()) {
09732:
09733: return yyResult.createValue(yyValue, yyError);
09734: }
09735: }
09736:
09737: // Alternative 5.
09738:
09739: yyResult = pWord(yyStart);
09740: yyError = yyResult.select(yyError);
09741: if (yyResult.hasValue("true")) {
09742: final String v$g$1 = "true";
09743:
09744: yyValue = GNode.create("BooleanLiteral", v$g$1);
09745: yyValue.setLocation(location(yyStart));
09746:
09747: return yyResult.createValue(yyValue, yyError);
09748: }
09749:
09750: // Alternative 6.
09751:
09752: yyResult = pWord(yyStart);
09753: yyError = yyResult.select(yyError);
09754: if (yyResult.hasValue("false")) {
09755: final String v$g$2 = "false";
09756:
09757: yyValue = GNode.create("BooleanLiteral", v$g$2);
09758: yyValue.setLocation(location(yyStart));
09759:
09760: return yyResult.createValue(yyValue, yyError);
09761: }
09762:
09763: // Alternative 7.
09764:
09765: yyResult = pWord(yyStart);
09766: yyError = yyResult.select(yyError);
09767: if (yyResult.hasValue("null")) {
09768:
09769: yyValue = GNode.create("NullLiteral", false);
09770: yyValue.setLocation(location(yyStart));
09771:
09772: return yyResult.createValue(yyValue, yyError);
09773: }
09774:
09775: // Done.
09776: yyError = yyError.select("literal expected", yyStart);
09777: return yyError;
09778: }
09779:
09780: // =========================================================================
09781:
09782: /**
09783: * Parse nonterminal xtc.lang.JavaConstant.IntegerLiteral.
09784: *
09785: * @param yyStart The index.
09786: * @return The result.
09787: * @throws IOException Signals an I/O error.
09788: */
09789: private Result pIntegerLiteral(final int yyStart)
09790: throws IOException {
09791: Result yyResult;
09792: Node yyValue;
09793: ParseError yyError = ParseError.DUMMY;
09794:
09795: // Alternative <Hex>.
09796:
09797: yyResult = pHexLiteral(yyStart);
09798: yyError = yyResult.select(yyError);
09799: if (yyResult.hasValue()) {
09800: final String v$g$1 = yyResult.semanticValue();
09801:
09802: yyValue = GNode.create("IntegerLiteral", v$g$1);
09803: yyValue.setLocation(location(yyStart));
09804:
09805: return yyResult.createValue(yyValue, yyError);
09806: }
09807:
09808: // Alternative <Octal>.
09809:
09810: yyResult = pOctalLiteral(yyStart);
09811: yyError = yyResult.select(yyError);
09812: if (yyResult.hasValue()) {
09813: final String v$g$2 = yyResult.semanticValue();
09814:
09815: yyValue = GNode.create("IntegerLiteral", v$g$2);
09816: yyValue.setLocation(location(yyStart));
09817:
09818: return yyResult.createValue(yyValue, yyError);
09819: }
09820:
09821: // Alternative <Decimal>.
09822:
09823: yyResult = pDecimalLiteral(yyStart);
09824: yyError = yyResult.select(yyError);
09825: if (yyResult.hasValue()) {
09826: final String v$g$3 = yyResult.semanticValue();
09827:
09828: yyValue = GNode.create("IntegerLiteral", v$g$3);
09829: yyValue.setLocation(location(yyStart));
09830:
09831: return yyResult.createValue(yyValue, yyError);
09832: }
09833:
09834: // Done.
09835: return yyError;
09836: }
09837:
09838: // =========================================================================
09839:
09840: /**
09841: * Parse nonterminal xtc.lang.JavaConstant.HexLiteral.
09842: *
09843: * @param yyStart The index.
09844: * @return The result.
09845: * @throws IOException Signals an I/O error.
09846: */
09847: private Result pHexLiteral(final int yyStart) throws IOException {
09848: int yyC;
09849: int yyIndex;
09850: Result yyResult;
09851: int yyOption1;
09852: String yyValue;
09853: ParseError yyError = ParseError.DUMMY;
09854:
09855: // Alternative 1.
09856:
09857: yyResult = pHexNumeral(yyStart);
09858: yyError = yyResult.select(yyError);
09859: if (yyResult.hasValue()) {
09860:
09861: yyOption1 = yyResult.index;
09862:
09863: yyC = character(yyOption1);
09864: if (-1 != yyC) {
09865: yyIndex = yyOption1 + 1;
09866:
09867: switch (yyC) {
09868: case 'L':
09869: case 'l': {
09870: yyOption1 = yyIndex;
09871: }
09872:
09873: default:
09874: /* No match. */
09875: }
09876: }
09877:
09878: yyValue = difference(yyStart, yyOption1);
09879:
09880: return new SemanticValue(yyValue, yyOption1, yyError);
09881: }
09882:
09883: // Done.
09884: yyError = yyError.select("hex literal expected", yyStart);
09885: return yyError;
09886: }
09887:
09888: // =========================================================================
09889:
09890: /**
09891: * Parse nonterminal xtc.lang.JavaConstant.OctalLiteral.
09892: *
09893: * @param yyStart The index.
09894: * @return The result.
09895: * @throws IOException Signals an I/O error.
09896: */
09897: private Result pOctalLiteral(final int yyStart) throws IOException {
09898: int yyC;
09899: int yyIndex;
09900: Result yyResult;
09901: int yyOption1;
09902: String yyValue;
09903: ParseError yyError = ParseError.DUMMY;
09904:
09905: // Alternative 1.
09906:
09907: yyResult = pOctalNumeral(yyStart);
09908: yyError = yyResult.select(yyError);
09909: if (yyResult.hasValue()) {
09910:
09911: yyOption1 = yyResult.index;
09912:
09913: yyC = character(yyOption1);
09914: if (-1 != yyC) {
09915: yyIndex = yyOption1 + 1;
09916:
09917: switch (yyC) {
09918: case 'L':
09919: case 'l': {
09920: yyOption1 = yyIndex;
09921: }
09922:
09923: default:
09924: /* No match. */
09925: }
09926: }
09927:
09928: yyValue = difference(yyStart, yyOption1);
09929:
09930: return new SemanticValue(yyValue, yyOption1, yyError);
09931: }
09932:
09933: // Done.
09934: yyError = yyError.select("octal literal expected", yyStart);
09935: return yyError;
09936: }
09937:
09938: // =========================================================================
09939:
09940: /**
09941: * Parse nonterminal xtc.lang.JavaConstant.DecimalLiteral.
09942: *
09943: * @param yyStart The index.
09944: * @return The result.
09945: * @throws IOException Signals an I/O error.
09946: */
09947: private Result pDecimalLiteral(final int yyStart)
09948: throws IOException {
09949: int yyC;
09950: int yyIndex;
09951: Result yyResult;
09952: int yyOption1;
09953: String yyValue;
09954: ParseError yyError = ParseError.DUMMY;
09955:
09956: // Alternative 1.
09957:
09958: yyResult = pDecimalNumeral(yyStart);
09959: yyError = yyResult.select(yyError);
09960: if (yyResult.hasValue()) {
09961:
09962: yyOption1 = yyResult.index;
09963:
09964: yyC = character(yyOption1);
09965: if (-1 != yyC) {
09966: yyIndex = yyOption1 + 1;
09967:
09968: switch (yyC) {
09969: case 'L':
09970: case 'l': {
09971: yyOption1 = yyIndex;
09972: }
09973:
09974: default:
09975: /* No match. */
09976: }
09977: }
09978:
09979: yyValue = difference(yyStart, yyOption1);
09980:
09981: return new SemanticValue(yyValue, yyOption1, yyError);
09982: }
09983:
09984: // Done.
09985: yyError = yyError.select("decimal literal expected", yyStart);
09986: return yyError;
09987: }
09988:
09989: // =========================================================================
09990:
09991: /**
09992: * Parse nonterminal xtc.lang.JavaConstant.DecimalNumeral.
09993: *
09994: * @param yyStart The index.
09995: * @return The result.
09996: * @throws IOException Signals an I/O error.
09997: */
09998: private Result pDecimalNumeral(final int yyStart)
09999: throws IOException {
10000: int yyC;
10001: int yyIndex;
10002: int yyRepetition1;
10003: Void yyValue;
10004: ParseError yyError = ParseError.DUMMY;
10005:
10006: // Alternative 1.
10007:
10008: yyC = character(yyStart);
10009: if (-1 != yyC) {
10010: yyIndex = yyStart + 1;
10011:
10012: switch (yyC) {
10013: case '0': {
10014: yyValue = null;
10015:
10016: return new SemanticValue(yyValue, yyIndex, yyError);
10017: }
10018:
10019: case '1':
10020: case '2':
10021: case '3':
10022: case '4':
10023: case '5':
10024: case '6':
10025: case '7':
10026: case '8':
10027: case '9': {
10028: yyRepetition1 = yyIndex;
10029: while (true) {
10030:
10031: yyC = character(yyRepetition1);
10032: if (-1 != yyC) {
10033: yyIndex = yyRepetition1 + 1;
10034:
10035: switch (yyC) {
10036: case '0':
10037: case '1':
10038: case '2':
10039: case '3':
10040: case '4':
10041: case '5':
10042: case '6':
10043: case '7':
10044: case '8':
10045: case '9': {
10046: yyRepetition1 = yyIndex;
10047: continue;
10048: }
10049:
10050: default:
10051: /* No match. */
10052: }
10053: }
10054: break;
10055: }
10056:
10057: yyValue = null;
10058:
10059: return new SemanticValue(yyValue, yyRepetition1,
10060: yyError);
10061: }
10062:
10063: default:
10064: /* No match. */
10065: }
10066: }
10067:
10068: // Done.
10069: yyError = yyError.select("decimal numeral expected", yyStart);
10070: return yyError;
10071: }
10072:
10073: // =========================================================================
10074:
10075: /**
10076: * Parse nonterminal xtc.lang.JavaConstant.HexNumeral.
10077: *
10078: * @param yyStart The index.
10079: * @return The result.
10080: * @throws IOException Signals an I/O error.
10081: */
10082: private Result pHexNumeral(final int yyStart) throws IOException {
10083: int yyC;
10084: int yyIndex;
10085: int yyRepetition1;
10086: boolean yyRepeated1;
10087: Void yyValue;
10088: ParseError yyError = ParseError.DUMMY;
10089:
10090: // Alternative 1.
10091:
10092: yyC = character(yyStart);
10093: if ('0' == yyC) {
10094: yyIndex = yyStart + 1;
10095:
10096: yyC = character(yyIndex);
10097: if (-1 != yyC) {
10098: yyIndex = yyIndex + 1;
10099:
10100: switch (yyC) {
10101: case 'X':
10102: case 'x': {
10103: yyRepetition1 = yyIndex;
10104: yyRepeated1 = false;
10105: while (true) {
10106:
10107: yyC = character(yyRepetition1);
10108: if (-1 != yyC) {
10109: yyIndex = yyRepetition1 + 1;
10110:
10111: switch (yyC) {
10112: case '0':
10113: case '1':
10114: case '2':
10115: case '3':
10116: case '4':
10117: case '5':
10118: case '6':
10119: case '7':
10120: case '8':
10121: case '9':
10122: case 'A':
10123: case 'B':
10124: case 'C':
10125: case 'D':
10126: case 'E':
10127: case 'F':
10128: case 'a':
10129: case 'b':
10130: case 'c':
10131: case 'd':
10132: case 'e':
10133: case 'f': {
10134: yyRepetition1 = yyIndex;
10135: yyRepeated1 = true;
10136: continue;
10137: }
10138:
10139: default:
10140: /* No match. */
10141: }
10142: }
10143: break;
10144: }
10145:
10146: if (yyRepeated1) {
10147:
10148: yyValue = null;
10149:
10150: return new SemanticValue(yyValue,
10151: yyRepetition1, yyError);
10152: }
10153: }
10154: break;
10155:
10156: default:
10157: /* No match. */
10158: }
10159: }
10160: }
10161:
10162: // Done.
10163: yyError = yyError.select("hex numeral expected", yyStart);
10164: return yyError;
10165: }
10166:
10167: // =========================================================================
10168:
10169: /**
10170: * Parse nonterminal xtc.lang.JavaConstant.OctalNumeral.
10171: *
10172: * @param yyStart The index.
10173: * @return The result.
10174: * @throws IOException Signals an I/O error.
10175: */
10176: private Result pOctalNumeral(final int yyStart) throws IOException {
10177: int yyC;
10178: int yyIndex;
10179: int yyRepetition1;
10180: boolean yyRepeated1;
10181: Void yyValue;
10182: ParseError yyError = ParseError.DUMMY;
10183:
10184: // Alternative 1.
10185:
10186: yyC = character(yyStart);
10187: if ('0' == yyC) {
10188: yyIndex = yyStart + 1;
10189:
10190: yyRepetition1 = yyIndex;
10191: yyRepeated1 = false;
10192: while (true) {
10193:
10194: yyC = character(yyRepetition1);
10195: if (-1 != yyC) {
10196: yyIndex = yyRepetition1 + 1;
10197:
10198: switch (yyC) {
10199: case '0':
10200: case '1':
10201: case '2':
10202: case '3':
10203: case '4':
10204: case '5':
10205: case '6':
10206: case '7': {
10207: yyRepetition1 = yyIndex;
10208: yyRepeated1 = true;
10209: continue;
10210: }
10211:
10212: default:
10213: /* No match. */
10214: }
10215: }
10216: break;
10217: }
10218:
10219: if (yyRepeated1) {
10220:
10221: yyValue = null;
10222:
10223: return new SemanticValue(yyValue, yyRepetition1,
10224: yyError);
10225: }
10226: }
10227:
10228: // Done.
10229: yyError = yyError.select("octal numeral expected", yyStart);
10230: return yyError;
10231: }
10232:
10233: // =========================================================================
10234:
10235: /**
10236: * Parse nonterminal xtc.lang.JavaConstant.FloatingPointLiteral.
10237: *
10238: * @param yyStart The index.
10239: * @return The result.
10240: * @throws IOException Signals an I/O error.
10241: */
10242: private Result pFloatingPointLiteral(final int yyStart)
10243: throws IOException {
10244: Result yyResult;
10245: Node yyValue;
10246: ParseError yyError = ParseError.DUMMY;
10247:
10248: // Alternative 1.
10249:
10250: yyResult = pFloatingPointString(yyStart);
10251: yyError = yyResult.select(yyError);
10252: if (yyResult.hasValue()) {
10253: final String v$g$1 = yyResult.semanticValue();
10254:
10255: yyValue = GNode.create("FloatingPointLiteral", v$g$1);
10256: yyValue.setLocation(location(yyStart));
10257:
10258: return yyResult.createValue(yyValue, yyError);
10259: }
10260:
10261: // Done.
10262: return yyError;
10263: }
10264:
10265: // =========================================================================
10266:
10267: /**
10268: * Parse nonterminal xtc.lang.JavaConstant.FloatingPointString.
10269: *
10270: * @param yyStart The index.
10271: * @return The result.
10272: * @throws IOException Signals an I/O error.
10273: */
10274: private Result pFloatingPointString(final int yyStart)
10275: throws IOException {
10276: int yyC;
10277: int yyIndex;
10278: Result yyResult;
10279: int yyRepetition1;
10280: boolean yyRepeated1;
10281: int yyOption1;
10282: String yyValue;
10283: ParseError yyError = ParseError.DUMMY;
10284:
10285: // Alternative 1.
10286:
10287: yyRepetition1 = yyStart;
10288: yyRepeated1 = false;
10289: while (true) {
10290:
10291: yyC = character(yyRepetition1);
10292: if (-1 != yyC) {
10293: yyIndex = yyRepetition1 + 1;
10294:
10295: switch (yyC) {
10296: case '0':
10297: case '1':
10298: case '2':
10299: case '3':
10300: case '4':
10301: case '5':
10302: case '6':
10303: case '7':
10304: case '8':
10305: case '9': {
10306: yyRepetition1 = yyIndex;
10307: yyRepeated1 = true;
10308: continue;
10309: }
10310:
10311: default:
10312: /* No match. */
10313: }
10314: }
10315: break;
10316: }
10317:
10318: if (yyRepeated1) {
10319:
10320: yyC = character(yyRepetition1);
10321: if ('.' == yyC) {
10322: yyIndex = yyRepetition1 + 1;
10323:
10324: yyRepetition1 = yyIndex;
10325: while (true) {
10326:
10327: yyC = character(yyRepetition1);
10328: if (-1 != yyC) {
10329: yyIndex = yyRepetition1 + 1;
10330:
10331: switch (yyC) {
10332: case '0':
10333: case '1':
10334: case '2':
10335: case '3':
10336: case '4':
10337: case '5':
10338: case '6':
10339: case '7':
10340: case '8':
10341: case '9': {
10342: yyRepetition1 = yyIndex;
10343: continue;
10344: }
10345:
10346: default:
10347: /* No match. */
10348: }
10349: }
10350: break;
10351: }
10352:
10353: yyOption1 = yyRepetition1;
10354:
10355: yyResult = pExponent(yyOption1);
10356: yyError = yyResult.select(yyError);
10357: if (yyResult.hasValue()) {
10358:
10359: yyOption1 = yyResult.index;
10360: }
10361:
10362: yyC = character(yyOption1);
10363: if (-1 != yyC) {
10364: yyIndex = yyOption1 + 1;
10365:
10366: switch (yyC) {
10367: case 'D':
10368: case 'F':
10369: case 'd':
10370: case 'f': {
10371: yyOption1 = yyIndex;
10372: }
10373:
10374: default:
10375: /* No match. */
10376: }
10377: }
10378:
10379: yyValue = difference(yyStart, yyOption1);
10380:
10381: return new SemanticValue(yyValue, yyOption1, yyError);
10382: }
10383: }
10384:
10385: // Alternative 2.
10386:
10387: yyC = character(yyStart);
10388: if ('.' == yyC) {
10389: yyIndex = yyStart + 1;
10390:
10391: yyRepetition1 = yyIndex;
10392: yyRepeated1 = false;
10393: while (true) {
10394:
10395: yyC = character(yyRepetition1);
10396: if (-1 != yyC) {
10397: yyIndex = yyRepetition1 + 1;
10398:
10399: switch (yyC) {
10400: case '0':
10401: case '1':
10402: case '2':
10403: case '3':
10404: case '4':
10405: case '5':
10406: case '6':
10407: case '7':
10408: case '8':
10409: case '9': {
10410: yyRepetition1 = yyIndex;
10411: yyRepeated1 = true;
10412: continue;
10413: }
10414:
10415: default:
10416: /* No match. */
10417: }
10418: }
10419: break;
10420: }
10421:
10422: if (yyRepeated1) {
10423:
10424: yyOption1 = yyRepetition1;
10425:
10426: yyResult = pExponent(yyOption1);
10427: yyError = yyResult.select(yyError);
10428: if (yyResult.hasValue()) {
10429:
10430: yyOption1 = yyResult.index;
10431: }
10432:
10433: yyC = character(yyOption1);
10434: if (-1 != yyC) {
10435: yyIndex = yyOption1 + 1;
10436:
10437: switch (yyC) {
10438: case 'D':
10439: case 'F':
10440: case 'd':
10441: case 'f': {
10442: yyOption1 = yyIndex;
10443: }
10444:
10445: default:
10446: /* No match. */
10447: }
10448: }
10449:
10450: yyValue = difference(yyStart, yyOption1);
10451:
10452: return new SemanticValue(yyValue, yyOption1, yyError);
10453: }
10454: }
10455:
10456: // Alternative 3.
10457:
10458: yyRepetition1 = yyStart;
10459: yyRepeated1 = false;
10460: while (true) {
10461:
10462: yyC = character(yyRepetition1);
10463: if (-1 != yyC) {
10464: yyIndex = yyRepetition1 + 1;
10465:
10466: switch (yyC) {
10467: case '0':
10468: case '1':
10469: case '2':
10470: case '3':
10471: case '4':
10472: case '5':
10473: case '6':
10474: case '7':
10475: case '8':
10476: case '9': {
10477: yyRepetition1 = yyIndex;
10478: yyRepeated1 = true;
10479: continue;
10480: }
10481:
10482: default:
10483: /* No match. */
10484: }
10485: }
10486: break;
10487: }
10488:
10489: if (yyRepeated1) {
10490:
10491: final int yyChoice1 = yyRepetition1;
10492:
10493: // Nested alternative 1.
10494:
10495: yyResult = pExponent(yyChoice1);
10496: yyError = yyResult.select(yyError);
10497: if (yyResult.hasValue()) {
10498:
10499: yyOption1 = yyResult.index;
10500:
10501: yyC = character(yyOption1);
10502: if (-1 != yyC) {
10503: yyIndex = yyOption1 + 1;
10504:
10505: switch (yyC) {
10506: case 'D':
10507: case 'F':
10508: case 'd':
10509: case 'f': {
10510: yyOption1 = yyIndex;
10511: }
10512:
10513: default:
10514: /* No match. */
10515: }
10516: }
10517:
10518: yyValue = difference(yyStart, yyOption1);
10519:
10520: return new SemanticValue(yyValue, yyOption1, yyError);
10521: }
10522:
10523: // Nested alternative 2.
10524:
10525: yyOption1 = yyChoice1;
10526:
10527: yyResult = pExponent(yyOption1);
10528: yyError = yyResult.select(yyError);
10529: if (yyResult.hasValue()) {
10530:
10531: yyOption1 = yyResult.index;
10532: }
10533:
10534: yyC = character(yyOption1);
10535: if (-1 != yyC) {
10536: yyIndex = yyOption1 + 1;
10537:
10538: switch (yyC) {
10539: case 'D':
10540: case 'F':
10541: case 'd':
10542: case 'f': {
10543: yyValue = difference(yyStart, yyIndex);
10544:
10545: return new SemanticValue(yyValue, yyIndex, yyError);
10546: }
10547:
10548: default:
10549: /* No match. */
10550: }
10551: }
10552: }
10553:
10554: // Done.
10555: yyError = yyError.select("floating point string expected",
10556: yyStart);
10557: return yyError;
10558: }
10559:
10560: // =========================================================================
10561:
10562: /**
10563: * Parse nonterminal xtc.lang.JavaConstant.Exponent.
10564: *
10565: * @param yyStart The index.
10566: * @return The result.
10567: * @throws IOException Signals an I/O error.
10568: */
10569: private Result pExponent(final int yyStart) throws IOException {
10570: int yyC;
10571: int yyIndex;
10572: int yyRepetition1;
10573: boolean yyRepeated1;
10574: int yyOption1;
10575: Void yyValue;
10576: ParseError yyError = ParseError.DUMMY;
10577:
10578: // Alternative 1.
10579:
10580: yyC = character(yyStart);
10581: if (-1 != yyC) {
10582: yyIndex = yyStart + 1;
10583:
10584: switch (yyC) {
10585: case 'E':
10586: case 'e': {
10587: yyOption1 = yyIndex;
10588:
10589: yyC = character(yyOption1);
10590: if (-1 != yyC) {
10591: yyIndex = yyOption1 + 1;
10592:
10593: switch (yyC) {
10594: case '+':
10595: case '-': {
10596: yyOption1 = yyIndex;
10597: }
10598:
10599: default:
10600: /* No match. */
10601: }
10602: }
10603:
10604: yyRepetition1 = yyOption1;
10605: yyRepeated1 = false;
10606: while (true) {
10607:
10608: yyC = character(yyRepetition1);
10609: if (-1 != yyC) {
10610: yyIndex = yyRepetition1 + 1;
10611:
10612: switch (yyC) {
10613: case '0':
10614: case '1':
10615: case '2':
10616: case '3':
10617: case '4':
10618: case '5':
10619: case '6':
10620: case '7':
10621: case '8':
10622: case '9': {
10623: yyRepetition1 = yyIndex;
10624: yyRepeated1 = true;
10625: continue;
10626: }
10627:
10628: default:
10629: /* No match. */
10630: }
10631: }
10632: break;
10633: }
10634:
10635: if (yyRepeated1) {
10636:
10637: yyValue = null;
10638:
10639: return new SemanticValue(yyValue, yyRepetition1,
10640: yyError);
10641: }
10642: }
10643: break;
10644:
10645: default:
10646: /* No match. */
10647: }
10648: }
10649:
10650: // Done.
10651: yyError = yyError.select("exponent expected", yyStart);
10652: return yyError;
10653: }
10654:
10655: // =========================================================================
10656:
10657: /**
10658: * Parse nonterminal xtc.lang.JavaConstant.CharacterLiteral.
10659: *
10660: * @param yyStart The index.
10661: * @return The result.
10662: * @throws IOException Signals an I/O error.
10663: */
10664: private Result pCharacterLiteral(final int yyStart)
10665: throws IOException {
10666: Result yyResult;
10667: Node yyValue;
10668: ParseError yyError = ParseError.DUMMY;
10669:
10670: // Alternative 1.
10671:
10672: yyResult = pCharacterConstant(yyStart);
10673: yyError = yyResult.select(yyError);
10674: if (yyResult.hasValue()) {
10675: final String v$g$1 = yyResult.semanticValue();
10676:
10677: yyValue = GNode.create("CharacterLiteral", v$g$1);
10678: yyValue.setLocation(location(yyStart));
10679:
10680: return yyResult.createValue(yyValue, yyError);
10681: }
10682:
10683: // Done.
10684: return yyError;
10685: }
10686:
10687: // =========================================================================
10688:
10689: /**
10690: * Parse nonterminal xtc.lang.JavaConstant.StringLiteral.
10691: *
10692: * @param yyStart The index.
10693: * @return The result.
10694: * @throws IOException Signals an I/O error.
10695: */
10696: private Result pStringLiteral(final int yyStart) throws IOException {
10697: Result yyResult;
10698: Node yyValue;
10699: ParseError yyError = ParseError.DUMMY;
10700:
10701: // Alternative 1.
10702:
10703: yyResult = pStringConstant(yyStart);
10704: yyError = yyResult.select(yyError);
10705: if (yyResult.hasValue()) {
10706: final String v$g$1 = yyResult.semanticValue();
10707:
10708: yyValue = GNode.create("StringLiteral", v$g$1);
10709: yyValue.setLocation(location(yyStart));
10710:
10711: return yyResult.createValue(yyValue, yyError);
10712: }
10713:
10714: // Done.
10715: return yyError;
10716: }
10717:
10718: // =========================================================================
10719:
10720: /**
10721: * Parse nonterminal xtc.lang.JavaConstant.CharacterConstant.
10722: *
10723: * @param yyStart The index.
10724: * @return The result.
10725: * @throws IOException Signals an I/O error.
10726: */
10727: private Result pCharacterConstant(final int yyStart)
10728: throws IOException {
10729: int yyC;
10730: int yyIndex;
10731: Result yyResult;
10732: String yyValue;
10733: ParseError yyError = ParseError.DUMMY;
10734:
10735: // Alternative 1.
10736:
10737: yyC = character(yyStart);
10738: if ('\'' == yyC) {
10739: yyIndex = yyStart + 1;
10740:
10741: yyResult = pCharacterConstant$$Choice1(yyIndex);
10742: yyError = yyResult.select(yyError);
10743: if (yyResult.hasValue()) {
10744:
10745: yyC = character(yyResult.index);
10746: if ('\'' == yyC) {
10747: yyIndex = yyResult.index + 1;
10748:
10749: yyValue = difference(yyStart, yyIndex);
10750:
10751: return new SemanticValue(yyValue, yyIndex, yyError);
10752: }
10753: }
10754: }
10755:
10756: // Done.
10757: yyError = yyError
10758: .select("character constant expected", yyStart);
10759: return yyError;
10760: }
10761:
10762: // =========================================================================
10763:
10764: /**
10765: * Parse synthetic nonterminal
10766: * xtc.lang.JavaFactory.CharacterConstant$$Choice1.
10767: *
10768: * @param yyStart The index.
10769: * @return The result.
10770: * @throws IOException Signals an I/O error.
10771: */
10772: private Result pCharacterConstant$$Choice1(final int yyStart)
10773: throws IOException {
10774:
10775: int yyC;
10776: int yyIndex;
10777: Void yyValue;
10778: ParseError yyError = ParseError.DUMMY;
10779:
10780: // Alternative 1.
10781:
10782: yyC = character(yyStart);
10783: if (-1 != yyC) {
10784: yyIndex = yyStart + 1;
10785:
10786: switch (yyC) {
10787: case '\\': {
10788: final int yyChoice1 = yyIndex;
10789:
10790: // Nested alternative 1.
10791:
10792: yyC = character(yyChoice1);
10793: if (-1 != yyC) {
10794: yyIndex = yyChoice1 + 1;
10795:
10796: switch (yyC) {
10797: case '\"':
10798: case '\'':
10799: case '\\':
10800: case 'b':
10801: case 'f':
10802: case 'n':
10803: case 'r':
10804: case 't': {
10805: yyValue = null;
10806:
10807: return new SemanticValue(yyValue, yyIndex,
10808: yyError);
10809: }
10810:
10811: case 'u': {
10812: yyC = character(yyIndex);
10813: if (-1 != yyC) {
10814: yyIndex = yyIndex + 1;
10815:
10816: switch (yyC) {
10817: case '0':
10818: case '1':
10819: case '2':
10820: case '3':
10821: case '4':
10822: case '5':
10823: case '6':
10824: case '7':
10825: case '8':
10826: case '9':
10827: case 'A':
10828: case 'B':
10829: case 'C':
10830: case 'D':
10831: case 'E':
10832: case 'F':
10833: case 'a':
10834: case 'b':
10835: case 'c':
10836: case 'd':
10837: case 'e':
10838: case 'f': {
10839: yyC = character(yyIndex);
10840: if (-1 != yyC) {
10841: yyIndex = yyIndex + 1;
10842:
10843: switch (yyC) {
10844: case '0':
10845: case '1':
10846: case '2':
10847: case '3':
10848: case '4':
10849: case '5':
10850: case '6':
10851: case '7':
10852: case '8':
10853: case '9':
10854: case 'A':
10855: case 'B':
10856: case 'C':
10857: case 'D':
10858: case 'E':
10859: case 'F':
10860: case 'a':
10861: case 'b':
10862: case 'c':
10863: case 'd':
10864: case 'e':
10865: case 'f': {
10866: yyC = character(yyIndex);
10867: if (-1 != yyC) {
10868: yyIndex = yyIndex + 1;
10869:
10870: switch (yyC) {
10871: case '0':
10872: case '1':
10873: case '2':
10874: case '3':
10875: case '4':
10876: case '5':
10877: case '6':
10878: case '7':
10879: case '8':
10880: case '9':
10881: case 'A':
10882: case 'B':
10883: case 'C':
10884: case 'D':
10885: case 'E':
10886: case 'F':
10887: case 'a':
10888: case 'b':
10889: case 'c':
10890: case 'd':
10891: case 'e':
10892: case 'f': {
10893: yyC = character(yyIndex);
10894: if (-1 != yyC) {
10895: yyIndex = yyIndex + 1;
10896:
10897: switch (yyC) {
10898: case '0':
10899: case '1':
10900: case '2':
10901: case '3':
10902: case '4':
10903: case '5':
10904: case '6':
10905: case '7':
10906: case '8':
10907: case '9':
10908: case 'A':
10909: case 'B':
10910: case 'C':
10911: case 'D':
10912: case 'E':
10913: case 'F':
10914: case 'a':
10915: case 'b':
10916: case 'c':
10917: case 'd':
10918: case 'e':
10919: case 'f': {
10920: yyValue = null;
10921:
10922: return new SemanticValue(
10923: yyValue,
10924: yyIndex,
10925: yyError);
10926: }
10927:
10928: default:
10929: /* No match. */
10930: }
10931: }
10932: }
10933: break;
10934:
10935: default:
10936: /* No match. */
10937: }
10938: }
10939: }
10940: break;
10941:
10942: default:
10943: /* No match. */
10944: }
10945: }
10946: }
10947: break;
10948:
10949: default:
10950: /* No match. */
10951: }
10952: }
10953: }
10954: break;
10955:
10956: default:
10957: /* No match. */
10958: }
10959: }
10960:
10961: // Nested alternative 2.
10962: { // Start scope for nested choice.
10963:
10964: final int yyChoice2 = yyChoice1;
10965:
10966: // Nested alternative 1.
10967:
10968: yyC = character(yyChoice2);
10969: if (-1 != yyC) {
10970: yyIndex = yyChoice2 + 1;
10971:
10972: switch (yyC) {
10973: case '0':
10974: case '1':
10975: case '2':
10976: case '3': {
10977: yyC = character(yyIndex);
10978: if (-1 != yyC) {
10979: yyIndex = yyIndex + 1;
10980:
10981: switch (yyC) {
10982: case '0':
10983: case '1':
10984: case '2':
10985: case '3':
10986: case '4':
10987: case '5':
10988: case '6':
10989: case '7': {
10990: yyC = character(yyIndex);
10991: if (-1 != yyC) {
10992: yyIndex = yyIndex + 1;
10993:
10994: switch (yyC) {
10995: case '0':
10996: case '1':
10997: case '2':
10998: case '3':
10999: case '4':
11000: case '5':
11001: case '6':
11002: case '7': {
11003: yyValue = null;
11004:
11005: return new SemanticValue(
11006: yyValue, yyIndex,
11007: yyError);
11008: }
11009:
11010: default:
11011: /* No match. */
11012: }
11013: }
11014: }
11015: break;
11016:
11017: default:
11018: /* No match. */
11019: }
11020: }
11021: }
11022: break;
11023:
11024: default:
11025: /* No match. */
11026: }
11027: }
11028:
11029: // Nested alternative 2.
11030:
11031: yyC = character(yyChoice2);
11032: if (-1 != yyC) {
11033: yyIndex = yyChoice2 + 1;
11034:
11035: switch (yyC) {
11036: case '0':
11037: case '1':
11038: case '2':
11039: case '3':
11040: case '4':
11041: case '5':
11042: case '6':
11043: case '7': {
11044: final int yyChoice3 = yyIndex;
11045:
11046: // Nested alternative 1.
11047:
11048: yyC = character(yyChoice3);
11049: if (-1 != yyC) {
11050: yyIndex = yyChoice3 + 1;
11051:
11052: switch (yyC) {
11053: case '0':
11054: case '1':
11055: case '2':
11056: case '3':
11057: case '4':
11058: case '5':
11059: case '6':
11060: case '7': {
11061: yyValue = null;
11062:
11063: return new SemanticValue(yyValue,
11064: yyIndex, yyError);
11065: }
11066:
11067: default:
11068: /* No match. */
11069: }
11070: }
11071:
11072: // Nested alternative 2.
11073:
11074: yyValue = null;
11075:
11076: return new SemanticValue(yyValue,
11077: yyChoice3, yyError);
11078: }
11079:
11080: default:
11081: /* No match. */
11082: }
11083: }
11084: } // End scope for nested choice.
11085: }
11086: break;
11087:
11088: default:
11089: /* No match. */
11090: }
11091: }
11092:
11093: // Alternative 2.
11094:
11095: yyC = character(yyStart);
11096: if (-1 != yyC) {
11097: yyIndex = yyStart + 1;
11098:
11099: switch (yyC) {
11100: case '\'':
11101: case '\\':
11102: /* No match. */
11103: break;
11104:
11105: default: {
11106: yyValue = null;
11107:
11108: return new SemanticValue(yyValue, yyIndex, yyError);
11109: }
11110: }
11111: }
11112:
11113: // Done.
11114: yyError = yyError
11115: .select("character constant expected", yyStart);
11116: return yyError;
11117: }
11118:
11119: // =========================================================================
11120:
11121: /**
11122: * Parse nonterminal xtc.lang.JavaConstant.StringConstant.
11123: *
11124: * @param yyStart The index.
11125: * @return The result.
11126: * @throws IOException Signals an I/O error.
11127: */
11128: private Result pStringConstant(final int yyStart)
11129: throws IOException {
11130: int yyC;
11131: int yyIndex;
11132: int yyRepetition1;
11133: String yyValue;
11134: ParseError yyError = ParseError.DUMMY;
11135:
11136: // Alternative 1.
11137:
11138: yyC = character(yyStart);
11139: if ('\"' == yyC) {
11140: yyIndex = yyStart + 1;
11141:
11142: yyRepetition1 = yyIndex;
11143: while (true) {
11144:
11145: final int yyChoice1 = yyRepetition1;
11146:
11147: // Nested alternative 1.
11148:
11149: yyC = character(yyChoice1);
11150: if (-1 != yyC) {
11151: yyIndex = yyChoice1 + 1;
11152:
11153: switch (yyC) {
11154: case '\\': {
11155: final int yyChoice2 = yyIndex;
11156:
11157: // Nested alternative 1.
11158:
11159: yyC = character(yyChoice2);
11160: if (-1 != yyC) {
11161: yyIndex = yyChoice2 + 1;
11162:
11163: switch (yyC) {
11164: case '\"':
11165: case '\'':
11166: case '\\':
11167: case 'b':
11168: case 'f':
11169: case 'n':
11170: case 'r':
11171: case 't': {
11172: yyRepetition1 = yyIndex;
11173: continue;
11174: }
11175:
11176: case 'u': {
11177: yyC = character(yyIndex);
11178: if (-1 != yyC) {
11179: yyIndex = yyIndex + 1;
11180:
11181: switch (yyC) {
11182: case '0':
11183: case '1':
11184: case '2':
11185: case '3':
11186: case '4':
11187: case '5':
11188: case '6':
11189: case '7':
11190: case '8':
11191: case '9':
11192: case 'A':
11193: case 'B':
11194: case 'C':
11195: case 'D':
11196: case 'E':
11197: case 'F':
11198: case 'a':
11199: case 'b':
11200: case 'c':
11201: case 'd':
11202: case 'e':
11203: case 'f': {
11204: yyC = character(yyIndex);
11205: if (-1 != yyC) {
11206: yyIndex = yyIndex + 1;
11207:
11208: switch (yyC) {
11209: case '0':
11210: case '1':
11211: case '2':
11212: case '3':
11213: case '4':
11214: case '5':
11215: case '6':
11216: case '7':
11217: case '8':
11218: case '9':
11219: case 'A':
11220: case 'B':
11221: case 'C':
11222: case 'D':
11223: case 'E':
11224: case 'F':
11225: case 'a':
11226: case 'b':
11227: case 'c':
11228: case 'd':
11229: case 'e':
11230: case 'f': {
11231: yyC = character(yyIndex);
11232: if (-1 != yyC) {
11233: yyIndex = yyIndex + 1;
11234:
11235: switch (yyC) {
11236: case '0':
11237: case '1':
11238: case '2':
11239: case '3':
11240: case '4':
11241: case '5':
11242: case '6':
11243: case '7':
11244: case '8':
11245: case '9':
11246: case 'A':
11247: case 'B':
11248: case 'C':
11249: case 'D':
11250: case 'E':
11251: case 'F':
11252: case 'a':
11253: case 'b':
11254: case 'c':
11255: case 'd':
11256: case 'e':
11257: case 'f': {
11258: yyC = character(yyIndex);
11259: if (-1 != yyC) {
11260: yyIndex = yyIndex + 1;
11261:
11262: switch (yyC) {
11263: case '0':
11264: case '1':
11265: case '2':
11266: case '3':
11267: case '4':
11268: case '5':
11269: case '6':
11270: case '7':
11271: case '8':
11272: case '9':
11273: case 'A':
11274: case 'B':
11275: case 'C':
11276: case 'D':
11277: case 'E':
11278: case 'F':
11279: case 'a':
11280: case 'b':
11281: case 'c':
11282: case 'd':
11283: case 'e':
11284: case 'f': {
11285: yyRepetition1 = yyIndex;
11286: continue;
11287: }
11288:
11289: default:
11290: /* No match. */
11291: }
11292: }
11293: }
11294: break;
11295:
11296: default:
11297: /* No match. */
11298: }
11299: }
11300: }
11301: break;
11302:
11303: default:
11304: /* No match. */
11305: }
11306: }
11307: }
11308: break;
11309:
11310: default:
11311: /* No match. */
11312: }
11313: }
11314: }
11315: break;
11316:
11317: default:
11318: /* No match. */
11319: }
11320: }
11321:
11322: // Nested alternative 2.
11323: { // Start scope for nested choice.
11324:
11325: final int yyChoice3 = yyChoice2;
11326:
11327: // Nested alternative 1.
11328:
11329: yyC = character(yyChoice3);
11330: if (-1 != yyC) {
11331: yyIndex = yyChoice3 + 1;
11332:
11333: switch (yyC) {
11334: case '0':
11335: case '1':
11336: case '2':
11337: case '3': {
11338: yyC = character(yyIndex);
11339: if (-1 != yyC) {
11340: yyIndex = yyIndex + 1;
11341:
11342: switch (yyC) {
11343: case '0':
11344: case '1':
11345: case '2':
11346: case '3':
11347: case '4':
11348: case '5':
11349: case '6':
11350: case '7': {
11351: yyC = character(yyIndex);
11352: if (-1 != yyC) {
11353: yyIndex = yyIndex + 1;
11354:
11355: switch (yyC) {
11356: case '0':
11357: case '1':
11358: case '2':
11359: case '3':
11360: case '4':
11361: case '5':
11362: case '6':
11363: case '7': {
11364: yyRepetition1 = yyIndex;
11365: continue;
11366: }
11367:
11368: default:
11369: /* No match. */
11370: }
11371: }
11372: }
11373: break;
11374:
11375: default:
11376: /* No match. */
11377: }
11378: }
11379: }
11380: break;
11381:
11382: default:
11383: /* No match. */
11384: }
11385: }
11386:
11387: // Nested alternative 2.
11388:
11389: yyC = character(yyChoice3);
11390: if (-1 != yyC) {
11391: yyIndex = yyChoice3 + 1;
11392:
11393: switch (yyC) {
11394: case '0':
11395: case '1':
11396: case '2':
11397: case '3':
11398: case '4':
11399: case '5':
11400: case '6':
11401: case '7': {
11402: final int yyChoice4 = yyIndex;
11403:
11404: // Nested alternative 1.
11405:
11406: yyC = character(yyChoice4);
11407: if (-1 != yyC) {
11408: yyIndex = yyChoice4 + 1;
11409:
11410: switch (yyC) {
11411: case '0':
11412: case '1':
11413: case '2':
11414: case '3':
11415: case '4':
11416: case '5':
11417: case '6':
11418: case '7': {
11419: yyRepetition1 = yyIndex;
11420: continue;
11421: }
11422:
11423: default:
11424: /* No match. */
11425: }
11426: }
11427:
11428: // Nested alternative 2.
11429:
11430: yyRepetition1 = yyChoice4;
11431: continue;
11432: }
11433:
11434: default:
11435: /* No match. */
11436: }
11437: }
11438: } // End scope for nested choice.
11439: }
11440: break;
11441:
11442: default:
11443: /* No match. */
11444: }
11445: }
11446:
11447: // Nested alternative 2.
11448:
11449: yyC = character(yyChoice1);
11450: if (-1 != yyC) {
11451: yyIndex = yyChoice1 + 1;
11452:
11453: switch (yyC) {
11454: case '\"':
11455: case '\\':
11456: /* No match. */
11457: break;
11458:
11459: default: {
11460: yyRepetition1 = yyIndex;
11461: continue;
11462: }
11463: }
11464: }
11465: break;
11466: }
11467:
11468: yyC = character(yyRepetition1);
11469: if ('\"' == yyC) {
11470: yyIndex = yyRepetition1 + 1;
11471:
11472: yyValue = difference(yyStart, yyIndex);
11473:
11474: return new SemanticValue(yyValue, yyIndex, yyError);
11475: }
11476: }
11477:
11478: // Done.
11479: yyError = yyError.select("string constant expected", yyStart);
11480: return yyError;
11481: }
11482:
11483: // =========================================================================
11484:
11485: /**
11486: * Parse nonterminal xtc.lang.JavaFiveIdentifier.QualifiedIdentifier.
11487: *
11488: * @param yyStart The index.
11489: * @return The result.
11490: * @throws IOException Signals an I/O error.
11491: */
11492: private Result pQualifiedIdentifier(final int yyStart)
11493: throws IOException {
11494: JavaFactoryParserColumn yyColumn = (JavaFactoryParserColumn) column(yyStart);
11495: if (null == yyColumn.chunk4)
11496: yyColumn.chunk4 = new Chunk4();
11497: if (null == yyColumn.chunk4.fQualifiedIdentifier)
11498: yyColumn.chunk4.fQualifiedIdentifier = pQualifiedIdentifier$1(yyStart);
11499: return yyColumn.chunk4.fQualifiedIdentifier;
11500: }
11501:
11502: /** Actually parse xtc.lang.JavaFiveIdentifier.QualifiedIdentifier. */
11503: private Result pQualifiedIdentifier$1(final int yyStart)
11504: throws IOException {
11505:
11506: Result yyResult;
11507: Node yyValue;
11508: ParseError yyError = ParseError.DUMMY;
11509:
11510: // Alternative 1.
11511:
11512: yyResult = pIdentifier(yyStart);
11513: yyError = yyResult.select(yyError);
11514: if (yyResult.hasValue()) {
11515: final String v$g$1 = yyResult.semanticValue();
11516:
11517: yyResult = pQualifiedIdentifier$$Star1(yyResult.index);
11518: yyError = yyResult.select(yyError);
11519: if (yyResult.hasValue()) {
11520: final Pair<String> v$g$2 = yyResult.semanticValue();
11521:
11522: yyValue = GNode.createFromPair("QualifiedIdentifier",
11523: v$g$1, v$g$2);
11524: yyValue.setLocation(location(yyStart));
11525:
11526: return yyResult.createValue(yyValue, yyError);
11527: }
11528: }
11529:
11530: // Done.
11531: return yyError;
11532: }
11533:
11534: // =========================================================================
11535:
11536: /**
11537: * Parse synthetic nonterminal
11538: * xtc.lang.JavaFactory.QualifiedIdentifier$$Star1.
11539: *
11540: * @param yyStart The index.
11541: * @return The result.
11542: * @throws IOException Signals an I/O error.
11543: */
11544: private Result pQualifiedIdentifier$$Star1(final int yyStart)
11545: throws IOException {
11546:
11547: JavaFactoryParserColumn yyColumn = (JavaFactoryParserColumn) column(yyStart);
11548: if (null == yyColumn.chunk4)
11549: yyColumn.chunk4 = new Chunk4();
11550: if (null == yyColumn.chunk4.fQualifiedIdentifier$$Star1)
11551: yyColumn.chunk4.fQualifiedIdentifier$$Star1 = pQualifiedIdentifier$$Star1$1(yyStart);
11552: return yyColumn.chunk4.fQualifiedIdentifier$$Star1;
11553: }
11554:
11555: /** Actually parse xtc.lang.JavaFactory.QualifiedIdentifier$$Star1. */
11556: private Result pQualifiedIdentifier$$Star1$1(final int yyStart)
11557: throws IOException {
11558:
11559: Result yyResult;
11560: Pair<String> yyValue;
11561: ParseError yyError = ParseError.DUMMY;
11562:
11563: // Alternative 1.
11564:
11565: yyResult = pSymbol(yyStart);
11566: yyError = yyResult.select(yyError);
11567: if (yyResult.hasValue(".")) {
11568:
11569: yyResult = pIdentifier(yyResult.index);
11570: yyError = yyResult.select(yyError);
11571: if (yyResult.hasValue()) {
11572: final String v$el$1 = yyResult.semanticValue();
11573:
11574: yyResult = pQualifiedIdentifier$$Star1(yyResult.index);
11575: yyError = yyResult.select(yyError);
11576: if (yyResult.hasValue()) {
11577: final Pair<String> v$2 = yyResult.semanticValue();
11578:
11579: yyValue = new Pair<String>(v$el$1, v$2);
11580:
11581: return yyResult.createValue(yyValue, yyError);
11582: }
11583: }
11584: }
11585:
11586: // Alternative 2.
11587:
11588: yyValue = Pair.empty();
11589:
11590: return new SemanticValue(yyValue, yyStart, yyError);
11591: }
11592:
11593: // =========================================================================
11594:
11595: /**
11596: * Parse nonterminal xtc.lang.JavaFiveIdentifier.Identifier.
11597: *
11598: * @param yyStart The index.
11599: * @return The result.
11600: * @throws IOException Signals an I/O error.
11601: */
11602: private Result pIdentifier(final int yyStart) throws IOException {
11603: JavaFactoryParserColumn yyColumn = (JavaFactoryParserColumn) column(yyStart);
11604: if (null == yyColumn.chunk4)
11605: yyColumn.chunk4 = new Chunk4();
11606: if (null == yyColumn.chunk4.fIdentifier)
11607: yyColumn.chunk4.fIdentifier = pIdentifier$1(yyStart);
11608: return yyColumn.chunk4.fIdentifier;
11609: }
11610:
11611: /** Actually parse xtc.lang.JavaFiveIdentifier.Identifier. */
11612: private Result pIdentifier$1(final int yyStart) throws IOException {
11613: Result yyResult;
11614: String yyValue;
11615: ParseError yyError = ParseError.DUMMY;
11616:
11617: // Alternative 1.
11618:
11619: yyResult = pWord(yyStart);
11620: yyError = yyResult.select(yyError);
11621: if (yyResult.hasValue()) {
11622: yyValue = yyResult.semanticValue();
11623:
11624: if (!contains(JAVA_KEYWORDS, toText(yyValue))) {
11625:
11626: return yyResult.createValue(yyValue, yyError);
11627: }
11628: }
11629:
11630: // Done.
11631: yyError = yyError.select("identifier expected", yyStart);
11632: return yyError;
11633: }
11634:
11635: // =========================================================================
11636:
11637: /**
11638: * Parse nonterminal xtc.lang.JavaFiveIdentifier.Word.
11639: *
11640: * @param yyStart The index.
11641: * @return The result.
11642: * @throws IOException Signals an I/O error.
11643: */
11644: private Result pWord(final int yyStart) throws IOException {
11645: JavaFactoryParserColumn yyColumn = (JavaFactoryParserColumn) column(yyStart);
11646: if (null == yyColumn.chunk4)
11647: yyColumn.chunk4 = new Chunk4();
11648: if (null == yyColumn.chunk4.fWord)
11649: yyColumn.chunk4.fWord = pWord$1(yyStart);
11650: return yyColumn.chunk4.fWord;
11651: }
11652:
11653: /** Actually parse xtc.lang.JavaFiveIdentifier.Word. */
11654: private Result pWord$1(final int yyStart) throws IOException {
11655: Result yyResult;
11656: String yyValue;
11657: ParseError yyError = ParseError.DUMMY;
11658:
11659: // Alternative 1.
11660:
11661: yyResult = pWordCharacters(yyStart);
11662: yyError = yyResult.select(yyError);
11663: if (yyResult.hasValue()) {
11664: yyValue = yyResult.semanticValue();
11665:
11666: yyResult = pSpacing(yyResult.index);
11667: yyError = yyResult.select(yyError);
11668: if (yyResult.hasValue()) {
11669:
11670: return yyResult.createValue(yyValue, yyError);
11671: }
11672: }
11673:
11674: // Done.
11675: return yyError;
11676: }
11677:
11678: // =========================================================================
11679:
11680: /**
11681: * Parse nonterminal xtc.lang.JavaFiveIdentifier.WordCharacters.
11682: *
11683: * @param yyStart The index.
11684: * @return The result.
11685: * @throws IOException Signals an I/O error.
11686: */
11687: private Result pWordCharacters(final int yyStart)
11688: throws IOException {
11689: int yyC;
11690: int yyIndex;
11691: int yyRepetition1;
11692: String yyValue;
11693: ParseError yyError = ParseError.DUMMY;
11694:
11695: // Alternative 1.
11696:
11697: yyC = character(yyStart);
11698: if (-1 != yyC) {
11699: yyIndex = yyStart + 1;
11700: final char start = (char) yyC;
11701:
11702: if (Character.isJavaIdentifierStart(start)) {
11703:
11704: yyRepetition1 = yyIndex;
11705: while (true) {
11706:
11707: yyC = character(yyRepetition1);
11708: if (-1 != yyC) {
11709: yyIndex = yyRepetition1 + 1;
11710: final char part = (char) yyC;
11711:
11712: if (Character.isJavaIdentifierPart(part)) {
11713:
11714: yyRepetition1 = yyIndex;
11715: continue;
11716: }
11717: }
11718: break;
11719: }
11720:
11721: yyValue = difference(yyStart, yyRepetition1);
11722:
11723: return new SemanticValue(yyValue, yyRepetition1,
11724: yyError);
11725: }
11726: }
11727:
11728: // Done.
11729: yyError = yyError.select("word characters expected", yyStart);
11730: return yyError;
11731: }
11732:
11733: // =========================================================================
11734:
11735: /**
11736: * Parse nonterminal xtc.lang.JavaFiveSymbol.Symbol.
11737: *
11738: * @param yyStart The index.
11739: * @return The result.
11740: * @throws IOException Signals an I/O error.
11741: */
11742: private Result pSymbol(final int yyStart) throws IOException {
11743: JavaFactoryParserColumn yyColumn = (JavaFactoryParserColumn) column(yyStart);
11744: if (null == yyColumn.chunk4)
11745: yyColumn.chunk4 = new Chunk4();
11746: if (null == yyColumn.chunk4.fSymbol)
11747: yyColumn.chunk4.fSymbol = pSymbol$1(yyStart);
11748: return yyColumn.chunk4.fSymbol;
11749: }
11750:
11751: /** Actually parse xtc.lang.JavaFiveSymbol.Symbol. */
11752: private Result pSymbol$1(final int yyStart) throws IOException {
11753: Result yyResult;
11754: String yyValue;
11755: ParseError yyError = ParseError.DUMMY;
11756:
11757: // Alternative 1.
11758:
11759: yyResult = pSymbolCharacters(yyStart);
11760: yyError = yyResult.select(yyError);
11761: if (yyResult.hasValue()) {
11762: yyValue = yyResult.semanticValue();
11763:
11764: yyResult = pSpacing(yyResult.index);
11765: yyError = yyResult.select(yyError);
11766: if (yyResult.hasValue()) {
11767:
11768: return yyResult.createValue(yyValue, yyError);
11769: }
11770: }
11771:
11772: // Done.
11773: return yyError;
11774: }
11775:
11776: // =========================================================================
11777:
11778: /**
11779: * Parse nonterminal xtc.lang.JavaFiveSymbol.SymbolCharacters.
11780: *
11781: * @param yyStart The index.
11782: * @return The result.
11783: * @throws IOException Signals an I/O error.
11784: */
11785: private Result pSymbolCharacters(final int yyStart)
11786: throws IOException {
11787: int yyC;
11788: int yyIndex;
11789: String yyValue;
11790: ParseError yyError = ParseError.DUMMY;
11791:
11792: // Alternative 1.
11793:
11794: yyC = character(yyStart);
11795: if (-1 != yyC) {
11796: yyIndex = yyStart + 1;
11797:
11798: switch (yyC) {
11799: case '>': {
11800: final int yyChoice1 = yyIndex;
11801:
11802: // Nested alternative 1.
11803:
11804: yyC = character(yyChoice1);
11805: if (-1 != yyC) {
11806: yyIndex = yyChoice1 + 1;
11807:
11808: switch (yyC) {
11809: case '>': {
11810: final int yyChoice2 = yyIndex;
11811:
11812: // Nested alternative 1.
11813:
11814: yyC = character(yyChoice2);
11815: if (-1 != yyC) {
11816: yyIndex = yyChoice2 + 1;
11817:
11818: switch (yyC) {
11819: case '>': {
11820: final int yyChoice3 = yyIndex;
11821:
11822: // Nested alternative 1.
11823:
11824: yyC = character(yyChoice3);
11825: if (-1 != yyC) {
11826: yyIndex = yyChoice3 + 1;
11827: if ('=' == yyC) {
11828:
11829: yyValue = ">>>=";
11830:
11831: return new SemanticValue(
11832: yyValue, yyIndex,
11833: yyError);
11834: }
11835: }
11836:
11837: // Nested alternative 2.
11838:
11839: yyValue = ">>>";
11840:
11841: return new SemanticValue(yyValue,
11842: yyChoice3, yyError);
11843: }
11844:
11845: case '=': {
11846: yyValue = ">>=";
11847:
11848: return new SemanticValue(yyValue,
11849: yyIndex, yyError);
11850: }
11851:
11852: default:
11853: /* No match. */
11854: }
11855: }
11856:
11857: // Nested alternative 2.
11858:
11859: yyValue = ">>";
11860:
11861: return new SemanticValue(yyValue, yyChoice2,
11862: yyError);
11863: }
11864:
11865: case '=': {
11866: yyValue = ">=";
11867:
11868: return new SemanticValue(yyValue, yyIndex,
11869: yyError);
11870: }
11871:
11872: default:
11873: /* No match. */
11874: }
11875: }
11876:
11877: // Nested alternative 2.
11878:
11879: yyValue = ">";
11880:
11881: return new SemanticValue(yyValue, yyChoice1, yyError);
11882: }
11883:
11884: case '<': {
11885: final int yyChoice1 = yyIndex;
11886:
11887: // Nested alternative 1.
11888:
11889: yyC = character(yyChoice1);
11890: if (-1 != yyC) {
11891: yyIndex = yyChoice1 + 1;
11892:
11893: switch (yyC) {
11894: case '<': {
11895: final int yyChoice2 = yyIndex;
11896:
11897: // Nested alternative 1.
11898:
11899: yyC = character(yyChoice2);
11900: if (-1 != yyC) {
11901: yyIndex = yyChoice2 + 1;
11902: if ('=' == yyC) {
11903:
11904: yyValue = "<<=";
11905:
11906: return new SemanticValue(yyValue,
11907: yyIndex, yyError);
11908: }
11909: }
11910:
11911: // Nested alternative 2.
11912:
11913: yyValue = "<<";
11914:
11915: return new SemanticValue(yyValue, yyChoice2,
11916: yyError);
11917: }
11918:
11919: case '=': {
11920: yyValue = "<=";
11921:
11922: return new SemanticValue(yyValue, yyIndex,
11923: yyError);
11924: }
11925:
11926: default:
11927: /* No match. */
11928: }
11929: }
11930:
11931: // Nested alternative 2.
11932:
11933: yyValue = "<";
11934:
11935: return new SemanticValue(yyValue, yyChoice1, yyError);
11936: }
11937:
11938: case '.': {
11939: final int yyChoice1 = yyIndex;
11940:
11941: // Nested alternative 1.
11942:
11943: yyC = character(yyChoice1);
11944: if (-1 != yyC) {
11945: yyIndex = yyChoice1 + 1;
11946: if ('.' == yyC) {
11947:
11948: yyC = character(yyIndex);
11949: if (-1 != yyC) {
11950: yyIndex = yyIndex + 1;
11951: if ('.' == yyC) {
11952:
11953: yyValue = "...";
11954:
11955: return new SemanticValue(yyValue,
11956: yyIndex, yyError);
11957: }
11958: }
11959: }
11960: }
11961:
11962: // Nested alternative 2.
11963:
11964: yyValue = ".";
11965:
11966: return new SemanticValue(yyValue, yyChoice1, yyError);
11967: }
11968:
11969: case '+': {
11970: final int yyChoice1 = yyIndex;
11971:
11972: // Nested alternative 1.
11973:
11974: yyC = character(yyChoice1);
11975: if (-1 != yyC) {
11976: yyIndex = yyChoice1 + 1;
11977:
11978: switch (yyC) {
11979: case '=': {
11980: yyValue = "+=";
11981:
11982: return new SemanticValue(yyValue, yyIndex,
11983: yyError);
11984: }
11985:
11986: case '+': {
11987: yyValue = "++";
11988:
11989: return new SemanticValue(yyValue, yyIndex,
11990: yyError);
11991: }
11992:
11993: default:
11994: /* No match. */
11995: }
11996: }
11997:
11998: // Nested alternative 2.
11999:
12000: yyValue = "+";
12001:
12002: return new SemanticValue(yyValue, yyChoice1, yyError);
12003: }
12004:
12005: case '-': {
12006: final int yyChoice1 = yyIndex;
12007:
12008: // Nested alternative 1.
12009:
12010: yyC = character(yyChoice1);
12011: if (-1 != yyC) {
12012: yyIndex = yyChoice1 + 1;
12013:
12014: switch (yyC) {
12015: case '=': {
12016: yyValue = "-=";
12017:
12018: return new SemanticValue(yyValue, yyIndex,
12019: yyError);
12020: }
12021:
12022: case '-': {
12023: yyValue = "--";
12024:
12025: return new SemanticValue(yyValue, yyIndex,
12026: yyError);
12027: }
12028:
12029: default:
12030: /* No match. */
12031: }
12032: }
12033:
12034: // Nested alternative 2.
12035:
12036: yyValue = "-";
12037:
12038: return new SemanticValue(yyValue, yyChoice1, yyError);
12039: }
12040:
12041: case '*': {
12042: final int yyChoice1 = yyIndex;
12043:
12044: // Nested alternative 1.
12045:
12046: yyC = character(yyChoice1);
12047: if (-1 != yyC) {
12048: yyIndex = yyChoice1 + 1;
12049: if ('=' == yyC) {
12050:
12051: yyValue = "*=";
12052:
12053: return new SemanticValue(yyValue, yyIndex,
12054: yyError);
12055: }
12056: }
12057:
12058: // Nested alternative 2.
12059:
12060: yyValue = "*";
12061:
12062: return new SemanticValue(yyValue, yyChoice1, yyError);
12063: }
12064:
12065: case '/': {
12066: final int yyChoice1 = yyIndex;
12067:
12068: // Nested alternative 1.
12069:
12070: yyC = character(yyChoice1);
12071: if (-1 != yyC) {
12072: yyIndex = yyChoice1 + 1;
12073: if ('=' == yyC) {
12074:
12075: yyValue = "/=";
12076:
12077: return new SemanticValue(yyValue, yyIndex,
12078: yyError);
12079: }
12080: }
12081:
12082: // Nested alternative 2.
12083:
12084: yyValue = "/";
12085:
12086: return new SemanticValue(yyValue, yyChoice1, yyError);
12087: }
12088:
12089: case '%': {
12090: final int yyChoice1 = yyIndex;
12091:
12092: // Nested alternative 1.
12093:
12094: yyC = character(yyChoice1);
12095: if (-1 != yyC) {
12096: yyIndex = yyChoice1 + 1;
12097: if ('=' == yyC) {
12098:
12099: yyValue = "%=";
12100:
12101: return new SemanticValue(yyValue, yyIndex,
12102: yyError);
12103: }
12104: }
12105:
12106: // Nested alternative 2.
12107:
12108: yyValue = "%";
12109:
12110: return new SemanticValue(yyValue, yyChoice1, yyError);
12111: }
12112:
12113: case '&': {
12114: final int yyChoice1 = yyIndex;
12115:
12116: // Nested alternative 1.
12117:
12118: yyC = character(yyChoice1);
12119: if (-1 != yyC) {
12120: yyIndex = yyChoice1 + 1;
12121:
12122: switch (yyC) {
12123: case '=': {
12124: yyValue = "&=";
12125:
12126: return new SemanticValue(yyValue, yyIndex,
12127: yyError);
12128: }
12129:
12130: case '&': {
12131: yyValue = "&&";
12132:
12133: return new SemanticValue(yyValue, yyIndex,
12134: yyError);
12135: }
12136:
12137: default:
12138: /* No match. */
12139: }
12140: }
12141:
12142: // Nested alternative 2.
12143:
12144: yyValue = "&";
12145:
12146: return new SemanticValue(yyValue, yyChoice1, yyError);
12147: }
12148:
12149: case '^': {
12150: final int yyChoice1 = yyIndex;
12151:
12152: // Nested alternative 1.
12153:
12154: yyC = character(yyChoice1);
12155: if (-1 != yyC) {
12156: yyIndex = yyChoice1 + 1;
12157: if ('=' == yyC) {
12158:
12159: yyValue = "^=";
12160:
12161: return new SemanticValue(yyValue, yyIndex,
12162: yyError);
12163: }
12164: }
12165:
12166: // Nested alternative 2.
12167:
12168: yyValue = "^";
12169:
12170: return new SemanticValue(yyValue, yyChoice1, yyError);
12171: }
12172:
12173: case '|': {
12174: final int yyChoice1 = yyIndex;
12175:
12176: // Nested alternative 1.
12177:
12178: yyC = character(yyChoice1);
12179: if (-1 != yyC) {
12180: yyIndex = yyChoice1 + 1;
12181:
12182: switch (yyC) {
12183: case '=': {
12184: yyValue = "|=";
12185:
12186: return new SemanticValue(yyValue, yyIndex,
12187: yyError);
12188: }
12189:
12190: case '|': {
12191: yyValue = "||";
12192:
12193: return new SemanticValue(yyValue, yyIndex,
12194: yyError);
12195: }
12196:
12197: default:
12198: /* No match. */
12199: }
12200: }
12201:
12202: // Nested alternative 2.
12203:
12204: yyValue = "|";
12205:
12206: return new SemanticValue(yyValue, yyChoice1, yyError);
12207: }
12208:
12209: case '=': {
12210: final int yyChoice1 = yyIndex;
12211:
12212: // Nested alternative 1.
12213:
12214: yyC = character(yyChoice1);
12215: if (-1 != yyC) {
12216: yyIndex = yyChoice1 + 1;
12217: if ('=' == yyC) {
12218:
12219: yyValue = "==";
12220:
12221: return new SemanticValue(yyValue, yyIndex,
12222: yyError);
12223: }
12224: }
12225:
12226: // Nested alternative 2.
12227:
12228: yyValue = "=";
12229:
12230: return new SemanticValue(yyValue, yyChoice1, yyError);
12231: }
12232:
12233: case '!': {
12234: final int yyChoice1 = yyIndex;
12235:
12236: // Nested alternative 1.
12237:
12238: yyC = character(yyChoice1);
12239: if (-1 != yyC) {
12240: yyIndex = yyChoice1 + 1;
12241: if ('=' == yyC) {
12242:
12243: yyValue = "!=";
12244:
12245: return new SemanticValue(yyValue, yyIndex,
12246: yyError);
12247: }
12248: }
12249:
12250: // Nested alternative 2.
12251:
12252: yyValue = "!";
12253:
12254: return new SemanticValue(yyValue, yyChoice1, yyError);
12255: }
12256:
12257: case ';': {
12258: yyValue = ";";
12259:
12260: return new SemanticValue(yyValue, yyIndex, yyError);
12261: }
12262:
12263: case ':': {
12264: yyValue = ":";
12265:
12266: return new SemanticValue(yyValue, yyIndex, yyError);
12267: }
12268:
12269: case ',': {
12270: yyValue = ",";
12271:
12272: return new SemanticValue(yyValue, yyIndex, yyError);
12273: }
12274:
12275: case '{': {
12276: yyValue = "{";
12277:
12278: return new SemanticValue(yyValue, yyIndex, yyError);
12279: }
12280:
12281: case '}': {
12282: yyValue = "}";
12283:
12284: return new SemanticValue(yyValue, yyIndex, yyError);
12285: }
12286:
12287: case '(': {
12288: yyValue = "(";
12289:
12290: return new SemanticValue(yyValue, yyIndex, yyError);
12291: }
12292:
12293: case ')': {
12294: yyValue = ")";
12295:
12296: return new SemanticValue(yyValue, yyIndex, yyError);
12297: }
12298:
12299: case '[': {
12300: yyValue = "[";
12301:
12302: return new SemanticValue(yyValue, yyIndex, yyError);
12303: }
12304:
12305: case ']': {
12306: yyValue = "]";
12307:
12308: return new SemanticValue(yyValue, yyIndex, yyError);
12309: }
12310:
12311: case '~': {
12312: yyValue = "~";
12313:
12314: return new SemanticValue(yyValue, yyIndex, yyError);
12315: }
12316:
12317: case '@': {
12318: yyValue = "@";
12319:
12320: return new SemanticValue(yyValue, yyIndex, yyError);
12321: }
12322:
12323: case '?': {
12324: yyValue = "?";
12325:
12326: return new SemanticValue(yyValue, yyIndex, yyError);
12327: }
12328:
12329: default:
12330: /* No match. */
12331: }
12332: }
12333:
12334: // Done.
12335: yyError = yyError.select("symbol characters expected", yyStart);
12336: return yyError;
12337: }
12338:
12339: // =========================================================================
12340:
12341: /**
12342: * Parse nonterminal xtc.util.Spacing.Spacing.
12343: *
12344: * @param yyStart The index.
12345: * @return The result.
12346: * @throws IOException Signals an I/O error.
12347: */
12348: private Result pSpacing(final int yyStart) throws IOException {
12349: int yyC;
12350: int yyIndex;
12351: Result yyPredResult;
12352: boolean yyPredMatched;
12353: int yyBase;
12354: int yyRepetition1;
12355: int yyRepetition2;
12356: Void yyValue;
12357: ParseError yyError = ParseError.DUMMY;
12358:
12359: // Alternative 1.
12360:
12361: yyRepetition1 = yyStart;
12362: while (true) {
12363:
12364: final int yyChoice1 = yyRepetition1;
12365:
12366: // Nested alternative 1.
12367:
12368: yyC = character(yyChoice1);
12369: if (-1 != yyC) {
12370: yyIndex = yyChoice1 + 1;
12371:
12372: switch (yyC) {
12373: case ' ': {
12374: yyRepetition1 = yyIndex;
12375: continue;
12376: }
12377:
12378: case '\t': {
12379: yyRepetition1 = yyIndex;
12380: continue;
12381: }
12382:
12383: case '\f': {
12384: yyRepetition1 = yyIndex;
12385: continue;
12386: }
12387:
12388: case '\r': {
12389: final int yyChoice2 = yyIndex;
12390:
12391: // Nested alternative 1.
12392:
12393: yyC = character(yyChoice2);
12394: if ('\n' == yyC) {
12395: yyIndex = yyChoice2 + 1;
12396:
12397: yyRepetition1 = yyIndex;
12398: continue;
12399: }
12400:
12401: // Nested alternative 2.
12402:
12403: yyRepetition1 = yyChoice2;
12404: continue;
12405: }
12406:
12407: case '\n': {
12408: yyRepetition1 = yyIndex;
12409: continue;
12410: }
12411:
12412: case '/': {
12413: yyC = character(yyIndex);
12414: if (-1 != yyC) {
12415: yyIndex = yyIndex + 1;
12416:
12417: switch (yyC) {
12418: case '*': {
12419: yyRepetition2 = yyIndex;
12420: while (true) {
12421:
12422: final int yyChoice2 = yyRepetition2;
12423:
12424: // Nested alternative 1.
12425:
12426: yyC = character(yyChoice2);
12427: if (-1 != yyC) {
12428: yyIndex = yyChoice2 + 1;
12429:
12430: switch (yyC) {
12431: case '*': {
12432: yyPredMatched = false;
12433:
12434: yyC = character(yyIndex);
12435: if ('/' == yyC) {
12436:
12437: yyPredMatched = true;
12438: }
12439:
12440: if (!yyPredMatched) {
12441:
12442: yyRepetition2 = yyIndex;
12443: continue;
12444: } else {
12445: yyError = yyError.select(
12446: "spacing expected",
12447: yyStart);
12448: }
12449: }
12450: break;
12451:
12452: default: {
12453: yyRepetition2 = yyIndex;
12454: continue;
12455: }
12456: }
12457: }
12458: break;
12459: }
12460:
12461: yyBase = yyRepetition2;
12462: yyC = character(yyBase);
12463: if ('*' == yyC) {
12464: yyIndex = yyRepetition2 + 1;
12465:
12466: yyC = character(yyIndex);
12467: if ('/' == yyC) {
12468: yyIndex = yyIndex + 1;
12469:
12470: yyRepetition1 = yyIndex;
12471: continue;
12472: } else {
12473: yyError = yyError.select(
12474: "\"*/\" expected", yyBase);
12475: }
12476: } else {
12477: yyError = yyError.select(
12478: "\"*/\" expected", yyBase);
12479: }
12480: }
12481: break;
12482:
12483: case '/': {
12484: yyRepetition2 = yyIndex;
12485: while (true) {
12486:
12487: yyC = character(yyRepetition2);
12488: if (-1 != yyC) {
12489: yyIndex = yyRepetition2 + 1;
12490:
12491: switch (yyC) {
12492: case '\n':
12493: case '\r':
12494: /* No match. */
12495: break;
12496:
12497: default: {
12498: yyRepetition2 = yyIndex;
12499: continue;
12500: }
12501: }
12502: }
12503: break;
12504: }
12505:
12506: final int yyChoice2 = yyRepetition2;
12507:
12508: // Nested alternative 1.
12509:
12510: yyC = character(yyChoice2);
12511: if (-1 != yyC) {
12512: yyIndex = yyChoice2 + 1;
12513:
12514: switch (yyC) {
12515: case '\r': {
12516: final int yyChoice3 = yyIndex;
12517:
12518: // Nested alternative 1.
12519:
12520: yyC = character(yyChoice3);
12521: if ('\n' == yyC) {
12522: yyIndex = yyChoice3 + 1;
12523:
12524: yyRepetition1 = yyIndex;
12525: continue;
12526: }
12527:
12528: // Nested alternative 2.
12529:
12530: yyRepetition1 = yyChoice3;
12531: continue;
12532: }
12533:
12534: case '\n': {
12535: yyRepetition1 = yyIndex;
12536: continue;
12537: }
12538:
12539: default:
12540: /* No match. */
12541: }
12542: }
12543:
12544: // Nested alternative 2.
12545:
12546: yyPredResult = pEndOfFile(yyChoice2);
12547: yyError = yyPredResult.select(yyError);
12548: if (yyPredResult.hasValue()) {
12549:
12550: yyRepetition1 = yyChoice2;
12551: continue;
12552: }
12553: }
12554: break;
12555:
12556: default:
12557: /* No match. */
12558: }
12559: }
12560: }
12561: break;
12562:
12563: default:
12564: /* No match. */
12565: }
12566: }
12567: break;
12568: }
12569:
12570: yyValue = null;
12571:
12572: return new SemanticValue(yyValue, yyRepetition1, yyError);
12573: }
12574:
12575: // =========================================================================
12576:
12577: /**
12578: * Parse nonterminal xtc.util.Spacing.EndOfFile.
12579: *
12580: * @param yyStart The index.
12581: * @return The result.
12582: * @throws IOException Signals an I/O error.
12583: */
12584: private Result pEndOfFile(final int yyStart) throws IOException {
12585: int yyC;
12586: boolean yyPredMatched;
12587: Void yyValue;
12588: ParseError yyError = ParseError.DUMMY;
12589:
12590: // Alternative 1.
12591:
12592: yyPredMatched = false;
12593:
12594: yyC = character(yyStart);
12595: if (-1 != yyC) {
12596:
12597: yyPredMatched = true;
12598: }
12599:
12600: if (!yyPredMatched) {
12601:
12602: yyValue = null;
12603:
12604: return new SemanticValue(yyValue, yyStart, yyError);
12605: } else {
12606: yyError = yyError.select("end of file expected", yyStart);
12607: }
12608:
12609: // Done.
12610: return yyError;
12611: }
12612:
12613: // =========================================================================
12614:
12615: static {
12616: add(JAVA_KEYWORDS, new String[] { "abstract", "continue",
12617: "for", "new", "switch", "assert", "default", "if",
12618: "package", "synchronized", "boolean", "do", "goto",
12619: "private", "this", "break", "double", "implements",
12620: "protected", "throw", "byte", "else", "import",
12621: "public", "throws", "case", "instanceof", "return",
12622: "transient", "catch", "extends", "int", "short", "try",
12623: "char", "final", "interface", "static", "void",
12624: "class", "finally", "long", "strictfp", "volatile",
12625: "const", "float", "native", "super", "while" });
12626: }
12627: static {
12628: add(JAVA_KEYWORDS, new String[] { "enum" });
12629: }
12630:
12631: // =========================================================================
12632:
12633: /**
12634: * Get the specified text.
12635: *
12636: * @param s The text.
12637: * @return The text.
12638: */
12639: protected static final String toText(String s) {
12640: return s;
12641: }
12642:
12643: // =========================================================================
12644:
12645: /**
12646: * Add the specified values to the specified set.
12647: *
12648: * @param set The set.
12649: * @param values The new values.
12650: */
12651: protected static final <T> void add(Set<T> set, T[] values) {
12652: for (T v : values)
12653: set.add(v);
12654: }
12655:
12656: /**
12657: * Check whether the specified set contains the specified value.
12658: *
12659: * @param set The set.
12660: * @param value The value.
12661: * @return <code>true</code> if the set contains the value.
12662: */
12663: protected static final <T> boolean contains(Set<T> set, T value) {
12664: return set.contains(value);
12665: }
12666:
12667: }
|