0001: // ===========================================================================
0002: // This file has been generated by
0003: // Rats! Parser Generator, Version 1.8.1, (C) 2004-2006 Robert Grimm
0004: // on Saturday, June 10, 2006 at 3:48:28 PM.
0005: // Edit at your own risk.
0006: // ===========================================================================
0007:
0008: package xtc.xform.samples.javaproperty;
0009:
0010: import java.io.Reader;
0011: import java.io.IOException;
0012:
0013: import java.util.ArrayList;
0014: import java.util.HashSet;
0015: import java.util.Set;
0016:
0017: import xtc.util.Action;
0018: import xtc.util.Pair;
0019:
0020: import xtc.tree.Node;
0021: import xtc.tree.GNode;
0022:
0023: import xtc.parser.FullParserBase;
0024: import xtc.parser.Column;
0025: import xtc.parser.Result;
0026: import xtc.parser.SemanticValue;
0027: import xtc.parser.ParseError;
0028:
0029: /**
0030: * Packrat parser for grammar <code>xtc.xform.samples.javaproperty.JavaProperty</code>.
0031: *
0032: * <p />This class has been generated by the <i>Rats!</i> parser
0033: * generator, version 1.8.1, (C) 2004-2006 Robert Grimm.
0034: */
0035: public final class JavaPropertyParser extends FullParserBase {
0036:
0037: /** The JAVA_KEYWORDS set. */
0038: public static final Set JAVA_KEYWORDS = new HashSet();
0039:
0040: // =========================================================================
0041:
0042: /** Chunk 1 of memoized results. */
0043: static final class Chunk1 {
0044: Result fFormalParameters;
0045: Result fFormalParameters$$Star1;
0046: Result fDeclarators;
0047: Result fDeclarators$$Star1;
0048: Result fBlock;
0049: Result fBlock$$Star1;
0050: Result fParExpression;
0051: Result fCatchClause;
0052: Result fExpression;
0053: Result fConditionalExpression;
0054: }
0055:
0056: /** Chunk 2 of memoized results. */
0057: static final class Chunk2 {
0058: Result fLogicalOrExpression;
0059: Result fRelationalExpression;
0060: Result fVariableInitializer;
0061: Result fType;
0062: Result fTypeName;
0063: Result fBasicType;
0064: Result fDimensions;
0065: Result fDimensions$$Plus1;
0066: Result fQualifiedIdentifier;
0067: Result fQualifiedIdentifier$$Star1;
0068: }
0069:
0070: /** Chunk 3 of memoized results. */
0071: static final class Chunk3 {
0072: Result fIdentifier;
0073: Result fWord;
0074: Result fSymbol;
0075: }
0076:
0077: // =========================================================================
0078:
0079: /** Memoization table column. */
0080: static final class JavaPropertyParserColumn extends Column {
0081: Chunk1 chunk1;
0082: Chunk2 chunk2;
0083: Chunk3 chunk3;
0084: }
0085:
0086: // =========================================================================
0087:
0088: /**
0089: * Create a new packrat parser.
0090: *
0091: * @param reader The reader.
0092: * @param file The file name.
0093: */
0094: public JavaPropertyParser(final Reader reader, final String file) {
0095: super (reader, file);
0096: }
0097:
0098: /**
0099: * Create a new packrat parser.
0100: *
0101: * @param reader The file reader.
0102: * @param file The file name.
0103: * @param size The file size.
0104: */
0105: public JavaPropertyParser(final Reader reader, final String file,
0106: final int size) {
0107: super (reader, file, size);
0108: }
0109:
0110: // =========================================================================
0111:
0112: protected Column newColumn() {
0113: return new JavaPropertyParserColumn();
0114: }
0115:
0116: // =========================================================================
0117:
0118: /**
0119: * Parse nonterminal
0120: * xtc.xform.samples.javaproperty.JavaProperty.CompilationUnit.
0121: *
0122: * @param yyStart The index.
0123: * @return The result.
0124: * @throws IOException Signals an I/O error.
0125: */
0126: public Result pCompilationUnit(final int yyStart)
0127: throws IOException {
0128: int yyC;
0129: int yyIndex;
0130: Result yyResult;
0131: int yyRepetition1;
0132: Pair yyRepValue1;
0133: int yyOption1;
0134: GNode yyOpValue1;
0135: GNode yyValue;
0136: ParseError yyError = ParseError.DUMMY;
0137:
0138: // Alternative 1.
0139:
0140: yyResult = pSpacing(yyStart);
0141: yyError = yyResult.select(yyError);
0142: if (yyResult.hasValue()) {
0143:
0144: yyOption1 = yyResult.index;
0145: yyOpValue1 = null;
0146:
0147: yyResult = pPackageDeclaration(yyOption1);
0148: yyError = yyResult.select(yyError);
0149: if (yyResult.hasValue()) {
0150: final GNode v$el$1 = (GNode) yyResult.semanticValue();
0151:
0152: yyOption1 = yyResult.index;
0153: yyOpValue1 = v$el$1;
0154: }
0155: { // Start scope for v$g$1.
0156: final GNode v$g$1 = yyOpValue1;
0157:
0158: yyRepetition1 = yyOption1;
0159: yyRepValue1 = Pair.EMPTY;
0160: while (true) {
0161:
0162: yyResult = pImportDeclaration(yyRepetition1);
0163: yyError = yyResult.select(yyError);
0164: if (yyResult.hasValue()) {
0165: final GNode v$el$2 = (GNode) yyResult
0166: .semanticValue();
0167:
0168: yyRepetition1 = yyResult.index;
0169: yyRepValue1 = new Pair(v$el$2, yyRepValue1);
0170: continue;
0171: }
0172: break;
0173: }
0174: { // Start scope for v$g$2.
0175: final Pair v$g$2 = yyRepValue1.reverse();
0176:
0177: yyRepValue1 = Pair.EMPTY;
0178: while (true) {
0179:
0180: yyResult = pDeclaration(yyRepetition1);
0181: yyError = yyResult.select(yyError);
0182: if (yyResult.hasValue()) {
0183: final GNode v$el$3 = (GNode) yyResult
0184: .semanticValue();
0185:
0186: yyRepetition1 = yyResult.index;
0187: yyRepValue1 = new Pair(v$el$3, yyRepValue1);
0188: continue;
0189: }
0190: break;
0191: }
0192: { // Start scope for v$g$3.
0193: final Pair v$g$3 = yyRepValue1.reverse();
0194:
0195: yyOption1 = yyRepetition1;
0196:
0197: yyC = character(yyOption1);
0198: if ('\u001a' == yyC) {
0199: yyIndex = yyOption1 + 1;
0200:
0201: yyOption1 = yyIndex;
0202: }
0203:
0204: yyResult = pEndOfFile(yyOption1);
0205: yyError = yyResult.select(yyError);
0206: if (yyResult.hasValue()) {
0207:
0208: yyValue = GNode
0209: .create(
0210: "CompilationUnit",
0211: ((Pair) v$g$2).size()
0212: + ((Pair) v$g$3)
0213: .size() + 1)
0214: .add(v$g$1).addAll((Pair) v$g$2)
0215: .addAll((Pair) v$g$3);
0216:
0217: setLocation(yyValue, yyStart);
0218: return yyResult.createValue(yyValue,
0219: yyError);
0220: }
0221: } // End scope for v$g$3.
0222: } // End scope for v$g$2.
0223: } // End scope for v$g$1.
0224: }
0225:
0226: // Done.
0227: yyError = yyError.select("compilation unit expected", yyStart);
0228: return yyError;
0229: }
0230:
0231: // =========================================================================
0232:
0233: /**
0234: * Parse nonterminal
0235: * xtc.xform.samples.javaproperty.JavaProperty.PackageDeclaration.
0236: *
0237: * @param yyStart The index.
0238: * @return The result.
0239: * @throws IOException Signals an I/O error.
0240: */
0241: private Result pPackageDeclaration(final int yyStart)
0242: throws IOException {
0243: Result yyResult;
0244: int yyBase;
0245: GNode yyValue;
0246: ParseError yyError = ParseError.DUMMY;
0247:
0248: // Alternative 1.
0249:
0250: yyResult = pWord(yyStart);
0251: yyError = yyResult.select(yyError);
0252: if (yyResult.hasValue("package")) {
0253:
0254: yyResult = pQualifiedIdentifier(yyResult.index);
0255: yyError = yyResult.select(yyError);
0256: if (yyResult.hasValue()) {
0257: final GNode v$g$1 = (GNode) yyResult.semanticValue();
0258:
0259: yyBase = yyResult.index;
0260: yyResult = pSymbol(yyBase);
0261: yyError = yyResult.select(yyError);
0262: if (yyResult.hasValue(";")) {
0263:
0264: yyValue = GNode.create("PackageDeclaration", v$g$1);
0265:
0266: setLocation(yyValue, yyStart);
0267: return yyResult.createValue(yyValue, yyError);
0268: } else {
0269: yyError = yyError.select("\";\" expected", yyBase);
0270: }
0271: }
0272: }
0273:
0274: // Done.
0275: yyError = yyError.select("package declaration expected",
0276: yyStart);
0277: return yyError;
0278: }
0279:
0280: // =========================================================================
0281:
0282: /**
0283: * Parse nonterminal
0284: * xtc.xform.samples.javaproperty.JavaProperty.ImportDeclaration.
0285: *
0286: * @param yyStart The index.
0287: * @return The result.
0288: * @throws IOException Signals an I/O error.
0289: */
0290: private Result pImportDeclaration(final int yyStart)
0291: throws IOException {
0292: Result yyResult;
0293: int yyBase;
0294: int yyOption1;
0295: String yyOpValue1;
0296: GNode yyValue;
0297: ParseError yyError = ParseError.DUMMY;
0298:
0299: // Alternative 1.
0300:
0301: yyResult = pWord(yyStart);
0302: yyError = yyResult.select(yyError);
0303: if (yyResult.hasValue("import")) {
0304:
0305: yyResult = pQualifiedIdentifier(yyResult.index);
0306: yyError = yyResult.select(yyError);
0307: if (yyResult.hasValue()) {
0308: final GNode v$g$1 = (GNode) yyResult.semanticValue();
0309:
0310: yyOption1 = yyResult.index;
0311: yyOpValue1 = null;
0312:
0313: yyResult = pDotStarTail(yyOption1);
0314: yyError = yyResult.select(yyError);
0315: if (yyResult.hasValue()) {
0316: final String v$el$1 = (String) yyResult
0317: .semanticValue();
0318:
0319: yyOption1 = yyResult.index;
0320: yyOpValue1 = v$el$1;
0321: }
0322: { // Start scope for v$g$2.
0323: final String v$g$2 = yyOpValue1;
0324:
0325: yyBase = yyOption1;
0326: yyResult = pSymbol(yyBase);
0327: yyError = yyResult.select(yyError);
0328: if (yyResult.hasValue(";")) {
0329:
0330: yyValue = GNode.create("ImportDeclaration",
0331: v$g$1, v$g$2);
0332:
0333: setLocation(yyValue, yyStart);
0334: return yyResult.createValue(yyValue, yyError);
0335: } else {
0336: yyError = yyError.select("\";\" expected",
0337: yyBase);
0338: }
0339: } // End scope for v$g$2.
0340: }
0341: }
0342:
0343: // Done.
0344: yyError = yyError
0345: .select("import declaration expected", yyStart);
0346: return yyError;
0347: }
0348:
0349: // =========================================================================
0350:
0351: /**
0352: * Parse nonterminal
0353: * xtc.xform.samples.javaproperty.JavaProperty.DotStarTail.
0354: *
0355: * @param yyStart The index.
0356: * @return The result.
0357: * @throws IOException Signals an I/O error.
0358: */
0359: private Result pDotStarTail(final int yyStart) throws IOException {
0360: Result yyResult;
0361: int yyBase;
0362: String yyValue;
0363: ParseError yyError = ParseError.DUMMY;
0364:
0365: // Alternative 1.
0366:
0367: yyResult = pSymbol(yyStart);
0368: yyError = yyResult.select(yyError);
0369: if (yyResult.hasValue(".")) {
0370:
0371: yyBase = yyResult.index;
0372: yyResult = pSymbol(yyBase);
0373: yyError = yyResult.select(yyError);
0374: if (yyResult.hasValue("*")) {
0375: yyValue = "*";
0376:
0377: return yyResult.createValue(yyValue, yyError);
0378: } else {
0379: yyError = yyError.select("\"*\" expected", yyBase);
0380: }
0381: }
0382:
0383: // Done.
0384: yyError = yyError.select("dot star tail expected", yyStart);
0385: return yyError;
0386: }
0387:
0388: // =========================================================================
0389:
0390: /**
0391: * Parse nonterminal xtc.xform.samples.javaproperty.JavaProperty.Modifiers.
0392: *
0393: * @param yyStart The index.
0394: * @return The result.
0395: * @throws IOException Signals an I/O error.
0396: */
0397: private Result pModifiers(final int yyStart) throws IOException {
0398: Result yyResult;
0399: GNode yyValue;
0400: ParseError yyError = ParseError.DUMMY;
0401:
0402: // Alternative 1.
0403:
0404: yyResult = pModifierList(yyStart);
0405: yyError = yyResult.select(yyError);
0406: if (yyResult.hasValue()) {
0407: final Pair v$g$1 = (Pair) yyResult.semanticValue();
0408:
0409: yyValue = GNode.create("Modifiers", (Pair) v$g$1);
0410:
0411: setLocation(yyValue, yyStart);
0412: return yyResult.createValue(yyValue, yyError);
0413: }
0414:
0415: // Done.
0416: return yyError;
0417: }
0418:
0419: // =========================================================================
0420:
0421: /**
0422: * Parse nonterminal
0423: * xtc.xform.samples.javaproperty.JavaProperty.ModifierList.
0424: *
0425: * @param yyStart The index.
0426: * @return The result.
0427: * @throws IOException Signals an I/O error.
0428: */
0429: private Result pModifierList(final int yyStart) throws IOException {
0430: Result yyResult;
0431: int yyRepetition1;
0432: Pair yyRepValue1;
0433: Pair yyValue;
0434: ParseError yyError = ParseError.DUMMY;
0435:
0436: // Alternative 1.
0437:
0438: yyRepetition1 = yyStart;
0439: yyRepValue1 = Pair.EMPTY;
0440: while (true) {
0441:
0442: yyResult = pModifier(yyRepetition1);
0443: yyError = yyResult.select(yyError);
0444: if (yyResult.hasValue()) {
0445: final String v$el$2 = (String) yyResult.semanticValue();
0446:
0447: yyRepetition1 = yyResult.index;
0448: yyRepValue1 = new Pair(v$el$2, yyRepValue1);
0449: continue;
0450: }
0451: break;
0452: }
0453: { // Start scope for yyValue.
0454: yyValue = yyRepValue1.reverse();
0455:
0456: return new SemanticValue(yyValue, yyRepetition1, yyError);
0457: } // End scope for yyValue.
0458: }
0459:
0460: // =========================================================================
0461:
0462: /**
0463: * Parse nonterminal xtc.xform.samples.javaproperty.JavaProperty.Modifier.
0464: *
0465: * @param yyStart The index.
0466: * @return The result.
0467: * @throws IOException Signals an I/O error.
0468: */
0469: private Result pModifier(final int yyStart) throws IOException {
0470: Result yyResult;
0471: String yyValue;
0472: ParseError yyError = ParseError.DUMMY;
0473:
0474: // Alternative <Public>.
0475:
0476: yyResult = pWord(yyStart);
0477: yyError = yyResult.select(yyError);
0478: if (yyResult.hasValue("public")) {
0479: yyValue = "public";
0480:
0481: return yyResult.createValue(yyValue, yyError);
0482: }
0483:
0484: // Alternative <Protected>.
0485:
0486: yyResult = pWord(yyStart);
0487: yyError = yyResult.select(yyError);
0488: if (yyResult.hasValue("protected")) {
0489: yyValue = "protected";
0490:
0491: return yyResult.createValue(yyValue, yyError);
0492: }
0493:
0494: // Alternative <Private>.
0495:
0496: yyResult = pWord(yyStart);
0497: yyError = yyResult.select(yyError);
0498: if (yyResult.hasValue("private")) {
0499: yyValue = "private";
0500:
0501: return yyResult.createValue(yyValue, yyError);
0502: }
0503:
0504: // Alternative <Static>.
0505:
0506: yyResult = pWord(yyStart);
0507: yyError = yyResult.select(yyError);
0508: if (yyResult.hasValue("static")) {
0509: yyValue = "static";
0510:
0511: return yyResult.createValue(yyValue, yyError);
0512: }
0513:
0514: // Alternative <Abstract>.
0515:
0516: yyResult = pWord(yyStart);
0517: yyError = yyResult.select(yyError);
0518: if (yyResult.hasValue("abstract")) {
0519: yyValue = "abstract";
0520:
0521: return yyResult.createValue(yyValue, yyError);
0522: }
0523:
0524: // Alternative <Final>.
0525:
0526: yyResult = pWord(yyStart);
0527: yyError = yyResult.select(yyError);
0528: if (yyResult.hasValue("final")) {
0529: yyValue = "final";
0530:
0531: return yyResult.createValue(yyValue, yyError);
0532: }
0533:
0534: // Alternative <Native>.
0535:
0536: yyResult = pWord(yyStart);
0537: yyError = yyResult.select(yyError);
0538: if (yyResult.hasValue("native")) {
0539: yyValue = "native";
0540:
0541: return yyResult.createValue(yyValue, yyError);
0542: }
0543:
0544: // Alternative <Synchronized>.
0545:
0546: yyResult = pWord(yyStart);
0547: yyError = yyResult.select(yyError);
0548: if (yyResult.hasValue("synchronized")) {
0549: yyValue = "synchronized";
0550:
0551: return yyResult.createValue(yyValue, yyError);
0552: }
0553:
0554: // Alternative <Transient>.
0555:
0556: yyResult = pWord(yyStart);
0557: yyError = yyResult.select(yyError);
0558: if (yyResult.hasValue("transient")) {
0559: yyValue = "transient";
0560:
0561: return yyResult.createValue(yyValue, yyError);
0562: }
0563:
0564: // Alternative <Volatile>.
0565:
0566: yyResult = pWord(yyStart);
0567: yyError = yyResult.select(yyError);
0568: if (yyResult.hasValue("volatile")) {
0569: yyValue = "volatile";
0570:
0571: return yyResult.createValue(yyValue, yyError);
0572: }
0573:
0574: // Alternative <Strictfp>.
0575:
0576: yyResult = pWord(yyStart);
0577: yyError = yyResult.select(yyError);
0578: if (yyResult.hasValue("strictfp")) {
0579: yyValue = "strictfp";
0580:
0581: return yyResult.createValue(yyValue, yyError);
0582: }
0583:
0584: // Alternative <Property>.
0585:
0586: yyResult = pWord(yyStart);
0587: yyError = yyResult.select(yyError);
0588: if (yyResult.hasValue("property")) {
0589: yyValue = "property";
0590:
0591: return yyResult.createValue(yyValue, yyError);
0592: }
0593:
0594: // Done.
0595: yyError = yyError.select("modifier expected", yyStart);
0596: return yyError;
0597: }
0598:
0599: // =========================================================================
0600:
0601: /**
0602: * Parse nonterminal
0603: * xtc.xform.samples.javaproperty.JavaProperty.FormalParameter.
0604: *
0605: * @param yyStart The index.
0606: * @return The result.
0607: * @throws IOException Signals an I/O error.
0608: */
0609: private Result pFormalParameter(final int yyStart)
0610: throws IOException {
0611: Result yyResult;
0612: int yyOption1;
0613: GNode yyOpValue1;
0614: GNode yyValue;
0615: ParseError yyError = ParseError.DUMMY;
0616:
0617: // Alternative 1.
0618:
0619: yyOption1 = yyStart;
0620: yyOpValue1 = null;
0621:
0622: yyResult = pFinalClause(yyOption1);
0623: yyError = yyResult.select(yyError);
0624: if (yyResult.hasValue()) {
0625: final GNode v$el$1 = (GNode) yyResult.semanticValue();
0626:
0627: yyOption1 = yyResult.index;
0628: yyOpValue1 = v$el$1;
0629: }
0630: { // Start scope for v$g$1.
0631: final GNode v$g$1 = yyOpValue1;
0632:
0633: yyResult = pType(yyOption1);
0634: yyError = yyResult.select(yyError);
0635: if (yyResult.hasValue()) {
0636: final GNode v$g$2 = (GNode) yyResult.semanticValue();
0637:
0638: yyResult = pIdentifier(yyResult.index);
0639: yyError = yyResult.select(yyError);
0640: if (yyResult.hasValue()) {
0641: final String v$g$3 = (String) yyResult
0642: .semanticValue();
0643:
0644: yyOption1 = yyResult.index;
0645: yyOpValue1 = null;
0646:
0647: yyResult = pDimensions(yyOption1);
0648: yyError = yyResult.select(yyError);
0649: if (yyResult.hasValue()) {
0650: final GNode v$el$2 = (GNode) yyResult
0651: .semanticValue();
0652:
0653: yyOption1 = yyResult.index;
0654: yyOpValue1 = v$el$2;
0655: }
0656: { // Start scope for v$g$4.
0657: final GNode v$g$4 = yyOpValue1;
0658:
0659: yyValue = GNode.create("FormalParameter",
0660: v$g$1, v$g$2, v$g$3, v$g$4);
0661:
0662: setLocation(yyValue, yyStart);
0663: return new SemanticValue(yyValue, yyOption1,
0664: yyError);
0665: } // End scope for v$g$4.
0666: }
0667: }
0668: } // End scope for v$g$1.
0669:
0670: // Done.
0671: return yyError;
0672: }
0673:
0674: // =========================================================================
0675:
0676: /**
0677: * Parse nonterminal
0678: * xtc.xform.samples.javaproperty.JavaProperty.FinalClause.
0679: *
0680: * @param yyStart The index.
0681: * @return The result.
0682: * @throws IOException Signals an I/O error.
0683: */
0684: private Result pFinalClause(final int yyStart) throws IOException {
0685: Result yyResult;
0686: GNode yyValue;
0687: ParseError yyError = ParseError.DUMMY;
0688:
0689: // Alternative 1.
0690:
0691: yyResult = pWord(yyStart);
0692: yyError = yyResult.select(yyError);
0693: if (yyResult.hasValue("final")) {
0694:
0695: yyValue = GNode.create("FinalClause", false);
0696:
0697: setLocation(yyValue, yyStart);
0698: return yyResult.createValue(yyValue, yyError);
0699: }
0700:
0701: // Done.
0702: yyError = yyError.select("final clause expected", yyStart);
0703: return yyError;
0704: }
0705:
0706: // =========================================================================
0707:
0708: /**
0709: * Parse nonterminal
0710: * xtc.xform.samples.javaproperty.JavaProperty.FormalParameters.
0711: *
0712: * @param yyStart The index.
0713: * @return The result.
0714: * @throws IOException Signals an I/O error.
0715: */
0716: private Result pFormalParameters(final int yyStart)
0717: throws IOException {
0718: JavaPropertyParserColumn yyColumn = (JavaPropertyParserColumn) column(yyStart);
0719: if (null == yyColumn.chunk1)
0720: yyColumn.chunk1 = new Chunk1();
0721: if (null == yyColumn.chunk1.fFormalParameters)
0722: yyColumn.chunk1.fFormalParameters = pFormalParameters$1(yyStart);
0723: return yyColumn.chunk1.fFormalParameters;
0724: }
0725:
0726: /** Actually parse xtc.xform.samples.javaproperty.JavaProperty.FormalParameters. */
0727: private Result pFormalParameters$1(final int yyStart)
0728: throws IOException {
0729: Result yyResult;
0730: int yyBase;
0731: GNode yyValue;
0732: ParseError yyError = ParseError.DUMMY;
0733:
0734: // Alternative 1.
0735:
0736: yyResult = pSymbol(yyStart);
0737: yyError = yyResult.select(yyError);
0738: if (yyResult.hasValue("(")) {
0739:
0740: final int yyChoice1 = yyResult.index;
0741:
0742: // Nested alternative 1.
0743:
0744: yyResult = pFormalParameter(yyChoice1);
0745: yyError = yyResult.select(yyError);
0746: if (yyResult.hasValue()) {
0747: final GNode v$g$1 = (GNode) yyResult.semanticValue();
0748:
0749: yyResult = pFormalParameters$$Star1(yyResult.index);
0750: yyError = yyResult.select(yyError);
0751: if (yyResult.hasValue()) {
0752: final Pair v$g$2 = (Pair) yyResult.semanticValue();
0753:
0754: yyBase = yyResult.index;
0755: yyResult = pSymbol(yyBase);
0756: yyError = yyResult.select(yyError);
0757: if (yyResult.hasValue(")")) {
0758:
0759: yyValue = GNode.create("FormalParameters",
0760: v$g$1, (Pair) v$g$2);
0761:
0762: setLocation(yyValue, yyStart);
0763: return yyResult.createValue(yyValue, yyError);
0764: } else {
0765: yyError = yyError.select("\")\" expected",
0766: yyBase);
0767: }
0768: }
0769: }
0770:
0771: // Nested alternative 2.
0772:
0773: yyBase = yyChoice1;
0774: yyResult = pSymbol(yyBase);
0775: yyError = yyResult.select(yyError);
0776: if (yyResult.hasValue(")")) {
0777:
0778: yyValue = GNode.create("FormalParameters", false);
0779:
0780: setLocation(yyValue, yyStart);
0781: return yyResult.createValue(yyValue, yyError);
0782: } else {
0783: yyError = yyError.select("\")\" expected", yyBase);
0784: }
0785: }
0786:
0787: // Done.
0788: yyError = yyError.select("formal parameters expected", yyStart);
0789: return yyError;
0790: }
0791:
0792: // =========================================================================
0793:
0794: /**
0795: * Parse synthetic nonterminal
0796: * xtc.xform.samples.javaproperty.JavaProperty.FormalParameters$$Star1.
0797: *
0798: * @param yyStart The index.
0799: * @return The result.
0800: * @throws IOException Signals an I/O error.
0801: */
0802: private Result pFormalParameters$$Star1(final int yyStart)
0803: throws IOException {
0804:
0805: JavaPropertyParserColumn yyColumn = (JavaPropertyParserColumn) column(yyStart);
0806: if (null == yyColumn.chunk1)
0807: yyColumn.chunk1 = new Chunk1();
0808: if (null == yyColumn.chunk1.fFormalParameters$$Star1)
0809: yyColumn.chunk1.fFormalParameters$$Star1 = pFormalParameters$$Star1$1(yyStart);
0810: return yyColumn.chunk1.fFormalParameters$$Star1;
0811: }
0812:
0813: /** Actually parse xtc.xform.samples.javaproperty.JavaProperty.FormalParameters$$Star1. */
0814: private Result pFormalParameters$$Star1$1(final int yyStart)
0815: throws IOException {
0816:
0817: Result yyResult;
0818: Pair yyValue;
0819: ParseError yyError = ParseError.DUMMY;
0820:
0821: // Alternative 1.
0822:
0823: yyResult = pSymbol(yyStart);
0824: yyError = yyResult.select(yyError);
0825: if (yyResult.hasValue(",")) {
0826:
0827: yyResult = pFormalParameter(yyResult.index);
0828: yyError = yyResult.select(yyError);
0829: if (yyResult.hasValue()) {
0830: final GNode v$el$1 = (GNode) yyResult.semanticValue();
0831:
0832: yyResult = pFormalParameters$$Star1(yyResult.index);
0833: yyError = yyResult.select(yyError);
0834: if (yyResult.hasValue()) {
0835: final Pair v$2 = (Pair) yyResult.semanticValue();
0836:
0837: yyValue = new Pair(v$el$1, v$2);
0838:
0839: return yyResult.createValue(yyValue, yyError);
0840: }
0841: }
0842: }
0843:
0844: // Alternative 2.
0845:
0846: yyValue = Pair.EMPTY;
0847:
0848: return new SemanticValue(yyValue, yyStart, yyError);
0849: }
0850:
0851: // =========================================================================
0852:
0853: /**
0854: * Parse nonterminal xtc.xform.samples.javaproperty.JavaProperty.Declarator.
0855: *
0856: * @param yyStart The index.
0857: * @return The result.
0858: * @throws IOException Signals an I/O error.
0859: */
0860: private Result pDeclarator(final int yyStart) throws IOException {
0861: Result yyResult;
0862: int yyBase;
0863: int yyOption1;
0864: GNode yyOpValue1;
0865: GNode yyValue;
0866: ParseError yyError = ParseError.DUMMY;
0867:
0868: // Alternative 1.
0869:
0870: yyResult = pIdentifier(yyStart);
0871: yyError = yyResult.select(yyError);
0872: if (yyResult.hasValue()) {
0873: final String v$g$1 = (String) yyResult.semanticValue();
0874:
0875: yyOption1 = yyResult.index;
0876: yyOpValue1 = null;
0877:
0878: yyResult = pDimensions(yyOption1);
0879: yyError = yyResult.select(yyError);
0880: if (yyResult.hasValue()) {
0881: final GNode v$el$1 = (GNode) yyResult.semanticValue();
0882:
0883: yyOption1 = yyResult.index;
0884: yyOpValue1 = v$el$1;
0885: }
0886: { // Start scope for v$g$2.
0887: final GNode v$g$2 = yyOpValue1;
0888:
0889: yyOpValue1 = null;
0890:
0891: yyBase = yyOption1;
0892: yyResult = pSymbol(yyBase);
0893: yyError = yyResult.select(yyError);
0894: if (yyResult.hasValue("=")) {
0895:
0896: yyResult = pVariableInitializer(yyResult.index);
0897: yyError = yyResult.select(yyError);
0898: if (yyResult.hasValue()) {
0899: final GNode v$el$2 = (GNode) yyResult
0900: .semanticValue();
0901:
0902: yyOption1 = yyResult.index;
0903: yyOpValue1 = v$el$2;
0904: }
0905: } else {
0906: yyError = yyError.select("\"=\" expected", yyBase);
0907: }
0908: { // Start scope for v$g$3.
0909: final GNode v$g$3 = yyOpValue1;
0910:
0911: yyValue = GNode.create("Declarator", v$g$1, v$g$2,
0912: v$g$3);
0913:
0914: setLocation(yyValue, yyStart);
0915: return new SemanticValue(yyValue, yyOption1,
0916: yyError);
0917: } // End scope for v$g$3.
0918: } // End scope for v$g$2.
0919: }
0920:
0921: // Done.
0922: return yyError;
0923: }
0924:
0925: // =========================================================================
0926:
0927: /**
0928: * Parse nonterminal
0929: * xtc.xform.samples.javaproperty.JavaProperty.Declarators.
0930: *
0931: * @param yyStart The index.
0932: * @return The result.
0933: * @throws IOException Signals an I/O error.
0934: */
0935: private Result pDeclarators(final int yyStart) throws IOException {
0936: JavaPropertyParserColumn yyColumn = (JavaPropertyParserColumn) column(yyStart);
0937: if (null == yyColumn.chunk1)
0938: yyColumn.chunk1 = new Chunk1();
0939: if (null == yyColumn.chunk1.fDeclarators)
0940: yyColumn.chunk1.fDeclarators = pDeclarators$1(yyStart);
0941: return yyColumn.chunk1.fDeclarators;
0942: }
0943:
0944: /** Actually parse xtc.xform.samples.javaproperty.JavaProperty.Declarators. */
0945: private Result pDeclarators$1(final int yyStart) throws IOException {
0946: Result yyResult;
0947: GNode yyValue;
0948: ParseError yyError = ParseError.DUMMY;
0949:
0950: // Alternative 1.
0951:
0952: yyResult = pDeclarator(yyStart);
0953: yyError = yyResult.select(yyError);
0954: if (yyResult.hasValue()) {
0955: final GNode v$g$1 = (GNode) yyResult.semanticValue();
0956:
0957: yyResult = pDeclarators$$Star1(yyResult.index);
0958: yyError = yyResult.select(yyError);
0959: if (yyResult.hasValue()) {
0960: final Pair v$g$2 = (Pair) yyResult.semanticValue();
0961:
0962: yyValue = GNode.create("Declarators", v$g$1,
0963: (Pair) v$g$2);
0964:
0965: setLocation(yyValue, yyStart);
0966: return yyResult.createValue(yyValue, yyError);
0967: }
0968: }
0969:
0970: // Done.
0971: return yyError;
0972: }
0973:
0974: // =========================================================================
0975:
0976: /**
0977: * Parse synthetic nonterminal
0978: * xtc.xform.samples.javaproperty.JavaProperty.Declarators$$Star1.
0979: *
0980: * @param yyStart The index.
0981: * @return The result.
0982: * @throws IOException Signals an I/O error.
0983: */
0984: private Result pDeclarators$$Star1(final int yyStart)
0985: throws IOException {
0986: JavaPropertyParserColumn yyColumn = (JavaPropertyParserColumn) column(yyStart);
0987: if (null == yyColumn.chunk1)
0988: yyColumn.chunk1 = new Chunk1();
0989: if (null == yyColumn.chunk1.fDeclarators$$Star1)
0990: yyColumn.chunk1.fDeclarators$$Star1 = pDeclarators$$Star1$1(yyStart);
0991: return yyColumn.chunk1.fDeclarators$$Star1;
0992: }
0993:
0994: /** Actually parse xtc.xform.samples.javaproperty.JavaProperty.Declarators$$Star1. */
0995: private Result pDeclarators$$Star1$1(final int yyStart)
0996: throws IOException {
0997: Result yyResult;
0998: Pair yyValue;
0999: ParseError yyError = ParseError.DUMMY;
1000:
1001: // Alternative 1.
1002:
1003: yyResult = pSymbol(yyStart);
1004: yyError = yyResult.select(yyError);
1005: if (yyResult.hasValue(",")) {
1006:
1007: yyResult = pDeclarator(yyResult.index);
1008: yyError = yyResult.select(yyError);
1009: if (yyResult.hasValue()) {
1010: final GNode v$el$1 = (GNode) yyResult.semanticValue();
1011:
1012: yyResult = pDeclarators$$Star1(yyResult.index);
1013: yyError = yyResult.select(yyError);
1014: if (yyResult.hasValue()) {
1015: final Pair v$2 = (Pair) yyResult.semanticValue();
1016:
1017: yyValue = new Pair(v$el$1, v$2);
1018:
1019: return yyResult.createValue(yyValue, yyError);
1020: }
1021: }
1022: }
1023:
1024: // Alternative 2.
1025:
1026: yyValue = Pair.EMPTY;
1027:
1028: return new SemanticValue(yyValue, yyStart, yyError);
1029: }
1030:
1031: // =========================================================================
1032:
1033: /**
1034: * Parse nonterminal xtc.xform.samples.javaproperty.JavaProperty.ClassBody.
1035: *
1036: * @param yyStart The index.
1037: * @return The result.
1038: * @throws IOException Signals an I/O error.
1039: */
1040: private Result pClassBody(final int yyStart) throws IOException {
1041: Result yyResult;
1042: int yyBase;
1043: int yyRepetition1;
1044: Pair yyRepValue1;
1045: GNode yyValue;
1046: ParseError yyError = ParseError.DUMMY;
1047:
1048: // Alternative 1.
1049:
1050: yyResult = pSymbol(yyStart);
1051: yyError = yyResult.select(yyError);
1052: if (yyResult.hasValue("{")) {
1053:
1054: yyRepetition1 = yyResult.index;
1055: yyRepValue1 = Pair.EMPTY;
1056: while (true) {
1057:
1058: yyResult = pDeclaration(yyRepetition1);
1059: yyError = yyResult.select(yyError);
1060: if (yyResult.hasValue()) {
1061: final GNode v$el$1 = (GNode) yyResult
1062: .semanticValue();
1063:
1064: yyRepetition1 = yyResult.index;
1065: yyRepValue1 = new Pair(v$el$1, yyRepValue1);
1066: continue;
1067: }
1068: break;
1069: }
1070: { // Start scope for v$g$1.
1071: final Pair v$g$1 = yyRepValue1.reverse();
1072:
1073: yyBase = yyRepetition1;
1074: yyResult = pSymbol(yyBase);
1075: yyError = yyResult.select(yyError);
1076: if (yyResult.hasValue("}")) {
1077:
1078: yyValue = GNode.create("ClassBody", (Pair) v$g$1);
1079:
1080: setLocation(yyValue, yyStart);
1081: return yyResult.createValue(yyValue, yyError);
1082: } else {
1083: yyError = yyError.select("\"}\" expected", yyBase);
1084: }
1085: } // End scope for v$g$1.
1086: }
1087:
1088: // Done.
1089: yyError = yyError.select("class body expected", yyStart);
1090: return yyError;
1091: }
1092:
1093: // =========================================================================
1094:
1095: /**
1096: * Parse nonterminal
1097: * xtc.xform.samples.javaproperty.JavaProperty.Declaration.
1098: *
1099: * @param yyStart The index.
1100: * @return The result.
1101: * @throws IOException Signals an I/O error.
1102: */
1103: private Result pDeclaration(final int yyStart) throws IOException {
1104: Result yyResult;
1105: int yyBase;
1106: int yyOption1;
1107: Object yyOpValue1;
1108: GNode yyValue;
1109: ParseError yyError = ParseError.DUMMY;
1110:
1111: // Alternative 1.
1112:
1113: yyResult = pModifiers(yyStart);
1114: yyError = yyResult.select(yyError);
1115: if (yyResult.hasValue()) {
1116: final GNode v$g$1 = (GNode) yyResult.semanticValue();
1117:
1118: final int yyChoice1 = yyResult.index;
1119:
1120: // Nested alternative 1.
1121:
1122: yyResult = pType(yyChoice1);
1123: yyError = yyResult.select(yyError);
1124: if (yyResult.hasValue()) {
1125: final GNode v$g$2 = (GNode) yyResult.semanticValue();
1126:
1127: yyResult = pDeclarators(yyResult.index);
1128: yyError = yyResult.select(yyError);
1129: if (yyResult.hasValue()) {
1130: final GNode v$g$3 = (GNode) yyResult
1131: .semanticValue();
1132:
1133: yyBase = yyResult.index;
1134: yyResult = pSymbol(yyBase);
1135: yyError = yyResult.select(yyError);
1136: if (yyResult.hasValue(";")) {
1137:
1138: yyValue = GNode.create("FieldDeclaration",
1139: v$g$1, v$g$2, v$g$3);
1140:
1141: setLocation(yyValue, yyStart);
1142: return yyResult.createValue(yyValue, yyError);
1143: } else {
1144: yyError = yyError.select("\";\" expected",
1145: yyBase);
1146: }
1147: }
1148: }
1149:
1150: // Nested alternative 2.
1151:
1152: yyResult = pResultType(yyChoice1);
1153: yyError = yyResult.select(yyError);
1154: if (yyResult.hasValue()) {
1155: final GNode v$g$2 = (GNode) yyResult.semanticValue();
1156:
1157: yyResult = pIdentifier(yyResult.index);
1158: yyError = yyResult.select(yyError);
1159: if (yyResult.hasValue()) {
1160: final String v$g$3 = (String) yyResult
1161: .semanticValue();
1162:
1163: yyResult = pFormalParameters(yyResult.index);
1164: yyError = yyResult.select(yyError);
1165: if (yyResult.hasValue()) {
1166: final GNode v$g$4 = (GNode) yyResult
1167: .semanticValue();
1168:
1169: yyOption1 = yyResult.index;
1170: yyOpValue1 = null;
1171:
1172: yyResult = pDimensions(yyOption1);
1173: yyError = yyResult.select(yyError);
1174: if (yyResult.hasValue()) {
1175: final GNode v$el$1 = (GNode) yyResult
1176: .semanticValue();
1177:
1178: yyOption1 = yyResult.index;
1179: yyOpValue1 = v$el$1;
1180: }
1181: { // Start scope for v$g$5.
1182: final GNode v$g$5 = (GNode) yyOpValue1;
1183:
1184: yyOpValue1 = null;
1185:
1186: yyResult = pThrowsClause(yyOption1);
1187: yyError = yyResult.select(yyError);
1188: if (yyResult.hasValue()) {
1189: final GNode v$el$2 = (GNode) yyResult
1190: .semanticValue();
1191:
1192: yyOption1 = yyResult.index;
1193: yyOpValue1 = v$el$2;
1194: }
1195: { // Start scope for v$g$6.
1196: final GNode v$g$6 = (GNode) yyOpValue1;
1197:
1198: final int yyChoice2 = yyOption1;
1199:
1200: // Nested alternative 1.
1201:
1202: yyResult = pBlock(yyChoice2);
1203: yyError = yyResult.select(yyError);
1204: if (yyResult.hasValue()) {
1205: final GNode v$g$7 = (GNode) yyResult
1206: .semanticValue();
1207:
1208: yyValue = GNode.create(
1209: "MethodDeclaration", v$g$1,
1210: v$g$2, v$g$3, v$g$4, v$g$5,
1211: v$g$6, v$g$7);
1212:
1213: setLocation(yyValue, yyStart);
1214: return yyResult.createValue(
1215: yyValue, yyError);
1216: }
1217:
1218: // Nested alternative 2.
1219:
1220: yyResult = pNull(yyChoice2);
1221: yyError = yyResult.select(yyError);
1222: if (yyResult.hasValue()) {
1223: final Object v$g$8 = yyResult
1224: .semanticValue();
1225:
1226: yyBase = yyResult.index;
1227: yyResult = pSymbol(yyBase);
1228: yyError = yyResult.select(yyError);
1229: if (yyResult.hasValue(";")) {
1230:
1231: yyValue = GNode.create(
1232: "MethodDeclaration",
1233: v$g$1, v$g$2, v$g$3,
1234: v$g$4, v$g$5, v$g$6,
1235: v$g$8);
1236:
1237: setLocation(yyValue, yyStart);
1238: return yyResult.createValue(
1239: yyValue, yyError);
1240: } else {
1241: yyError = yyError.select(
1242: "\";\" expected",
1243: yyBase);
1244: }
1245: }
1246: } // End scope for v$g$6.
1247: } // End scope for v$g$5.
1248: }
1249: }
1250: }
1251:
1252: // Nested alternative 3.
1253:
1254: yyResult = pIdentifier(yyChoice1);
1255: yyError = yyResult.select(yyError);
1256: if (yyResult.hasValue()) {
1257: final String v$g$2 = (String) yyResult.semanticValue();
1258:
1259: yyResult = pFormalParameters(yyResult.index);
1260: yyError = yyResult.select(yyError);
1261: if (yyResult.hasValue()) {
1262: final GNode v$g$3 = (GNode) yyResult
1263: .semanticValue();
1264:
1265: yyOption1 = yyResult.index;
1266: yyOpValue1 = null;
1267:
1268: yyResult = pThrowsClause(yyOption1);
1269: yyError = yyResult.select(yyError);
1270: if (yyResult.hasValue()) {
1271: final GNode v$el$1 = (GNode) yyResult
1272: .semanticValue();
1273:
1274: yyOption1 = yyResult.index;
1275: yyOpValue1 = v$el$1;
1276: }
1277: { // Start scope for v$g$4.
1278: final GNode v$g$4 = (GNode) yyOpValue1;
1279:
1280: yyResult = pBlock(yyOption1);
1281: yyError = yyResult.select(yyError);
1282: if (yyResult.hasValue()) {
1283: final GNode v$g$5 = (GNode) yyResult
1284: .semanticValue();
1285:
1286: yyValue = GNode.create(
1287: "ConstructorDeclaration", v$g$1,
1288: v$g$2, v$g$3, v$g$4, v$g$5);
1289:
1290: setLocation(yyValue, yyStart);
1291: return yyResult.createValue(yyValue,
1292: yyError);
1293: }
1294: } // End scope for v$g$4.
1295: }
1296: }
1297:
1298: // Nested alternative 4.
1299:
1300: yyBase = yyChoice1;
1301: yyResult = pWord(yyBase);
1302: yyError = yyResult.select(yyError);
1303: if (yyResult.hasValue("class")) {
1304:
1305: yyResult = pIdentifier(yyResult.index);
1306: yyError = yyResult.select(yyError);
1307: if (yyResult.hasValue()) {
1308: final String v$g$2 = (String) yyResult
1309: .semanticValue();
1310:
1311: yyOption1 = yyResult.index;
1312: yyOpValue1 = null;
1313:
1314: yyResult = pExtension(yyOption1);
1315: yyError = yyResult.select(yyError);
1316: if (yyResult.hasValue()) {
1317: final GNode v$el$1 = (GNode) yyResult
1318: .semanticValue();
1319:
1320: yyOption1 = yyResult.index;
1321: yyOpValue1 = v$el$1;
1322: }
1323: { // Start scope for v$g$3.
1324: final GNode v$g$3 = (GNode) yyOpValue1;
1325:
1326: yyOpValue1 = null;
1327:
1328: yyResult = pImplementation(yyOption1);
1329: yyError = yyResult.select(yyError);
1330: if (yyResult.hasValue()) {
1331: final GNode v$el$2 = (GNode) yyResult
1332: .semanticValue();
1333:
1334: yyOption1 = yyResult.index;
1335: yyOpValue1 = v$el$2;
1336: }
1337: { // Start scope for v$g$4.
1338: final GNode v$g$4 = (GNode) yyOpValue1;
1339:
1340: yyResult = pClassBody(yyOption1);
1341: yyError = yyResult.select(yyError);
1342: if (yyResult.hasValue()) {
1343: final GNode v$g$5 = (GNode) yyResult
1344: .semanticValue();
1345:
1346: yyValue = GNode.create(
1347: "ClassDeclaration", v$g$1,
1348: v$g$2, v$g$3, v$g$4, v$g$5);
1349:
1350: setLocation(yyValue, yyStart);
1351: return yyResult.createValue(yyValue,
1352: yyError);
1353: }
1354: } // End scope for v$g$4.
1355: } // End scope for v$g$3.
1356: }
1357: } else {
1358: yyError = yyError.select("\"class\" expected", yyBase);
1359: }
1360:
1361: // Nested alternative 5.
1362:
1363: yyBase = yyChoice1;
1364: yyResult = pWord(yyBase);
1365: yyError = yyResult.select(yyError);
1366: if (yyResult.hasValue("interface")) {
1367:
1368: yyResult = pIdentifier(yyResult.index);
1369: yyError = yyResult.select(yyError);
1370: if (yyResult.hasValue()) {
1371: final String v$g$2 = (String) yyResult
1372: .semanticValue();
1373:
1374: yyOption1 = yyResult.index;
1375: yyOpValue1 = null;
1376:
1377: yyResult = pExtension(yyOption1);
1378: yyError = yyResult.select(yyError);
1379: if (yyResult.hasValue()) {
1380: final GNode v$el$1 = (GNode) yyResult
1381: .semanticValue();
1382:
1383: yyOption1 = yyResult.index;
1384: yyOpValue1 = v$el$1;
1385: }
1386: { // Start scope for v$g$3.
1387: final GNode v$g$3 = (GNode) yyOpValue1;
1388:
1389: yyResult = pClassBody(yyOption1);
1390: yyError = yyResult.select(yyError);
1391: if (yyResult.hasValue()) {
1392: final GNode v$g$4 = (GNode) yyResult
1393: .semanticValue();
1394:
1395: yyValue = GNode.create(
1396: "InterfaceDeclaration", v$g$1,
1397: v$g$2, v$g$3, v$g$4);
1398:
1399: setLocation(yyValue, yyStart);
1400: return yyResult.createValue(yyValue,
1401: yyError);
1402: }
1403: } // End scope for v$g$3.
1404: }
1405: } else {
1406: yyError = yyError.select("\"interface\" expected",
1407: yyBase);
1408: }
1409: }
1410:
1411: // Alternative 2.
1412:
1413: yyOption1 = yyStart;
1414: yyOpValue1 = null;
1415:
1416: yyBase = yyOption1;
1417: yyResult = pWord(yyBase);
1418: yyError = yyResult.select(yyError);
1419: if (yyResult.hasValue("static")) {
1420: final String v$el$1 = "static";
1421:
1422: yyOption1 = yyResult.index;
1423: yyOpValue1 = v$el$1;
1424: } else {
1425: yyError = yyError.select("\"static\" expected", yyBase);
1426: }
1427: { // Start scope for v$g$1.
1428: final String v$g$1 = (String) yyOpValue1;
1429:
1430: yyResult = pBlock(yyOption1);
1431: yyError = yyResult.select(yyError);
1432: if (yyResult.hasValue()) {
1433: final GNode v$g$2 = (GNode) yyResult.semanticValue();
1434:
1435: yyValue = GNode
1436: .create("BlockDeclaration", v$g$1, v$g$2);
1437:
1438: setLocation(yyValue, yyStart);
1439: return yyResult.createValue(yyValue, yyError);
1440: }
1441: } // End scope for v$g$1.
1442:
1443: // Done.
1444: return yyError;
1445: }
1446:
1447: // =========================================================================
1448:
1449: /**
1450: * Parse nonterminal
1451: * xtc.xform.samples.javaproperty.JavaProperty.ThrowsClause.
1452: *
1453: * @param yyStart The index.
1454: * @return The result.
1455: * @throws IOException Signals an I/O error.
1456: */
1457: private Result pThrowsClause(final int yyStart) throws IOException {
1458: Result yyResult;
1459: int yyBase;
1460: int yyRepetition1;
1461: Pair yyRepValue1;
1462: GNode yyValue;
1463: ParseError yyError = ParseError.DUMMY;
1464:
1465: // Alternative 1.
1466:
1467: yyResult = pWord(yyStart);
1468: yyError = yyResult.select(yyError);
1469: if (yyResult.hasValue("throws")) {
1470:
1471: yyResult = pQualifiedIdentifier(yyResult.index);
1472: yyError = yyResult.select(yyError);
1473: if (yyResult.hasValue()) {
1474: final GNode v$g$1 = (GNode) yyResult.semanticValue();
1475:
1476: yyRepetition1 = yyResult.index;
1477: yyRepValue1 = Pair.EMPTY;
1478: while (true) {
1479:
1480: yyBase = yyRepetition1;
1481: yyResult = pSymbol(yyBase);
1482: yyError = yyResult.select(yyError);
1483: if (yyResult.hasValue(",")) {
1484:
1485: yyResult = pQualifiedIdentifier(yyResult.index);
1486: yyError = yyResult.select(yyError);
1487: if (yyResult.hasValue()) {
1488: final GNode v$el$1 = (GNode) yyResult
1489: .semanticValue();
1490:
1491: yyRepetition1 = yyResult.index;
1492: yyRepValue1 = new Pair(v$el$1, yyRepValue1);
1493: continue;
1494: }
1495: } else {
1496: yyError = yyError.select("\",\" expected",
1497: yyBase);
1498: }
1499: break;
1500: }
1501: { // Start scope for v$g$2.
1502: final Pair v$g$2 = yyRepValue1.reverse();
1503:
1504: yyValue = GNode.create("ThrowsClause", v$g$1,
1505: (Pair) v$g$2);
1506:
1507: setLocation(yyValue, yyStart);
1508: return new SemanticValue(yyValue, yyRepetition1,
1509: yyError);
1510: } // End scope for v$g$2.
1511: }
1512: }
1513:
1514: // Done.
1515: yyError = yyError.select("throws clause expected", yyStart);
1516: return yyError;
1517: }
1518:
1519: // =========================================================================
1520:
1521: /**
1522: * Parse nonterminal xtc.xform.samples.javaproperty.JavaProperty.Extension.
1523: *
1524: * @param yyStart The index.
1525: * @return The result.
1526: * @throws IOException Signals an I/O error.
1527: */
1528: private Result pExtension(final int yyStart) throws IOException {
1529: Result yyResult;
1530: int yyBase;
1531: int yyRepetition1;
1532: Pair yyRepValue1;
1533: GNode yyValue;
1534: ParseError yyError = ParseError.DUMMY;
1535:
1536: // Alternative 1.
1537:
1538: yyResult = pWord(yyStart);
1539: yyError = yyResult.select(yyError);
1540: if (yyResult.hasValue("extends")) {
1541:
1542: yyResult = pType(yyResult.index);
1543: yyError = yyResult.select(yyError);
1544: if (yyResult.hasValue()) {
1545: final GNode v$g$1 = (GNode) yyResult.semanticValue();
1546:
1547: yyRepetition1 = yyResult.index;
1548: yyRepValue1 = Pair.EMPTY;
1549: while (true) {
1550:
1551: yyBase = yyRepetition1;
1552: yyResult = pSymbol(yyBase);
1553: yyError = yyResult.select(yyError);
1554: if (yyResult.hasValue(",")) {
1555:
1556: yyResult = pType(yyResult.index);
1557: yyError = yyResult.select(yyError);
1558: if (yyResult.hasValue()) {
1559: final GNode v$el$1 = (GNode) yyResult
1560: .semanticValue();
1561:
1562: yyRepetition1 = yyResult.index;
1563: yyRepValue1 = new Pair(v$el$1, yyRepValue1);
1564: continue;
1565: }
1566: } else {
1567: yyError = yyError.select("\",\" expected",
1568: yyBase);
1569: }
1570: break;
1571: }
1572: { // Start scope for v$g$2.
1573: final Pair v$g$2 = yyRepValue1.reverse();
1574:
1575: yyValue = GNode.create("Extension", v$g$1,
1576: (Pair) v$g$2);
1577:
1578: setLocation(yyValue, yyStart);
1579: return new SemanticValue(yyValue, yyRepetition1,
1580: yyError);
1581: } // End scope for v$g$2.
1582: }
1583: }
1584:
1585: // Done.
1586: yyError = yyError.select("extension expected", yyStart);
1587: return yyError;
1588: }
1589:
1590: // =========================================================================
1591:
1592: /**
1593: * Parse nonterminal
1594: * xtc.xform.samples.javaproperty.JavaProperty.Implementation.
1595: *
1596: * @param yyStart The index.
1597: * @return The result.
1598: * @throws IOException Signals an I/O error.
1599: */
1600: private Result pImplementation(final int yyStart)
1601: throws IOException {
1602: Result yyResult;
1603: int yyBase;
1604: int yyRepetition1;
1605: Pair yyRepValue1;
1606: GNode yyValue;
1607: ParseError yyError = ParseError.DUMMY;
1608:
1609: // Alternative 1.
1610:
1611: yyResult = pWord(yyStart);
1612: yyError = yyResult.select(yyError);
1613: if (yyResult.hasValue("implements")) {
1614:
1615: yyResult = pType(yyResult.index);
1616: yyError = yyResult.select(yyError);
1617: if (yyResult.hasValue()) {
1618: final GNode v$g$1 = (GNode) yyResult.semanticValue();
1619:
1620: yyRepetition1 = yyResult.index;
1621: yyRepValue1 = Pair.EMPTY;
1622: while (true) {
1623:
1624: yyBase = yyRepetition1;
1625: yyResult = pSymbol(yyBase);
1626: yyError = yyResult.select(yyError);
1627: if (yyResult.hasValue(",")) {
1628:
1629: yyResult = pType(yyResult.index);
1630: yyError = yyResult.select(yyError);
1631: if (yyResult.hasValue()) {
1632: final GNode v$el$1 = (GNode) yyResult
1633: .semanticValue();
1634:
1635: yyRepetition1 = yyResult.index;
1636: yyRepValue1 = new Pair(v$el$1, yyRepValue1);
1637: continue;
1638: }
1639: } else {
1640: yyError = yyError.select("\",\" expected",
1641: yyBase);
1642: }
1643: break;
1644: }
1645: { // Start scope for v$g$2.
1646: final Pair v$g$2 = yyRepValue1.reverse();
1647:
1648: yyValue = GNode.create("Implementation", v$g$1,
1649: (Pair) v$g$2);
1650:
1651: setLocation(yyValue, yyStart);
1652: return new SemanticValue(yyValue, yyRepetition1,
1653: yyError);
1654: } // End scope for v$g$2.
1655: }
1656: }
1657:
1658: // Done.
1659: yyError = yyError.select("implementation expected", yyStart);
1660: return yyError;
1661: }
1662:
1663: // =========================================================================
1664:
1665: /**
1666: * Parse nonterminal xtc.xform.samples.javaproperty.JavaProperty.Block.
1667: *
1668: * @param yyStart The index.
1669: * @return The result.
1670: * @throws IOException Signals an I/O error.
1671: */
1672: private Result pBlock(final int yyStart) throws IOException {
1673: JavaPropertyParserColumn yyColumn = (JavaPropertyParserColumn) column(yyStart);
1674: if (null == yyColumn.chunk1)
1675: yyColumn.chunk1 = new Chunk1();
1676: if (null == yyColumn.chunk1.fBlock)
1677: yyColumn.chunk1.fBlock = pBlock$1(yyStart);
1678: return yyColumn.chunk1.fBlock;
1679: }
1680:
1681: /** Actually parse xtc.xform.samples.javaproperty.JavaProperty.Block. */
1682: private Result pBlock$1(final int yyStart) throws IOException {
1683: Result yyResult;
1684: int yyBase;
1685: GNode yyValue;
1686: ParseError yyError = ParseError.DUMMY;
1687:
1688: // Alternative <Block>.
1689:
1690: yyResult = pSymbol(yyStart);
1691: yyError = yyResult.select(yyError);
1692: if (yyResult.hasValue("{")) {
1693:
1694: yyResult = pBlock$$Star1(yyResult.index);
1695: yyError = yyResult.select(yyError);
1696: if (yyResult.hasValue()) {
1697: final Pair v$g$1 = (Pair) yyResult.semanticValue();
1698:
1699: yyBase = yyResult.index;
1700: yyResult = pSymbol(yyBase);
1701: yyError = yyResult.select(yyError);
1702: if (yyResult.hasValue("}")) {
1703:
1704: yyValue = GNode.create("Block", (Pair) v$g$1);
1705:
1706: setLocation(yyValue, yyStart);
1707: return yyResult.createValue(yyValue, yyError);
1708: } else {
1709: yyError = yyError.select("\"}\" expected", yyBase);
1710: }
1711: }
1712: }
1713:
1714: // Done.
1715: yyError = yyError.select("block expected", yyStart);
1716: return yyError;
1717: }
1718:
1719: // =========================================================================
1720:
1721: /**
1722: * Parse synthetic nonterminal
1723: * xtc.xform.samples.javaproperty.JavaProperty.Block$$Star1.
1724: *
1725: * @param yyStart The index.
1726: * @return The result.
1727: * @throws IOException Signals an I/O error.
1728: */
1729: private Result pBlock$$Star1(final int yyStart) throws IOException {
1730: JavaPropertyParserColumn yyColumn = (JavaPropertyParserColumn) column(yyStart);
1731: if (null == yyColumn.chunk1)
1732: yyColumn.chunk1 = new Chunk1();
1733: if (null == yyColumn.chunk1.fBlock$$Star1)
1734: yyColumn.chunk1.fBlock$$Star1 = pBlock$$Star1$1(yyStart);
1735: return yyColumn.chunk1.fBlock$$Star1;
1736: }
1737:
1738: /** Actually parse xtc.xform.samples.javaproperty.JavaProperty.Block$$Star1. */
1739: private Result pBlock$$Star1$1(final int yyStart)
1740: throws IOException {
1741: Result yyResult;
1742: Pair yyValue;
1743: ParseError yyError = ParseError.DUMMY;
1744:
1745: // Alternative 1.
1746:
1747: yyResult = pDeclarationOrStatement(yyStart);
1748: yyError = yyResult.select(yyError);
1749: if (yyResult.hasValue()) {
1750: final GNode v$1 = (GNode) yyResult.semanticValue();
1751:
1752: yyResult = pBlock$$Star1(yyResult.index);
1753: yyError = yyResult.select(yyError);
1754: if (yyResult.hasValue()) {
1755: final Pair v$2 = (Pair) yyResult.semanticValue();
1756:
1757: yyValue = new Pair(v$1, v$2);
1758:
1759: return yyResult.createValue(yyValue, yyError);
1760: }
1761: }
1762:
1763: // Alternative 2.
1764:
1765: yyValue = Pair.EMPTY;
1766:
1767: return new SemanticValue(yyValue, yyStart, yyError);
1768: }
1769:
1770: // =========================================================================
1771:
1772: /**
1773: * Parse nonterminal
1774: * xtc.xform.samples.javaproperty.JavaProperty.DeclarationOrStatement.
1775: *
1776: * @param yyStart The index.
1777: * @return The result.
1778: * @throws IOException Signals an I/O error.
1779: */
1780: private Result pDeclarationOrStatement(final int yyStart)
1781: throws IOException {
1782:
1783: Result yyResult;
1784: GNode yyValue;
1785: ParseError yyError = ParseError.DUMMY;
1786:
1787: // Alternative <Declaration>.
1788:
1789: yyResult = pDeclaration(yyStart);
1790: yyError = yyResult.select(yyError);
1791: if (yyResult.hasValue()) {
1792: yyValue = (GNode) yyResult.semanticValue();
1793:
1794: setLocation(yyValue, yyStart);
1795: return yyResult.createValue(yyValue, yyError);
1796: }
1797:
1798: // Alternative <Statement>.
1799:
1800: yyResult = pStatement(yyStart);
1801: yyError = yyResult.select(yyError);
1802: if (yyResult.hasValue()) {
1803: yyValue = (GNode) yyResult.semanticValue();
1804:
1805: setLocation(yyValue, yyStart);
1806: return yyResult.createValue(yyValue, yyError);
1807: }
1808:
1809: // Done.
1810: return yyError;
1811: }
1812:
1813: // =========================================================================
1814:
1815: /**
1816: * Parse nonterminal xtc.xform.samples.javaproperty.JavaProperty.Statement.
1817: *
1818: * @param yyStart The index.
1819: * @return The result.
1820: * @throws IOException Signals an I/O error.
1821: */
1822: private Result pStatement(final int yyStart) throws IOException {
1823: Result yyResult;
1824: int yyBase;
1825: int yyRepetition1;
1826: boolean yyRepeated1;
1827: Pair yyRepValue1;
1828: int yyOption1;
1829: Object yyOpValue1;
1830: GNode yyValue;
1831: ParseError yyError = ParseError.DUMMY;
1832:
1833: // Alternative <Block>.
1834:
1835: yyResult = pBlock(yyStart);
1836: yyError = yyResult.select(yyError);
1837: if (yyResult.hasValue()) {
1838: yyValue = (GNode) yyResult.semanticValue();
1839:
1840: setLocation(yyValue, yyStart);
1841: return yyResult.createValue(yyValue, yyError);
1842: }
1843:
1844: // Alternative 2.
1845:
1846: yyResult = pWord(yyStart);
1847: yyError = yyResult.select(yyError);
1848: if (yyResult.hasValue("if")) {
1849:
1850: yyResult = pParExpression(yyResult.index);
1851: yyError = yyResult.select(yyError);
1852: if (yyResult.hasValue()) {
1853: final GNode v$g$1 = (GNode) yyResult.semanticValue();
1854:
1855: yyResult = pStatement(yyResult.index);
1856: yyError = yyResult.select(yyError);
1857: if (yyResult.hasValue()) {
1858: final GNode v$g$2 = (GNode) yyResult
1859: .semanticValue();
1860:
1861: final int yyChoice1 = yyResult.index;
1862:
1863: // Nested alternative 1.
1864:
1865: yyBase = yyChoice1;
1866: yyResult = pWord(yyBase);
1867: yyError = yyResult.select(yyError);
1868: if (yyResult.hasValue("else")) {
1869:
1870: yyResult = pStatement(yyResult.index);
1871: yyError = yyResult.select(yyError);
1872: if (yyResult.hasValue()) {
1873: final GNode v$g$3 = (GNode) yyResult
1874: .semanticValue();
1875:
1876: yyValue = GNode.create("IfElseStatement",
1877: v$g$1, v$g$2, v$g$3);
1878:
1879: setLocation(yyValue, yyStart);
1880: return yyResult.createValue(yyValue,
1881: yyError);
1882: }
1883: } else {
1884: yyError = yyError.select("\"else\" expected",
1885: yyBase);
1886: }
1887:
1888: // Nested alternative 2.
1889:
1890: yyValue = GNode.create("IfStatement", v$g$1, v$g$2);
1891:
1892: setLocation(yyValue, yyStart);
1893: return new SemanticValue(yyValue, yyChoice1,
1894: yyError);
1895: }
1896: }
1897: }
1898:
1899: // Alternative 3.
1900:
1901: yyResult = pWord(yyStart);
1902: yyError = yyResult.select(yyError);
1903: if (yyResult.hasValue("for")) {
1904:
1905: yyBase = yyResult.index;
1906: yyResult = pSymbol(yyBase);
1907: yyError = yyResult.select(yyError);
1908: if (yyResult.hasValue("(")) {
1909:
1910: yyResult = pForInit(yyResult.index);
1911: yyError = yyResult.select(yyError);
1912: if (yyResult.hasValue()) {
1913: final GNode v$g$1 = (GNode) yyResult
1914: .semanticValue();
1915:
1916: yyOption1 = yyResult.index;
1917: yyOpValue1 = null;
1918:
1919: yyResult = pExpression(yyOption1);
1920: yyError = yyResult.select(yyError);
1921: if (yyResult.hasValue()) {
1922: final GNode v$el$1 = (GNode) yyResult
1923: .semanticValue();
1924:
1925: yyOption1 = yyResult.index;
1926: yyOpValue1 = v$el$1;
1927: }
1928: { // Start scope for v$g$2.
1929: final GNode v$g$2 = (GNode) yyOpValue1;
1930:
1931: yyBase = yyOption1;
1932: yyResult = pSymbol(yyBase);
1933: yyError = yyResult.select(yyError);
1934: if (yyResult.hasValue(";")) {
1935:
1936: yyOption1 = yyResult.index;
1937: yyOpValue1 = null;
1938:
1939: yyResult = pExpressionList(yyOption1);
1940: yyError = yyResult.select(yyError);
1941: if (yyResult.hasValue()) {
1942: final GNode v$el$2 = (GNode) yyResult
1943: .semanticValue();
1944:
1945: yyOption1 = yyResult.index;
1946: yyOpValue1 = v$el$2;
1947: }
1948: { // Start scope for v$g$3.
1949: final GNode v$g$3 = (GNode) yyOpValue1;
1950:
1951: yyBase = yyOption1;
1952: yyResult = pSymbol(yyBase);
1953: yyError = yyResult.select(yyError);
1954: if (yyResult.hasValue(")")) {
1955:
1956: yyResult = pStatement(yyResult.index);
1957: yyError = yyResult.select(yyError);
1958: if (yyResult.hasValue()) {
1959: final GNode v$g$4 = (GNode) yyResult
1960: .semanticValue();
1961:
1962: yyValue = GNode.create(
1963: "ForStatement", v$g$1,
1964: v$g$2, v$g$3, v$g$4);
1965:
1966: setLocation(yyValue, yyStart);
1967: return yyResult.createValue(
1968: yyValue, yyError);
1969: }
1970: } else {
1971: yyError = yyError.select(
1972: "\")\" expected", yyBase);
1973: }
1974: } // End scope for v$g$3.
1975: } else {
1976: yyError = yyError.select("\";\" expected",
1977: yyBase);
1978: }
1979: } // End scope for v$g$2.
1980: }
1981: } else {
1982: yyError = yyError.select("\"(\" expected", yyBase);
1983: }
1984: }
1985:
1986: // Alternative 4.
1987:
1988: yyResult = pWord(yyStart);
1989: yyError = yyResult.select(yyError);
1990: if (yyResult.hasValue("while")) {
1991:
1992: yyResult = pParExpression(yyResult.index);
1993: yyError = yyResult.select(yyError);
1994: if (yyResult.hasValue()) {
1995: final GNode v$g$1 = (GNode) yyResult.semanticValue();
1996:
1997: yyResult = pStatement(yyResult.index);
1998: yyError = yyResult.select(yyError);
1999: if (yyResult.hasValue()) {
2000: final GNode v$g$2 = (GNode) yyResult
2001: .semanticValue();
2002:
2003: yyValue = GNode.create("WhileStatement", v$g$1,
2004: v$g$2);
2005:
2006: setLocation(yyValue, yyStart);
2007: return yyResult.createValue(yyValue, yyError);
2008: }
2009: }
2010: }
2011:
2012: // Alternative 5.
2013:
2014: yyResult = pWord(yyStart);
2015: yyError = yyResult.select(yyError);
2016: if (yyResult.hasValue("do")) {
2017:
2018: yyResult = pStatement(yyResult.index);
2019: yyError = yyResult.select(yyError);
2020: if (yyResult.hasValue()) {
2021: final GNode v$g$1 = (GNode) yyResult.semanticValue();
2022:
2023: yyBase = yyResult.index;
2024: yyResult = pWord(yyBase);
2025: yyError = yyResult.select(yyError);
2026: if (yyResult.hasValue("while")) {
2027:
2028: yyResult = pParExpression(yyResult.index);
2029: yyError = yyResult.select(yyError);
2030: if (yyResult.hasValue()) {
2031: final GNode v$g$2 = (GNode) yyResult
2032: .semanticValue();
2033:
2034: yyBase = yyResult.index;
2035: yyResult = pSymbol(yyBase);
2036: yyError = yyResult.select(yyError);
2037: if (yyResult.hasValue(";")) {
2038:
2039: yyValue = GNode.create("DoWhileStatement",
2040: v$g$1, v$g$2);
2041:
2042: setLocation(yyValue, yyStart);
2043: return yyResult.createValue(yyValue,
2044: yyError);
2045: } else {
2046: yyError = yyError.select("\";\" expected",
2047: yyBase);
2048: }
2049: }
2050: } else {
2051: yyError = yyError.select("\"while\" expected",
2052: yyBase);
2053: }
2054: }
2055: }
2056:
2057: // Alternative 6.
2058:
2059: yyResult = pWord(yyStart);
2060: yyError = yyResult.select(yyError);
2061: if (yyResult.hasValue("try")) {
2062:
2063: yyResult = pBlock(yyResult.index);
2064: yyError = yyResult.select(yyError);
2065: if (yyResult.hasValue()) {
2066: final GNode v$g$1 = (GNode) yyResult.semanticValue();
2067:
2068: final int yyChoice1 = yyResult.index;
2069:
2070: // Nested alternative 1.
2071:
2072: yyRepetition1 = yyChoice1;
2073: yyRepValue1 = Pair.EMPTY;
2074: while (true) {
2075:
2076: yyResult = pCatchClause(yyRepetition1);
2077: yyError = yyResult.select(yyError);
2078: if (yyResult.hasValue()) {
2079: final GNode v$el$1 = (GNode) yyResult
2080: .semanticValue();
2081:
2082: yyRepetition1 = yyResult.index;
2083: yyRepValue1 = new Pair(v$el$1, yyRepValue1);
2084: continue;
2085: }
2086: break;
2087: }
2088: { // Start scope for v$g$2.
2089: final Pair v$g$2 = yyRepValue1.reverse();
2090:
2091: yyBase = yyRepetition1;
2092: yyResult = pWord(yyBase);
2093: yyError = yyResult.select(yyError);
2094: if (yyResult.hasValue("finally")) {
2095:
2096: yyResult = pBlock(yyResult.index);
2097: yyError = yyResult.select(yyError);
2098: if (yyResult.hasValue()) {
2099: final GNode v$g$3 = (GNode) yyResult
2100: .semanticValue();
2101:
2102: yyValue = GNode.create(
2103: "TryCatchFinallyStatement",
2104: ((Pair) v$g$2).size() + 2).add(
2105: v$g$1).addAll((Pair) v$g$2).add(
2106: v$g$3);
2107:
2108: setLocation(yyValue, yyStart);
2109: return yyResult.createValue(yyValue,
2110: yyError);
2111: }
2112: } else {
2113: yyError = yyError.select(
2114: "\"finally\" expected", yyBase);
2115: }
2116: } // End scope for v$g$2.
2117:
2118: // Nested alternative 2.
2119:
2120: yyRepetition1 = yyChoice1;
2121: yyRepeated1 = false;
2122: yyRepValue1 = Pair.EMPTY;
2123: while (true) {
2124:
2125: yyResult = pCatchClause(yyRepetition1);
2126: yyError = yyResult.select(yyError);
2127: if (yyResult.hasValue()) {
2128: final GNode v$el$1 = (GNode) yyResult
2129: .semanticValue();
2130:
2131: yyRepetition1 = yyResult.index;
2132: yyRepeated1 = true;
2133: yyRepValue1 = new Pair(v$el$1, yyRepValue1);
2134: continue;
2135: }
2136: break;
2137: }
2138:
2139: if (yyRepeated1) {
2140: final Pair v$g$2 = yyRepValue1.reverse();
2141:
2142: yyValue = GNode.create("TryCatchStatement", v$g$1,
2143: (Pair) v$g$2);
2144:
2145: setLocation(yyValue, yyStart);
2146: return new SemanticValue(yyValue, yyRepetition1,
2147: yyError);
2148: }
2149: }
2150: }
2151:
2152: // Alternative 7.
2153:
2154: yyResult = pWord(yyStart);
2155: yyError = yyResult.select(yyError);
2156: if (yyResult.hasValue("switch")) {
2157:
2158: yyResult = pParExpression(yyResult.index);
2159: yyError = yyResult.select(yyError);
2160: if (yyResult.hasValue()) {
2161: final GNode v$g$1 = (GNode) yyResult.semanticValue();
2162:
2163: yyBase = yyResult.index;
2164: yyResult = pSymbol(yyBase);
2165: yyError = yyResult.select(yyError);
2166: if (yyResult.hasValue("{")) {
2167:
2168: yyRepetition1 = yyResult.index;
2169: yyRepValue1 = Pair.EMPTY;
2170: while (true) {
2171:
2172: yyResult = pSwitchClause(yyRepetition1);
2173: yyError = yyResult.select(yyError);
2174: if (yyResult.hasValue()) {
2175: final GNode v$el$1 = (GNode) yyResult
2176: .semanticValue();
2177:
2178: yyRepetition1 = yyResult.index;
2179: yyRepValue1 = new Pair(v$el$1, yyRepValue1);
2180: continue;
2181: }
2182: break;
2183: }
2184: { // Start scope for v$g$2.
2185: final Pair v$g$2 = yyRepValue1.reverse();
2186:
2187: yyBase = yyRepetition1;
2188: yyResult = pSymbol(yyBase);
2189: yyError = yyResult.select(yyError);
2190: if (yyResult.hasValue("}")) {
2191:
2192: yyValue = GNode.create("SwitchStatement",
2193: v$g$1, (Pair) v$g$2);
2194:
2195: setLocation(yyValue, yyStart);
2196: return yyResult.createValue(yyValue,
2197: yyError);
2198: } else {
2199: yyError = yyError.select("\"}\" expected",
2200: yyBase);
2201: }
2202: } // End scope for v$g$2.
2203: } else {
2204: yyError = yyError.select("\"{\" expected", yyBase);
2205: }
2206: }
2207: }
2208:
2209: // Alternative 8.
2210:
2211: yyResult = pWord(yyStart);
2212: yyError = yyResult.select(yyError);
2213: if (yyResult.hasValue("synchronized")) {
2214:
2215: yyResult = pParExpression(yyResult.index);
2216: yyError = yyResult.select(yyError);
2217: if (yyResult.hasValue()) {
2218: final GNode v$g$1 = (GNode) yyResult.semanticValue();
2219:
2220: yyResult = pBlock(yyResult.index);
2221: yyError = yyResult.select(yyError);
2222: if (yyResult.hasValue()) {
2223: final GNode v$g$2 = (GNode) yyResult
2224: .semanticValue();
2225:
2226: yyValue = GNode.create("SynchronizedStatement",
2227: v$g$1, v$g$2);
2228:
2229: setLocation(yyValue, yyStart);
2230: return yyResult.createValue(yyValue, yyError);
2231: }
2232: }
2233: }
2234:
2235: // Alternative 9.
2236:
2237: yyResult = pWord(yyStart);
2238: yyError = yyResult.select(yyError);
2239: if (yyResult.hasValue("return")) {
2240:
2241: yyOption1 = yyResult.index;
2242: yyOpValue1 = null;
2243:
2244: yyResult = pExpression(yyOption1);
2245: yyError = yyResult.select(yyError);
2246: if (yyResult.hasValue()) {
2247: final GNode v$el$1 = (GNode) yyResult.semanticValue();
2248:
2249: yyOption1 = yyResult.index;
2250: yyOpValue1 = v$el$1;
2251: }
2252: { // Start scope for v$g$1.
2253: final GNode v$g$1 = (GNode) yyOpValue1;
2254:
2255: yyBase = yyOption1;
2256: yyResult = pSymbol(yyBase);
2257: yyError = yyResult.select(yyError);
2258: if (yyResult.hasValue(";")) {
2259:
2260: yyValue = GNode.create("ReturnStatement", v$g$1);
2261:
2262: setLocation(yyValue, yyStart);
2263: return yyResult.createValue(yyValue, yyError);
2264: } else {
2265: yyError = yyError.select("\";\" expected", yyBase);
2266: }
2267: } // End scope for v$g$1.
2268: }
2269:
2270: // Alternative 10.
2271:
2272: yyResult = pWord(yyStart);
2273: yyError = yyResult.select(yyError);
2274: if (yyResult.hasValue("throw")) {
2275:
2276: yyResult = pExpression(yyResult.index);
2277: yyError = yyResult.select(yyError);
2278: if (yyResult.hasValue()) {
2279: final GNode v$g$1 = (GNode) yyResult.semanticValue();
2280:
2281: yyBase = yyResult.index;
2282: yyResult = pSymbol(yyBase);
2283: yyError = yyResult.select(yyError);
2284: if (yyResult.hasValue(";")) {
2285:
2286: yyValue = GNode.create("ThrowStatement", v$g$1);
2287:
2288: setLocation(yyValue, yyStart);
2289: return yyResult.createValue(yyValue, yyError);
2290: } else {
2291: yyError = yyError.select("\";\" expected", yyBase);
2292: }
2293: }
2294: }
2295:
2296: // Alternative 11.
2297:
2298: yyResult = pWord(yyStart);
2299: yyError = yyResult.select(yyError);
2300: if (yyResult.hasValue("break")) {
2301:
2302: yyOption1 = yyResult.index;
2303: yyOpValue1 = null;
2304:
2305: yyResult = pIdentifier(yyOption1);
2306: yyError = yyResult.select(yyError);
2307: if (yyResult.hasValue()) {
2308: final String v$el$1 = (String) yyResult.semanticValue();
2309:
2310: yyOption1 = yyResult.index;
2311: yyOpValue1 = v$el$1;
2312: }
2313: { // Start scope for v$g$1.
2314: final String v$g$1 = (String) yyOpValue1;
2315:
2316: yyBase = yyOption1;
2317: yyResult = pSymbol(yyBase);
2318: yyError = yyResult.select(yyError);
2319: if (yyResult.hasValue(";")) {
2320:
2321: yyValue = GNode.create("BreakStatement", v$g$1);
2322:
2323: setLocation(yyValue, yyStart);
2324: return yyResult.createValue(yyValue, yyError);
2325: } else {
2326: yyError = yyError.select("\";\" expected", yyBase);
2327: }
2328: } // End scope for v$g$1.
2329: }
2330:
2331: // Alternative 12.
2332:
2333: yyResult = pWord(yyStart);
2334: yyError = yyResult.select(yyError);
2335: if (yyResult.hasValue("continue")) {
2336:
2337: yyOption1 = yyResult.index;
2338: yyOpValue1 = null;
2339:
2340: yyResult = pIdentifier(yyOption1);
2341: yyError = yyResult.select(yyError);
2342: if (yyResult.hasValue()) {
2343: final String v$el$1 = (String) yyResult.semanticValue();
2344:
2345: yyOption1 = yyResult.index;
2346: yyOpValue1 = v$el$1;
2347: }
2348: { // Start scope for v$g$1.
2349: final String v$g$1 = (String) yyOpValue1;
2350:
2351: yyBase = yyOption1;
2352: yyResult = pSymbol(yyBase);
2353: yyError = yyResult.select(yyError);
2354: if (yyResult.hasValue(";")) {
2355:
2356: yyValue = GNode.create("ContinueStatement", v$g$1);
2357:
2358: setLocation(yyValue, yyStart);
2359: return yyResult.createValue(yyValue, yyError);
2360: } else {
2361: yyError = yyError.select("\";\" expected", yyBase);
2362: }
2363: } // End scope for v$g$1.
2364: }
2365:
2366: // Alternative 13.
2367:
2368: yyResult = pIdentifier(yyStart);
2369: yyError = yyResult.select(yyError);
2370: if (yyResult.hasValue()) {
2371: final String v$g$1 = (String) yyResult.semanticValue();
2372:
2373: yyBase = yyResult.index;
2374: yyResult = pSymbol(yyBase);
2375: yyError = yyResult.select(yyError);
2376: if (yyResult.hasValue(":")) {
2377:
2378: yyResult = pStatement(yyResult.index);
2379: yyError = yyResult.select(yyError);
2380: if (yyResult.hasValue()) {
2381: final GNode v$g$2 = (GNode) yyResult
2382: .semanticValue();
2383:
2384: yyValue = GNode.create("LabeledStatement", v$g$1,
2385: v$g$2);
2386:
2387: setLocation(yyValue, yyStart);
2388: return yyResult.createValue(yyValue, yyError);
2389: }
2390: } else {
2391: yyError = yyError.select("\":\" expected", yyBase);
2392: }
2393: }
2394:
2395: // Alternative 14.
2396:
2397: yyResult = pExpression(yyStart);
2398: yyError = yyResult.select(yyError);
2399: if (yyResult.hasValue()) {
2400: final GNode v$g$1 = (GNode) yyResult.semanticValue();
2401:
2402: yyBase = yyResult.index;
2403: yyResult = pSymbol(yyBase);
2404: yyError = yyResult.select(yyError);
2405: if (yyResult.hasValue(";")) {
2406:
2407: yyValue = GNode.create("ExpressionStatement", v$g$1);
2408:
2409: setLocation(yyValue, yyStart);
2410: return yyResult.createValue(yyValue, yyError);
2411: } else {
2412: yyError = yyError.select("\";\" expected", yyBase);
2413: }
2414: }
2415:
2416: // Alternative 15.
2417:
2418: yyResult = pSymbol(yyStart);
2419: yyError = yyResult.select(yyError);
2420: if (yyResult.hasValue(";")) {
2421:
2422: yyValue = GNode.create("EmptyStatement", false);
2423:
2424: setLocation(yyValue, yyStart);
2425: return yyResult.createValue(yyValue, yyError);
2426: }
2427:
2428: // Done.
2429: yyError = yyError.select("statement expected", yyStart);
2430: return yyError;
2431: }
2432:
2433: // =========================================================================
2434:
2435: /**
2436: * Parse nonterminal xtc.xform.samples.javaproperty.JavaProperty.ForInit.
2437: *
2438: * @param yyStart The index.
2439: * @return The result.
2440: * @throws IOException Signals an I/O error.
2441: */
2442: private Result pForInit(final int yyStart) throws IOException {
2443: Result yyResult;
2444: int yyBase;
2445: int yyOption1;
2446: GNode yyOpValue1;
2447: GNode yyValue;
2448: ParseError yyError = ParseError.DUMMY;
2449:
2450: // Alternative 1.
2451:
2452: yyOption1 = yyStart;
2453: yyOpValue1 = null;
2454:
2455: yyResult = pFinalClause(yyOption1);
2456: yyError = yyResult.select(yyError);
2457: if (yyResult.hasValue()) {
2458: final GNode v$el$1 = (GNode) yyResult.semanticValue();
2459:
2460: yyOption1 = yyResult.index;
2461: yyOpValue1 = v$el$1;
2462: }
2463: { // Start scope for v$g$1.
2464: final GNode v$g$1 = yyOpValue1;
2465:
2466: yyResult = pType(yyOption1);
2467: yyError = yyResult.select(yyError);
2468: if (yyResult.hasValue()) {
2469: final GNode v$g$2 = (GNode) yyResult.semanticValue();
2470:
2471: yyResult = pDeclarators(yyResult.index);
2472: yyError = yyResult.select(yyError);
2473: if (yyResult.hasValue()) {
2474: final GNode v$g$3 = (GNode) yyResult
2475: .semanticValue();
2476:
2477: yyBase = yyResult.index;
2478: yyResult = pSymbol(yyBase);
2479: yyError = yyResult.select(yyError);
2480: if (yyResult.hasValue(";")) {
2481:
2482: yyValue = GNode.create("ForInit", v$g$1, v$g$2,
2483: v$g$3);
2484:
2485: setLocation(yyValue, yyStart);
2486: return yyResult.createValue(yyValue, yyError);
2487: } else {
2488: yyError = yyError.select("\";\" expected",
2489: yyBase);
2490: }
2491: }
2492: }
2493: } // End scope for v$g$1.
2494:
2495: // Alternative 2.
2496:
2497: yyResult = pExpressionList(yyStart);
2498: yyError = yyResult.select(yyError);
2499: if (yyResult.hasValue()) {
2500: final GNode v$g$4 = (GNode) yyResult.semanticValue();
2501:
2502: yyBase = yyResult.index;
2503: yyResult = pSymbol(yyBase);
2504: yyError = yyResult.select(yyError);
2505: if (yyResult.hasValue(";")) {
2506:
2507: yyValue = GNode.create("ForInit", v$g$4);
2508:
2509: setLocation(yyValue, yyStart);
2510: return yyResult.createValue(yyValue, yyError);
2511: } else {
2512: yyError = yyError.select("\";\" expected", yyBase);
2513: }
2514: }
2515:
2516: // Alternative 3.
2517:
2518: yyResult = pSymbol(yyStart);
2519: yyError = yyResult.select(yyError);
2520: if (yyResult.hasValue(";")) {
2521:
2522: yyValue = GNode.create("ForInit", false);
2523:
2524: setLocation(yyValue, yyStart);
2525: return yyResult.createValue(yyValue, yyError);
2526: }
2527:
2528: // Done.
2529: yyError = yyError.select("for init expected", yyStart);
2530: return yyError;
2531: }
2532:
2533: // =========================================================================
2534:
2535: /**
2536: * Parse nonterminal
2537: * xtc.xform.samples.javaproperty.JavaProperty.ParExpression.
2538: *
2539: * @param yyStart The index.
2540: * @return The result.
2541: * @throws IOException Signals an I/O error.
2542: */
2543: private Result pParExpression(final int yyStart) throws IOException {
2544: JavaPropertyParserColumn yyColumn = (JavaPropertyParserColumn) column(yyStart);
2545: if (null == yyColumn.chunk1)
2546: yyColumn.chunk1 = new Chunk1();
2547: if (null == yyColumn.chunk1.fParExpression)
2548: yyColumn.chunk1.fParExpression = pParExpression$1(yyStart);
2549: return yyColumn.chunk1.fParExpression;
2550: }
2551:
2552: /** Actually parse xtc.xform.samples.javaproperty.JavaProperty.ParExpression. */
2553: private Result pParExpression$1(final int yyStart)
2554: throws IOException {
2555: Result yyResult;
2556: int yyBase;
2557: GNode yyValue;
2558: ParseError yyError = ParseError.DUMMY;
2559:
2560: // Alternative 1.
2561:
2562: yyResult = pSymbol(yyStart);
2563: yyError = yyResult.select(yyError);
2564: if (yyResult.hasValue("(")) {
2565:
2566: yyResult = pExpression(yyResult.index);
2567: yyError = yyResult.select(yyError);
2568: if (yyResult.hasValue()) {
2569: yyValue = (GNode) yyResult.semanticValue();
2570:
2571: yyBase = yyResult.index;
2572: yyResult = pSymbol(yyBase);
2573: yyError = yyResult.select(yyError);
2574: if (yyResult.hasValue(")")) {
2575:
2576: setLocation(yyValue, yyStart);
2577: return yyResult.createValue(yyValue, yyError);
2578: } else {
2579: yyError = yyError.select("\")\" expected", yyBase);
2580: }
2581: }
2582: }
2583:
2584: // Done.
2585: yyError = yyError.select("par expression expected", yyStart);
2586: return yyError;
2587: }
2588:
2589: // =========================================================================
2590:
2591: /**
2592: * Parse nonterminal
2593: * xtc.xform.samples.javaproperty.JavaProperty.CatchClause.
2594: *
2595: * @param yyStart The index.
2596: * @return The result.
2597: * @throws IOException Signals an I/O error.
2598: */
2599: private Result pCatchClause(final int yyStart) throws IOException {
2600: JavaPropertyParserColumn yyColumn = (JavaPropertyParserColumn) column(yyStart);
2601: if (null == yyColumn.chunk1)
2602: yyColumn.chunk1 = new Chunk1();
2603: if (null == yyColumn.chunk1.fCatchClause)
2604: yyColumn.chunk1.fCatchClause = pCatchClause$1(yyStart);
2605: return yyColumn.chunk1.fCatchClause;
2606: }
2607:
2608: /** Actually parse xtc.xform.samples.javaproperty.JavaProperty.CatchClause. */
2609: private Result pCatchClause$1(final int yyStart) throws IOException {
2610: Result yyResult;
2611: int yyBase;
2612: GNode yyValue;
2613: ParseError yyError = ParseError.DUMMY;
2614:
2615: // Alternative 1.
2616:
2617: yyResult = pWord(yyStart);
2618: yyError = yyResult.select(yyError);
2619: if (yyResult.hasValue("catch")) {
2620:
2621: yyBase = yyResult.index;
2622: yyResult = pSymbol(yyBase);
2623: yyError = yyResult.select(yyError);
2624: if (yyResult.hasValue("(")) {
2625:
2626: yyResult = pFormalParameter(yyResult.index);
2627: yyError = yyResult.select(yyError);
2628: if (yyResult.hasValue()) {
2629: final GNode v$g$1 = (GNode) yyResult
2630: .semanticValue();
2631:
2632: yyBase = yyResult.index;
2633: yyResult = pSymbol(yyBase);
2634: yyError = yyResult.select(yyError);
2635: if (yyResult.hasValue(")")) {
2636:
2637: yyResult = pBlock(yyResult.index);
2638: yyError = yyResult.select(yyError);
2639: if (yyResult.hasValue()) {
2640: final GNode v$g$2 = (GNode) yyResult
2641: .semanticValue();
2642:
2643: yyValue = GNode.create("CatchClause",
2644: v$g$1, v$g$2);
2645:
2646: setLocation(yyValue, yyStart);
2647: return yyResult.createValue(yyValue,
2648: yyError);
2649: }
2650: } else {
2651: yyError = yyError.select("\")\" expected",
2652: yyBase);
2653: }
2654: }
2655: } else {
2656: yyError = yyError.select("\"(\" expected", yyBase);
2657: }
2658: }
2659:
2660: // Done.
2661: yyError = yyError.select("catch clause expected", yyStart);
2662: return yyError;
2663: }
2664:
2665: // =========================================================================
2666:
2667: /**
2668: * Parse nonterminal
2669: * xtc.xform.samples.javaproperty.JavaProperty.SwitchClause.
2670: *
2671: * @param yyStart The index.
2672: * @return The result.
2673: * @throws IOException Signals an I/O error.
2674: */
2675: private Result pSwitchClause(final int yyStart) throws IOException {
2676: Result yyResult;
2677: int yyBase;
2678: int yyRepetition1;
2679: Pair yyRepValue1;
2680: GNode yyValue;
2681: ParseError yyError = ParseError.DUMMY;
2682:
2683: // Alternative 1.
2684:
2685: yyResult = pWord(yyStart);
2686: yyError = yyResult.select(yyError);
2687: if (yyResult.hasValue("case")) {
2688:
2689: yyResult = pExpression(yyResult.index);
2690: yyError = yyResult.select(yyError);
2691: if (yyResult.hasValue()) {
2692: final GNode v$g$1 = (GNode) yyResult.semanticValue();
2693:
2694: yyBase = yyResult.index;
2695: yyResult = pSymbol(yyBase);
2696: yyError = yyResult.select(yyError);
2697: if (yyResult.hasValue(":")) {
2698:
2699: yyRepetition1 = yyResult.index;
2700: yyRepValue1 = Pair.EMPTY;
2701: while (true) {
2702:
2703: yyResult = pDeclarationOrStatement(yyRepetition1);
2704: yyError = yyResult.select(yyError);
2705: if (yyResult.hasValue()) {
2706: final GNode v$el$1 = (GNode) yyResult
2707: .semanticValue();
2708:
2709: yyRepetition1 = yyResult.index;
2710: yyRepValue1 = new Pair(v$el$1, yyRepValue1);
2711: continue;
2712: }
2713: break;
2714: }
2715: { // Start scope for v$g$2.
2716: final Pair v$g$2 = yyRepValue1.reverse();
2717:
2718: yyValue = GNode.create("CaseClause", v$g$1,
2719: (Pair) v$g$2);
2720:
2721: setLocation(yyValue, yyStart);
2722: return new SemanticValue(yyValue,
2723: yyRepetition1, yyError);
2724: } // End scope for v$g$2.
2725: } else {
2726: yyError = yyError.select("\":\" expected", yyBase);
2727: }
2728: }
2729: }
2730:
2731: // Alternative 2.
2732:
2733: yyResult = pWord(yyStart);
2734: yyError = yyResult.select(yyError);
2735: if (yyResult.hasValue("default")) {
2736:
2737: yyBase = yyResult.index;
2738: yyResult = pSymbol(yyBase);
2739: yyError = yyResult.select(yyError);
2740: if (yyResult.hasValue(":")) {
2741:
2742: yyRepetition1 = yyResult.index;
2743: yyRepValue1 = Pair.EMPTY;
2744: while (true) {
2745:
2746: yyResult = pDeclarationOrStatement(yyRepetition1);
2747: yyError = yyResult.select(yyError);
2748: if (yyResult.hasValue()) {
2749: final GNode v$el$1 = (GNode) yyResult
2750: .semanticValue();
2751:
2752: yyRepetition1 = yyResult.index;
2753: yyRepValue1 = new Pair(v$el$1, yyRepValue1);
2754: continue;
2755: }
2756: break;
2757: }
2758: { // Start scope for v$g$1.
2759: final Pair v$g$1 = yyRepValue1.reverse();
2760:
2761: yyValue = GNode.create("DefaultClause",
2762: (Pair) v$g$1);
2763:
2764: setLocation(yyValue, yyStart);
2765: return new SemanticValue(yyValue, yyRepetition1,
2766: yyError);
2767: } // End scope for v$g$1.
2768: } else {
2769: yyError = yyError.select("\":\" expected", yyBase);
2770: }
2771: }
2772:
2773: // Done.
2774: yyError = yyError.select("switch clause expected", yyStart);
2775: return yyError;
2776: }
2777:
2778: // =========================================================================
2779:
2780: /**
2781: * Parse nonterminal
2782: * xtc.xform.samples.javaproperty.JavaProperty.ExpressionList.
2783: *
2784: * @param yyStart The index.
2785: * @return The result.
2786: * @throws IOException Signals an I/O error.
2787: */
2788: private Result pExpressionList(final int yyStart)
2789: throws IOException {
2790: Result yyResult;
2791: int yyBase;
2792: int yyRepetition1;
2793: Pair yyRepValue1;
2794: GNode yyValue;
2795: ParseError yyError = ParseError.DUMMY;
2796:
2797: // Alternative 1.
2798:
2799: yyResult = pExpression(yyStart);
2800: yyError = yyResult.select(yyError);
2801: if (yyResult.hasValue()) {
2802: final GNode v$g$1 = (GNode) yyResult.semanticValue();
2803:
2804: yyRepetition1 = yyResult.index;
2805: yyRepValue1 = Pair.EMPTY;
2806: while (true) {
2807:
2808: yyBase = yyRepetition1;
2809: yyResult = pSymbol(yyBase);
2810: yyError = yyResult.select(yyError);
2811: if (yyResult.hasValue(",")) {
2812:
2813: yyResult = pExpression(yyResult.index);
2814: yyError = yyResult.select(yyError);
2815: if (yyResult.hasValue()) {
2816: final GNode v$el$1 = (GNode) yyResult
2817: .semanticValue();
2818:
2819: yyRepetition1 = yyResult.index;
2820: yyRepValue1 = new Pair(v$el$1, yyRepValue1);
2821: continue;
2822: }
2823: } else {
2824: yyError = yyError.select("\",\" expected", yyBase);
2825: }
2826: break;
2827: }
2828: { // Start scope for v$g$2.
2829: final Pair v$g$2 = yyRepValue1.reverse();
2830:
2831: yyValue = GNode.create("ExpressionList", v$g$1,
2832: (Pair) v$g$2);
2833:
2834: setLocation(yyValue, yyStart);
2835: return new SemanticValue(yyValue, yyRepetition1,
2836: yyError);
2837: } // End scope for v$g$2.
2838: }
2839:
2840: // Done.
2841: return yyError;
2842: }
2843:
2844: // =========================================================================
2845:
2846: /**
2847: * Parse nonterminal xtc.xform.samples.javaproperty.JavaProperty.Expression.
2848: *
2849: * @param yyStart The index.
2850: * @return The result.
2851: * @throws IOException Signals an I/O error.
2852: */
2853: private Result pExpression(final int yyStart) throws IOException {
2854: JavaPropertyParserColumn yyColumn = (JavaPropertyParserColumn) column(yyStart);
2855: if (null == yyColumn.chunk1)
2856: yyColumn.chunk1 = new Chunk1();
2857: if (null == yyColumn.chunk1.fExpression)
2858: yyColumn.chunk1.fExpression = pExpression$1(yyStart);
2859: return yyColumn.chunk1.fExpression;
2860: }
2861:
2862: /** Actually parse xtc.xform.samples.javaproperty.JavaProperty.Expression. */
2863: private Result pExpression$1(final int yyStart) throws IOException {
2864: Result yyResult;
2865: GNode yyValue;
2866: ParseError yyError = ParseError.DUMMY;
2867:
2868: // Alternative <Assignment>.
2869:
2870: yyResult = pConditionalExpression(yyStart);
2871: yyError = yyResult.select(yyError);
2872: if (yyResult.hasValue()) {
2873: final GNode v$g$1 = (GNode) yyResult.semanticValue();
2874:
2875: yyResult = pAssignmentOperator(yyResult.index);
2876: yyError = yyResult.select(yyError);
2877: if (yyResult.hasValue()) {
2878: final String v$g$2 = (String) yyResult.semanticValue();
2879:
2880: yyResult = pExpression(yyResult.index);
2881: yyError = yyResult.select(yyError);
2882: if (yyResult.hasValue()) {
2883: final GNode v$g$3 = (GNode) yyResult
2884: .semanticValue();
2885:
2886: yyValue = GNode.create("Expression", v$g$1, v$g$2,
2887: v$g$3);
2888:
2889: setLocation(yyValue, yyStart);
2890: return yyResult.createValue(yyValue, yyError);
2891: }
2892: }
2893: }
2894:
2895: // Alternative <Base>.
2896:
2897: yyResult = pConditionalExpression(yyStart);
2898: yyError = yyResult.select(yyError);
2899: if (yyResult.hasValue()) {
2900: yyValue = (GNode) yyResult.semanticValue();
2901:
2902: setLocation(yyValue, yyStart);
2903: return yyResult.createValue(yyValue, yyError);
2904: }
2905:
2906: // Done.
2907: return yyError;
2908: }
2909:
2910: // =========================================================================
2911:
2912: /**
2913: * Parse nonterminal
2914: * xtc.xform.samples.javaproperty.JavaProperty.AssignmentOperator.
2915: *
2916: * @param yyStart The index.
2917: * @return The result.
2918: * @throws IOException Signals an I/O error.
2919: */
2920: private Result pAssignmentOperator(final int yyStart)
2921: throws IOException {
2922: Result yyResult;
2923: String yyValue;
2924: ParseError yyError = ParseError.DUMMY;
2925:
2926: // Alternative <Equal>.
2927:
2928: yyResult = pSymbol(yyStart);
2929: yyError = yyResult.select(yyError);
2930: if (yyResult.hasValue("=")) {
2931: yyValue = "=";
2932:
2933: return yyResult.createValue(yyValue, yyError);
2934: }
2935:
2936: // Alternative <PlusEqual>.
2937:
2938: yyResult = pSymbol(yyStart);
2939: yyError = yyResult.select(yyError);
2940: if (yyResult.hasValue("+=")) {
2941: yyValue = "+=";
2942:
2943: return yyResult.createValue(yyValue, yyError);
2944: }
2945:
2946: // Alternative <MinusEqual>.
2947:
2948: yyResult = pSymbol(yyStart);
2949: yyError = yyResult.select(yyError);
2950: if (yyResult.hasValue("-=")) {
2951: yyValue = "-=";
2952:
2953: return yyResult.createValue(yyValue, yyError);
2954: }
2955:
2956: // Alternative <StarEqual>.
2957:
2958: yyResult = pSymbol(yyStart);
2959: yyError = yyResult.select(yyError);
2960: if (yyResult.hasValue("*=")) {
2961: yyValue = "*=";
2962:
2963: return yyResult.createValue(yyValue, yyError);
2964: }
2965:
2966: // Alternative <SlashEqual>.
2967:
2968: yyResult = pSymbol(yyStart);
2969: yyError = yyResult.select(yyError);
2970: if (yyResult.hasValue("/=")) {
2971: yyValue = "/=";
2972:
2973: return yyResult.createValue(yyValue, yyError);
2974: }
2975:
2976: // Alternative <AmpersandEqual>.
2977:
2978: yyResult = pSymbol(yyStart);
2979: yyError = yyResult.select(yyError);
2980: if (yyResult.hasValue("&=")) {
2981: yyValue = "&=";
2982:
2983: return yyResult.createValue(yyValue, yyError);
2984: }
2985:
2986: // Alternative <BarEqual>.
2987:
2988: yyResult = pSymbol(yyStart);
2989: yyError = yyResult.select(yyError);
2990: if (yyResult.hasValue("|=")) {
2991: yyValue = "|=";
2992:
2993: return yyResult.createValue(yyValue, yyError);
2994: }
2995:
2996: // Alternative <CaretEqual>.
2997:
2998: yyResult = pSymbol(yyStart);
2999: yyError = yyResult.select(yyError);
3000: if (yyResult.hasValue("^=")) {
3001: yyValue = "^=";
3002:
3003: return yyResult.createValue(yyValue, yyError);
3004: }
3005:
3006: // Alternative <PercentEqual>.
3007:
3008: yyResult = pSymbol(yyStart);
3009: yyError = yyResult.select(yyError);
3010: if (yyResult.hasValue("%=")) {
3011: yyValue = "%=";
3012:
3013: return yyResult.createValue(yyValue, yyError);
3014: }
3015:
3016: // Alternative <DoubleLessEqual>.
3017:
3018: yyResult = pSymbol(yyStart);
3019: yyError = yyResult.select(yyError);
3020: if (yyResult.hasValue("<<=")) {
3021: yyValue = "<<=";
3022:
3023: return yyResult.createValue(yyValue, yyError);
3024: }
3025:
3026: // Alternative <DoubleGreaterEqual>.
3027:
3028: yyResult = pSymbol(yyStart);
3029: yyError = yyResult.select(yyError);
3030: if (yyResult.hasValue(">>=")) {
3031: yyValue = ">>=";
3032:
3033: return yyResult.createValue(yyValue, yyError);
3034: }
3035:
3036: // Alternative <TripleGreaterEqual>.
3037:
3038: yyResult = pSymbol(yyStart);
3039: yyError = yyResult.select(yyError);
3040: if (yyResult.hasValue(">>>=")) {
3041: yyValue = ">>>=";
3042:
3043: return yyResult.createValue(yyValue, yyError);
3044: }
3045:
3046: // Done.
3047: yyError = yyError.select("assignment operator expected",
3048: yyStart);
3049: return yyError;
3050: }
3051:
3052: // =========================================================================
3053:
3054: /**
3055: * Parse nonterminal
3056: * xtc.xform.samples.javaproperty.JavaProperty.ConditionalExpression.
3057: *
3058: * @param yyStart The index.
3059: * @return The result.
3060: * @throws IOException Signals an I/O error.
3061: */
3062: private Result pConditionalExpression(final int yyStart)
3063: throws IOException {
3064:
3065: JavaPropertyParserColumn yyColumn = (JavaPropertyParserColumn) column(yyStart);
3066: if (null == yyColumn.chunk1)
3067: yyColumn.chunk1 = new Chunk1();
3068: if (null == yyColumn.chunk1.fConditionalExpression)
3069: yyColumn.chunk1.fConditionalExpression = pConditionalExpression$1(yyStart);
3070: return yyColumn.chunk1.fConditionalExpression;
3071: }
3072:
3073: /** Actually parse xtc.xform.samples.javaproperty.JavaProperty.ConditionalExpression. */
3074: private Result pConditionalExpression$1(final int yyStart)
3075: throws IOException {
3076:
3077: Result yyResult;
3078: int yyBase;
3079: GNode yyValue;
3080: ParseError yyError = ParseError.DUMMY;
3081:
3082: // Alternative <Conditional>.
3083:
3084: yyResult = pLogicalOrExpression(yyStart);
3085: yyError = yyResult.select(yyError);
3086: if (yyResult.hasValue()) {
3087: final GNode v$g$1 = (GNode) yyResult.semanticValue();
3088:
3089: yyBase = yyResult.index;
3090: yyResult = pSymbol(yyBase);
3091: yyError = yyResult.select(yyError);
3092: if (yyResult.hasValue("?")) {
3093:
3094: yyResult = pExpression(yyResult.index);
3095: yyError = yyResult.select(yyError);
3096: if (yyResult.hasValue()) {
3097: final GNode v$g$2 = (GNode) yyResult
3098: .semanticValue();
3099:
3100: yyBase = yyResult.index;
3101: yyResult = pSymbol(yyBase);
3102: yyError = yyResult.select(yyError);
3103: if (yyResult.hasValue(":")) {
3104:
3105: yyResult = pConditionalExpression(yyResult.index);
3106: yyError = yyResult.select(yyError);
3107: if (yyResult.hasValue()) {
3108: final GNode v$g$3 = (GNode) yyResult
3109: .semanticValue();
3110:
3111: yyValue = GNode.create(
3112: "ConditionalExpression", v$g$1,
3113: v$g$2, v$g$3);
3114:
3115: setLocation(yyValue, yyStart);
3116: return yyResult.createValue(yyValue,
3117: yyError);
3118: }
3119: } else {
3120: yyError = yyError.select("\":\" expected",
3121: yyBase);
3122: }
3123: }
3124: } else {
3125: yyError = yyError.select("\"?\" expected", yyBase);
3126: }
3127: }
3128:
3129: // Alternative <Base>.
3130:
3131: yyResult = pLogicalOrExpression(yyStart);
3132: yyError = yyResult.select(yyError);
3133: if (yyResult.hasValue()) {
3134: yyValue = (GNode) yyResult.semanticValue();
3135:
3136: setLocation(yyValue, yyStart);
3137: return yyResult.createValue(yyValue, yyError);
3138: }
3139:
3140: // Done.
3141: return yyError;
3142: }
3143:
3144: // =========================================================================
3145:
3146: /**
3147: * Parse nonterminal
3148: * xtc.xform.samples.javaproperty.JavaProperty.LogicalOrExpression.
3149: *
3150: * @param yyStart The index.
3151: * @return The result.
3152: * @throws IOException Signals an I/O error.
3153: */
3154: private Result pLogicalOrExpression(final int yyStart)
3155: throws IOException {
3156: JavaPropertyParserColumn yyColumn = (JavaPropertyParserColumn) column(yyStart);
3157: if (null == yyColumn.chunk2)
3158: yyColumn.chunk2 = new Chunk2();
3159: if (null == yyColumn.chunk2.fLogicalOrExpression)
3160: yyColumn.chunk2.fLogicalOrExpression = pLogicalOrExpression$1(yyStart);
3161: return yyColumn.chunk2.fLogicalOrExpression;
3162: }
3163:
3164: /** Actually parse xtc.xform.samples.javaproperty.JavaProperty.LogicalOrExpression. */
3165: private Result pLogicalOrExpression$1(final int yyStart)
3166: throws IOException {
3167:
3168: Result yyResult;
3169: int yyRepetition1;
3170: Pair yyRepValue1;
3171: GNode yyValue;
3172: ParseError yyError = ParseError.DUMMY;
3173:
3174: // Alternative <Base>.
3175:
3176: yyResult = pLogicalAndExpression(yyStart);
3177: yyError = yyResult.select(yyError);
3178: if (yyResult.hasValue()) {
3179: final GNode v$3 = (GNode) yyResult.semanticValue();
3180:
3181: yyRepetition1 = yyResult.index;
3182: yyRepValue1 = Pair.EMPTY;
3183: while (true) {
3184:
3185: yyResult = pLogicalOrExpression$$Tail1(yyRepetition1);
3186: yyError = yyResult.select(yyError);
3187: if (yyResult.hasValue()) {
3188: final Action v$4 = (Action) yyResult
3189: .semanticValue();
3190:
3191: yyRepetition1 = yyResult.index;
3192: yyRepValue1 = new Pair(v$4, yyRepValue1);
3193: continue;
3194: }
3195: break;
3196: }
3197: { // Start scope for v$5.
3198: final Pair v$5 = yyRepValue1.reverse();
3199:
3200: yyValue = (GNode) apply(v$5, v$3, yyStart);
3201:
3202: setLocation(yyValue, yyStart);
3203: return new SemanticValue(yyValue, yyRepetition1,
3204: yyError);
3205: } // End scope for v$5.
3206: }
3207:
3208: // Done.
3209: return yyError;
3210: }
3211:
3212: // =========================================================================
3213:
3214: /**
3215: * Parse synthetic nonterminal
3216: * xtc.xform.samples.javaproperty.JavaProperty.LogicalOrExpression$$Tail1.
3217: *
3218: * @param yyStart The index.
3219: * @return The result.
3220: * @throws IOException Signals an I/O error.
3221: */
3222: private Result pLogicalOrExpression$$Tail1(final int yyStart)
3223: throws IOException {
3224:
3225: Result yyResult;
3226: Action yyValue;
3227: ParseError yyError = ParseError.DUMMY;
3228:
3229: // Alternative <Or>.
3230:
3231: yyResult = pSymbol(yyStart);
3232: yyError = yyResult.select(yyError);
3233: if (yyResult.hasValue("||")) {
3234:
3235: yyResult = pLogicalAndExpression(yyResult.index);
3236: yyError = yyResult.select(yyError);
3237: if (yyResult.hasValue()) {
3238: final GNode v$g$2 = (GNode) yyResult.semanticValue();
3239:
3240: yyValue = new Action() {
3241: public Object run(Object v$1) {
3242: return GNode.create("LogicalOrExpression", v$1,
3243: v$g$2);
3244: }
3245: };
3246: return yyResult.createValue(yyValue, yyError);
3247: }
3248: }
3249:
3250: // Done.
3251: yyError = yyError.select("logical or expression expected",
3252: yyStart);
3253: return yyError;
3254: }
3255:
3256: // =========================================================================
3257:
3258: /**
3259: * Parse nonterminal
3260: * xtc.xform.samples.javaproperty.JavaProperty.LogicalAndExpression.
3261: *
3262: * @param yyStart The index.
3263: * @return The result.
3264: * @throws IOException Signals an I/O error.
3265: */
3266: private Result pLogicalAndExpression(final int yyStart)
3267: throws IOException {
3268: Result yyResult;
3269: int yyRepetition1;
3270: Pair yyRepValue1;
3271: GNode yyValue;
3272: ParseError yyError = ParseError.DUMMY;
3273:
3274: // Alternative <Base>.
3275:
3276: yyResult = pBitwiseOrExpression(yyStart);
3277: yyError = yyResult.select(yyError);
3278: if (yyResult.hasValue()) {
3279: final GNode v$3 = (GNode) yyResult.semanticValue();
3280:
3281: yyRepetition1 = yyResult.index;
3282: yyRepValue1 = Pair.EMPTY;
3283: while (true) {
3284:
3285: yyResult = pLogicalAndExpression$$Tail1(yyRepetition1);
3286: yyError = yyResult.select(yyError);
3287: if (yyResult.hasValue()) {
3288: final Action v$4 = (Action) yyResult
3289: .semanticValue();
3290:
3291: yyRepetition1 = yyResult.index;
3292: yyRepValue1 = new Pair(v$4, yyRepValue1);
3293: continue;
3294: }
3295: break;
3296: }
3297: { // Start scope for v$5.
3298: final Pair v$5 = yyRepValue1.reverse();
3299:
3300: yyValue = (GNode) apply(v$5, v$3, yyStart);
3301:
3302: setLocation(yyValue, yyStart);
3303: return new SemanticValue(yyValue, yyRepetition1,
3304: yyError);
3305: } // End scope for v$5.
3306: }
3307:
3308: // Done.
3309: return yyError;
3310: }
3311:
3312: // =========================================================================
3313:
3314: /**
3315: * Parse synthetic nonterminal
3316: * xtc.xform.samples.javaproperty.JavaProperty.LogicalAndExpression$$Tail1.
3317: *
3318: * @param yyStart The index.
3319: * @return The result.
3320: * @throws IOException Signals an I/O error.
3321: */
3322: private Result pLogicalAndExpression$$Tail1(final int yyStart)
3323: throws IOException {
3324:
3325: Result yyResult;
3326: Action yyValue;
3327: ParseError yyError = ParseError.DUMMY;
3328:
3329: // Alternative <And>.
3330:
3331: yyResult = pSymbol(yyStart);
3332: yyError = yyResult.select(yyError);
3333: if (yyResult.hasValue("&&")) {
3334:
3335: yyResult = pBitwiseOrExpression(yyResult.index);
3336: yyError = yyResult.select(yyError);
3337: if (yyResult.hasValue()) {
3338: final GNode v$g$2 = (GNode) yyResult.semanticValue();
3339:
3340: yyValue = new Action() {
3341: public Object run(Object v$1) {
3342: return GNode.create("LogicalAndExpression",
3343: v$1, v$g$2);
3344: }
3345: };
3346: return yyResult.createValue(yyValue, yyError);
3347: }
3348: }
3349:
3350: // Done.
3351: yyError = yyError.select("logical and expression expected",
3352: yyStart);
3353: return yyError;
3354: }
3355:
3356: // =========================================================================
3357:
3358: /**
3359: * Parse nonterminal
3360: * xtc.xform.samples.javaproperty.JavaProperty.BitwiseOrExpression.
3361: *
3362: * @param yyStart The index.
3363: * @return The result.
3364: * @throws IOException Signals an I/O error.
3365: */
3366: private Result pBitwiseOrExpression(final int yyStart)
3367: throws IOException {
3368: Result yyResult;
3369: int yyRepetition1;
3370: Pair yyRepValue1;
3371: GNode yyValue;
3372: ParseError yyError = ParseError.DUMMY;
3373:
3374: // Alternative <Base>.
3375:
3376: yyResult = pBitwiseXorExpression(yyStart);
3377: yyError = yyResult.select(yyError);
3378: if (yyResult.hasValue()) {
3379: final GNode v$3 = (GNode) yyResult.semanticValue();
3380:
3381: yyRepetition1 = yyResult.index;
3382: yyRepValue1 = Pair.EMPTY;
3383: while (true) {
3384:
3385: yyResult = pBitwiseOrExpression$$Tail1(yyRepetition1);
3386: yyError = yyResult.select(yyError);
3387: if (yyResult.hasValue()) {
3388: final Action v$4 = (Action) yyResult
3389: .semanticValue();
3390:
3391: yyRepetition1 = yyResult.index;
3392: yyRepValue1 = new Pair(v$4, yyRepValue1);
3393: continue;
3394: }
3395: break;
3396: }
3397: { // Start scope for v$5.
3398: final Pair v$5 = yyRepValue1.reverse();
3399:
3400: yyValue = (GNode) apply(v$5, v$3, yyStart);
3401:
3402: setLocation(yyValue, yyStart);
3403: return new SemanticValue(yyValue, yyRepetition1,
3404: yyError);
3405: } // End scope for v$5.
3406: }
3407:
3408: // Done.
3409: return yyError;
3410: }
3411:
3412: // =========================================================================
3413:
3414: /**
3415: * Parse synthetic nonterminal
3416: * xtc.xform.samples.javaproperty.JavaProperty.BitwiseOrExpression$$Tail1.
3417: *
3418: * @param yyStart The index.
3419: * @return The result.
3420: * @throws IOException Signals an I/O error.
3421: */
3422: private Result pBitwiseOrExpression$$Tail1(final int yyStart)
3423: throws IOException {
3424:
3425: Result yyResult;
3426: Action yyValue;
3427: ParseError yyError = ParseError.DUMMY;
3428:
3429: // Alternative <Or>.
3430:
3431: yyResult = pSymbol(yyStart);
3432: yyError = yyResult.select(yyError);
3433: if (yyResult.hasValue("|")) {
3434:
3435: yyResult = pBitwiseXorExpression(yyResult.index);
3436: yyError = yyResult.select(yyError);
3437: if (yyResult.hasValue()) {
3438: final GNode v$g$2 = (GNode) yyResult.semanticValue();
3439:
3440: yyValue = new Action() {
3441: public Object run(Object v$1) {
3442: return GNode.create("BitwiseOrExpression", v$1,
3443: v$g$2);
3444: }
3445: };
3446: return yyResult.createValue(yyValue, yyError);
3447: }
3448: }
3449:
3450: // Done.
3451: yyError = yyError.select("bitwise or expression expected",
3452: yyStart);
3453: return yyError;
3454: }
3455:
3456: // =========================================================================
3457:
3458: /**
3459: * Parse nonterminal
3460: * xtc.xform.samples.javaproperty.JavaProperty.BitwiseXorExpression.
3461: *
3462: * @param yyStart The index.
3463: * @return The result.
3464: * @throws IOException Signals an I/O error.
3465: */
3466: private Result pBitwiseXorExpression(final int yyStart)
3467: throws IOException {
3468: Result yyResult;
3469: int yyRepetition1;
3470: Pair yyRepValue1;
3471: GNode yyValue;
3472: ParseError yyError = ParseError.DUMMY;
3473:
3474: // Alternative <Base>.
3475:
3476: yyResult = pBitwiseAndExpression(yyStart);
3477: yyError = yyResult.select(yyError);
3478: if (yyResult.hasValue()) {
3479: final GNode v$3 = (GNode) yyResult.semanticValue();
3480:
3481: yyRepetition1 = yyResult.index;
3482: yyRepValue1 = Pair.EMPTY;
3483: while (true) {
3484:
3485: yyResult = pBitwiseXorExpression$$Tail1(yyRepetition1);
3486: yyError = yyResult.select(yyError);
3487: if (yyResult.hasValue()) {
3488: final Action v$4 = (Action) yyResult
3489: .semanticValue();
3490:
3491: yyRepetition1 = yyResult.index;
3492: yyRepValue1 = new Pair(v$4, yyRepValue1);
3493: continue;
3494: }
3495: break;
3496: }
3497: { // Start scope for v$5.
3498: final Pair v$5 = yyRepValue1.reverse();
3499:
3500: yyValue = (GNode) apply(v$5, v$3, yyStart);
3501:
3502: setLocation(yyValue, yyStart);
3503: return new SemanticValue(yyValue, yyRepetition1,
3504: yyError);
3505: } // End scope for v$5.
3506: }
3507:
3508: // Done.
3509: return yyError;
3510: }
3511:
3512: // =========================================================================
3513:
3514: /**
3515: * Parse synthetic nonterminal
3516: * xtc.xform.samples.javaproperty.JavaProperty.BitwiseXorExpression$$Tail1.
3517: *
3518: * @param yyStart The index.
3519: * @return The result.
3520: * @throws IOException Signals an I/O error.
3521: */
3522: private Result pBitwiseXorExpression$$Tail1(final int yyStart)
3523: throws IOException {
3524:
3525: Result yyResult;
3526: Action yyValue;
3527: ParseError yyError = ParseError.DUMMY;
3528:
3529: // Alternative <Xor>.
3530:
3531: yyResult = pSymbol(yyStart);
3532: yyError = yyResult.select(yyError);
3533: if (yyResult.hasValue("^")) {
3534:
3535: yyResult = pBitwiseAndExpression(yyResult.index);
3536: yyError = yyResult.select(yyError);
3537: if (yyResult.hasValue()) {
3538: final GNode v$g$2 = (GNode) yyResult.semanticValue();
3539:
3540: yyValue = new Action() {
3541: public Object run(Object v$1) {
3542: return GNode.create("BitwiseXorExpression",
3543: v$1, v$g$2);
3544: }
3545: };
3546: return yyResult.createValue(yyValue, yyError);
3547: }
3548: }
3549:
3550: // Done.
3551: yyError = yyError.select("bitwise xor expression expected",
3552: yyStart);
3553: return yyError;
3554: }
3555:
3556: // =========================================================================
3557:
3558: /**
3559: * Parse nonterminal
3560: * xtc.xform.samples.javaproperty.JavaProperty.BitwiseAndExpression.
3561: *
3562: * @param yyStart The index.
3563: * @return The result.
3564: * @throws IOException Signals an I/O error.
3565: */
3566: private Result pBitwiseAndExpression(final int yyStart)
3567: throws IOException {
3568: Result yyResult;
3569: int yyRepetition1;
3570: Pair yyRepValue1;
3571: GNode yyValue;
3572: ParseError yyError = ParseError.DUMMY;
3573:
3574: // Alternative <Base>.
3575:
3576: yyResult = pEqualityExpression(yyStart);
3577: yyError = yyResult.select(yyError);
3578: if (yyResult.hasValue()) {
3579: final GNode v$3 = (GNode) yyResult.semanticValue();
3580:
3581: yyRepetition1 = yyResult.index;
3582: yyRepValue1 = Pair.EMPTY;
3583: while (true) {
3584:
3585: yyResult = pBitwiseAndExpression$$Tail1(yyRepetition1);
3586: yyError = yyResult.select(yyError);
3587: if (yyResult.hasValue()) {
3588: final Action v$4 = (Action) yyResult
3589: .semanticValue();
3590:
3591: yyRepetition1 = yyResult.index;
3592: yyRepValue1 = new Pair(v$4, yyRepValue1);
3593: continue;
3594: }
3595: break;
3596: }
3597: { // Start scope for v$5.
3598: final Pair v$5 = yyRepValue1.reverse();
3599:
3600: yyValue = (GNode) apply(v$5, v$3, yyStart);
3601:
3602: setLocation(yyValue, yyStart);
3603: return new SemanticValue(yyValue, yyRepetition1,
3604: yyError);
3605: } // End scope for v$5.
3606: }
3607:
3608: // Done.
3609: return yyError;
3610: }
3611:
3612: // =========================================================================
3613:
3614: /**
3615: * Parse synthetic nonterminal
3616: * xtc.xform.samples.javaproperty.JavaProperty.BitwiseAndExpression$$Tail1.
3617: *
3618: * @param yyStart The index.
3619: * @return The result.
3620: * @throws IOException Signals an I/O error.
3621: */
3622: private Result pBitwiseAndExpression$$Tail1(final int yyStart)
3623: throws IOException {
3624:
3625: Result yyResult;
3626: Action yyValue;
3627: ParseError yyError = ParseError.DUMMY;
3628:
3629: // Alternative <And>.
3630:
3631: yyResult = pSymbol(yyStart);
3632: yyError = yyResult.select(yyError);
3633: if (yyResult.hasValue("&")) {
3634:
3635: yyResult = pEqualityExpression(yyResult.index);
3636: yyError = yyResult.select(yyError);
3637: if (yyResult.hasValue()) {
3638: final GNode v$g$2 = (GNode) yyResult.semanticValue();
3639:
3640: yyValue = new Action() {
3641: public Object run(Object v$1) {
3642: return GNode.create("BitwiseAndExpression",
3643: v$1, v$g$2);
3644: }
3645: };
3646: return yyResult.createValue(yyValue, yyError);
3647: }
3648: }
3649:
3650: // Done.
3651: yyError = yyError.select("bitwise and expression expected",
3652: yyStart);
3653: return yyError;
3654: }
3655:
3656: // =========================================================================
3657:
3658: /**
3659: * Parse nonterminal
3660: * xtc.xform.samples.javaproperty.JavaProperty.EqualityExpression.
3661: *
3662: * @param yyStart The index.
3663: * @return The result.
3664: * @throws IOException Signals an I/O error.
3665: */
3666: private Result pEqualityExpression(final int yyStart)
3667: throws IOException {
3668: Result yyResult;
3669: int yyRepetition1;
3670: Pair yyRepValue1;
3671: GNode yyValue;
3672: ParseError yyError = ParseError.DUMMY;
3673:
3674: // Alternative <Base>.
3675:
3676: yyResult = pInstanceOfExpression(yyStart);
3677: yyError = yyResult.select(yyError);
3678: if (yyResult.hasValue()) {
3679: final GNode v$4 = (GNode) yyResult.semanticValue();
3680:
3681: yyRepetition1 = yyResult.index;
3682: yyRepValue1 = Pair.EMPTY;
3683: while (true) {
3684:
3685: yyResult = pEqualityExpression$$Tail1(yyRepetition1);
3686: yyError = yyResult.select(yyError);
3687: if (yyResult.hasValue()) {
3688: final Action v$5 = (Action) yyResult
3689: .semanticValue();
3690:
3691: yyRepetition1 = yyResult.index;
3692: yyRepValue1 = new Pair(v$5, yyRepValue1);
3693: continue;
3694: }
3695: break;
3696: }
3697: { // Start scope for v$6.
3698: final Pair v$6 = yyRepValue1.reverse();
3699:
3700: yyValue = (GNode) apply(v$6, v$4, yyStart);
3701:
3702: setLocation(yyValue, yyStart);
3703: return new SemanticValue(yyValue, yyRepetition1,
3704: yyError);
3705: } // End scope for v$6.
3706: }
3707:
3708: // Done.
3709: return yyError;
3710: }
3711:
3712: // =========================================================================
3713:
3714: /**
3715: * Parse synthetic nonterminal
3716: * xtc.xform.samples.javaproperty.JavaProperty.EqualityExpression$$Tail1.
3717: *
3718: * @param yyStart The index.
3719: * @return The result.
3720: * @throws IOException Signals an I/O error.
3721: */
3722: private Result pEqualityExpression$$Tail1(final int yyStart)
3723: throws IOException {
3724:
3725: Result yyResult;
3726: Action yyValue;
3727: ParseError yyError = ParseError.DUMMY;
3728:
3729: // Alternative <Recursion>.
3730:
3731: yyResult = pEqualityOperator(yyStart);
3732: yyError = yyResult.select(yyError);
3733: if (yyResult.hasValue()) {
3734: final String v$g$2 = (String) yyResult.semanticValue();
3735:
3736: yyResult = pInstanceOfExpression(yyResult.index);
3737: yyError = yyResult.select(yyError);
3738: if (yyResult.hasValue()) {
3739: final GNode v$g$3 = (GNode) yyResult.semanticValue();
3740:
3741: yyValue = new Action() {
3742: public Object run(Object v$1) {
3743: return GNode.create("EqualityExpression", v$1,
3744: v$g$2, v$g$3);
3745: }
3746: };
3747: return yyResult.createValue(yyValue, yyError);
3748: }
3749: }
3750:
3751: // Done.
3752: return yyError;
3753: }
3754:
3755: // =========================================================================
3756:
3757: /**
3758: * Parse nonterminal
3759: * xtc.xform.samples.javaproperty.JavaProperty.EqualityOperator.
3760: *
3761: * @param yyStart The index.
3762: * @return The result.
3763: * @throws IOException Signals an I/O error.
3764: */
3765: private Result pEqualityOperator(final int yyStart)
3766: throws IOException {
3767: Result yyResult;
3768: String yyValue;
3769: ParseError yyError = ParseError.DUMMY;
3770:
3771: // Alternative <Equal>.
3772:
3773: yyResult = pSymbol(yyStart);
3774: yyError = yyResult.select(yyError);
3775: if (yyResult.hasValue("==")) {
3776: yyValue = "==";
3777:
3778: return yyResult.createValue(yyValue, yyError);
3779: }
3780:
3781: // Alternative <NotEqual>.
3782:
3783: yyResult = pSymbol(yyStart);
3784: yyError = yyResult.select(yyError);
3785: if (yyResult.hasValue("!=")) {
3786: yyValue = "!=";
3787:
3788: return yyResult.createValue(yyValue, yyError);
3789: }
3790:
3791: // Done.
3792: yyError = yyError.select("equality operator expected", yyStart);
3793: return yyError;
3794: }
3795:
3796: // =========================================================================
3797:
3798: /**
3799: * Parse nonterminal
3800: * xtc.xform.samples.javaproperty.JavaProperty.InstanceOfExpression.
3801: *
3802: * @param yyStart The index.
3803: * @return The result.
3804: * @throws IOException Signals an I/O error.
3805: */
3806: private Result pInstanceOfExpression(final int yyStart)
3807: throws IOException {
3808: Result yyResult;
3809: int yyBase;
3810: GNode yyValue;
3811: ParseError yyError = ParseError.DUMMY;
3812:
3813: // Alternative <Instanceof>.
3814:
3815: yyResult = pRelationalExpression(yyStart);
3816: yyError = yyResult.select(yyError);
3817: if (yyResult.hasValue()) {
3818: final GNode v$g$1 = (GNode) yyResult.semanticValue();
3819:
3820: yyBase = yyResult.index;
3821: yyResult = pWord(yyBase);
3822: yyError = yyResult.select(yyError);
3823: if (yyResult.hasValue("instanceof")) {
3824:
3825: yyResult = pType(yyResult.index);
3826: yyError = yyResult.select(yyError);
3827: if (yyResult.hasValue()) {
3828: final GNode v$g$2 = (GNode) yyResult
3829: .semanticValue();
3830:
3831: yyValue = GNode.create("InstanceOfExpression",
3832: v$g$1, v$g$2);
3833:
3834: setLocation(yyValue, yyStart);
3835: return yyResult.createValue(yyValue, yyError);
3836: }
3837: } else {
3838: yyError = yyError.select("\"instanceof\" expected",
3839: yyBase);
3840: }
3841: }
3842:
3843: // Alternative <Base>.
3844:
3845: yyResult = pRelationalExpression(yyStart);
3846: yyError = yyResult.select(yyError);
3847: if (yyResult.hasValue()) {
3848: yyValue = (GNode) yyResult.semanticValue();
3849:
3850: setLocation(yyValue, yyStart);
3851: return yyResult.createValue(yyValue, yyError);
3852: }
3853:
3854: // Done.
3855: return yyError;
3856: }
3857:
3858: // =========================================================================
3859:
3860: /**
3861: * Parse nonterminal
3862: * xtc.xform.samples.javaproperty.JavaProperty.RelationalExpression.
3863: *
3864: * @param yyStart The index.
3865: * @return The result.
3866: * @throws IOException Signals an I/O error.
3867: */
3868: private Result pRelationalExpression(final int yyStart)
3869: throws IOException {
3870: JavaPropertyParserColumn yyColumn = (JavaPropertyParserColumn) column(yyStart);
3871: if (null == yyColumn.chunk2)
3872: yyColumn.chunk2 = new Chunk2();
3873: if (null == yyColumn.chunk2.fRelationalExpression)
3874: yyColumn.chunk2.fRelationalExpression = pRelationalExpression$1(yyStart);
3875: return yyColumn.chunk2.fRelationalExpression;
3876: }
3877:
3878: /** Actually parse xtc.xform.samples.javaproperty.JavaProperty.RelationalExpression. */
3879: private Result pRelationalExpression$1(final int yyStart)
3880: throws IOException {
3881:
3882: Result yyResult;
3883: int yyRepetition1;
3884: Pair yyRepValue1;
3885: GNode yyValue;
3886: ParseError yyError = ParseError.DUMMY;
3887:
3888: // Alternative <Base>.
3889:
3890: yyResult = pShiftExpression(yyStart);
3891: yyError = yyResult.select(yyError);
3892: if (yyResult.hasValue()) {
3893: final GNode v$4 = (GNode) yyResult.semanticValue();
3894:
3895: yyRepetition1 = yyResult.index;
3896: yyRepValue1 = Pair.EMPTY;
3897: while (true) {
3898:
3899: yyResult = pRelationalExpression$$Tail1(yyRepetition1);
3900: yyError = yyResult.select(yyError);
3901: if (yyResult.hasValue()) {
3902: final Action v$5 = (Action) yyResult
3903: .semanticValue();
3904:
3905: yyRepetition1 = yyResult.index;
3906: yyRepValue1 = new Pair(v$5, yyRepValue1);
3907: continue;
3908: }
3909: break;
3910: }
3911: { // Start scope for v$6.
3912: final Pair v$6 = yyRepValue1.reverse();
3913:
3914: yyValue = (GNode) apply(v$6, v$4, yyStart);
3915:
3916: setLocation(yyValue, yyStart);
3917: return new SemanticValue(yyValue, yyRepetition1,
3918: yyError);
3919: } // End scope for v$6.
3920: }
3921:
3922: // Done.
3923: return yyError;
3924: }
3925:
3926: // =========================================================================
3927:
3928: /**
3929: * Parse synthetic nonterminal
3930: * xtc.xform.samples.javaproperty.JavaProperty.RelationalExpression$$Tail1.
3931: *
3932: * @param yyStart The index.
3933: * @return The result.
3934: * @throws IOException Signals an I/O error.
3935: */
3936: private Result pRelationalExpression$$Tail1(final int yyStart)
3937: throws IOException {
3938:
3939: Result yyResult;
3940: Action yyValue;
3941: ParseError yyError = ParseError.DUMMY;
3942:
3943: // Alternative <Recursion>.
3944:
3945: yyResult = pRelationalOperator(yyStart);
3946: yyError = yyResult.select(yyError);
3947: if (yyResult.hasValue()) {
3948: final String v$g$2 = (String) yyResult.semanticValue();
3949:
3950: yyResult = pShiftExpression(yyResult.index);
3951: yyError = yyResult.select(yyError);
3952: if (yyResult.hasValue()) {
3953: final GNode v$g$3 = (GNode) yyResult.semanticValue();
3954:
3955: yyValue = new Action() {
3956: public Object run(Object v$1) {
3957: return GNode.create("RelationalExpression",
3958: v$1, v$g$2, v$g$3);
3959: }
3960: };
3961: return yyResult.createValue(yyValue, yyError);
3962: }
3963: }
3964:
3965: // Done.
3966: return yyError;
3967: }
3968:
3969: // =========================================================================
3970:
3971: /**
3972: * Parse nonterminal
3973: * xtc.xform.samples.javaproperty.JavaProperty.RelationalOperator.
3974: *
3975: * @param yyStart The index.
3976: * @return The result.
3977: * @throws IOException Signals an I/O error.
3978: */
3979: private Result pRelationalOperator(final int yyStart)
3980: throws IOException {
3981: Result yyResult;
3982: String yyValue;
3983: ParseError yyError = ParseError.DUMMY;
3984:
3985: // Alternative <Less>.
3986:
3987: yyResult = pSymbol(yyStart);
3988: yyError = yyResult.select(yyError);
3989: if (yyResult.hasValue("<")) {
3990: yyValue = "<";
3991:
3992: return yyResult.createValue(yyValue, yyError);
3993: }
3994:
3995: // Alternative <Greater>.
3996:
3997: yyResult = pSymbol(yyStart);
3998: yyError = yyResult.select(yyError);
3999: if (yyResult.hasValue(">")) {
4000: yyValue = ">";
4001:
4002: return yyResult.createValue(yyValue, yyError);
4003: }
4004:
4005: // Alternative <LessEqual>.
4006:
4007: yyResult = pSymbol(yyStart);
4008: yyError = yyResult.select(yyError);
4009: if (yyResult.hasValue("<=")) {
4010: yyValue = "<=";
4011:
4012: return yyResult.createValue(yyValue, yyError);
4013: }
4014:
4015: // Alternative <GreaterEqual>.
4016:
4017: yyResult = pSymbol(yyStart);
4018: yyError = yyResult.select(yyError);
4019: if (yyResult.hasValue(">=")) {
4020: yyValue = ">=";
4021:
4022: return yyResult.createValue(yyValue, yyError);
4023: }
4024:
4025: // Done.
4026: yyError = yyError.select("relational operator expected",
4027: yyStart);
4028: return yyError;
4029: }
4030:
4031: // =========================================================================
4032:
4033: /**
4034: * Parse nonterminal
4035: * xtc.xform.samples.javaproperty.JavaProperty.ShiftExpression.
4036: *
4037: * @param yyStart The index.
4038: * @return The result.
4039: * @throws IOException Signals an I/O error.
4040: */
4041: private Result pShiftExpression(final int yyStart)
4042: throws IOException {
4043: Result yyResult;
4044: int yyRepetition1;
4045: Pair yyRepValue1;
4046: GNode yyValue;
4047: ParseError yyError = ParseError.DUMMY;
4048:
4049: // Alternative <Base>.
4050:
4051: yyResult = pAdditiveExpression(yyStart);
4052: yyError = yyResult.select(yyError);
4053: if (yyResult.hasValue()) {
4054: final GNode v$4 = (GNode) yyResult.semanticValue();
4055:
4056: yyRepetition1 = yyResult.index;
4057: yyRepValue1 = Pair.EMPTY;
4058: while (true) {
4059:
4060: yyResult = pShiftExpression$$Tail1(yyRepetition1);
4061: yyError = yyResult.select(yyError);
4062: if (yyResult.hasValue()) {
4063: final Action v$5 = (Action) yyResult
4064: .semanticValue();
4065:
4066: yyRepetition1 = yyResult.index;
4067: yyRepValue1 = new Pair(v$5, yyRepValue1);
4068: continue;
4069: }
4070: break;
4071: }
4072: { // Start scope for v$6.
4073: final Pair v$6 = yyRepValue1.reverse();
4074:
4075: yyValue = (GNode) apply(v$6, v$4, yyStart);
4076:
4077: setLocation(yyValue, yyStart);
4078: return new SemanticValue(yyValue, yyRepetition1,
4079: yyError);
4080: } // End scope for v$6.
4081: }
4082:
4083: // Done.
4084: return yyError;
4085: }
4086:
4087: // =========================================================================
4088:
4089: /**
4090: * Parse synthetic nonterminal
4091: * xtc.xform.samples.javaproperty.JavaProperty.ShiftExpression$$Tail1.
4092: *
4093: * @param yyStart The index.
4094: * @return The result.
4095: * @throws IOException Signals an I/O error.
4096: */
4097: private Result pShiftExpression$$Tail1(final int yyStart)
4098: throws IOException {
4099:
4100: Result yyResult;
4101: Action yyValue;
4102: ParseError yyError = ParseError.DUMMY;
4103:
4104: // Alternative <Recursion>.
4105:
4106: yyResult = pShiftOperator(yyStart);
4107: yyError = yyResult.select(yyError);
4108: if (yyResult.hasValue()) {
4109: final String v$g$2 = (String) yyResult.semanticValue();
4110:
4111: yyResult = pAdditiveExpression(yyResult.index);
4112: yyError = yyResult.select(yyError);
4113: if (yyResult.hasValue()) {
4114: final GNode v$g$3 = (GNode) yyResult.semanticValue();
4115:
4116: yyValue = new Action() {
4117: public Object run(Object v$1) {
4118: return GNode.create("ShiftExpression", v$1,
4119: v$g$2, v$g$3);
4120: }
4121: };
4122: return yyResult.createValue(yyValue, yyError);
4123: }
4124: }
4125:
4126: // Done.
4127: return yyError;
4128: }
4129:
4130: // =========================================================================
4131:
4132: /**
4133: * Parse nonterminal
4134: * xtc.xform.samples.javaproperty.JavaProperty.ShiftOperator.
4135: *
4136: * @param yyStart The index.
4137: * @return The result.
4138: * @throws IOException Signals an I/O error.
4139: */
4140: private Result pShiftOperator(final int yyStart) throws IOException {
4141: Result yyResult;
4142: String yyValue;
4143: ParseError yyError = ParseError.DUMMY;
4144:
4145: // Alternative <Left>.
4146:
4147: yyResult = pSymbol(yyStart);
4148: yyError = yyResult.select(yyError);
4149: if (yyResult.hasValue("<<")) {
4150: yyValue = "<<";
4151:
4152: return yyResult.createValue(yyValue, yyError);
4153: }
4154:
4155: // Alternative <Right>.
4156:
4157: yyResult = pSymbol(yyStart);
4158: yyError = yyResult.select(yyError);
4159: if (yyResult.hasValue(">>")) {
4160: yyValue = ">>";
4161:
4162: return yyResult.createValue(yyValue, yyError);
4163: }
4164:
4165: // Alternative <UnsignedRight>.
4166:
4167: yyResult = pSymbol(yyStart);
4168: yyError = yyResult.select(yyError);
4169: if (yyResult.hasValue(">>>")) {
4170: yyValue = ">>>";
4171:
4172: return yyResult.createValue(yyValue, yyError);
4173: }
4174:
4175: // Done.
4176: yyError = yyError.select("shift operator expected", yyStart);
4177: return yyError;
4178: }
4179:
4180: // =========================================================================
4181:
4182: /**
4183: * Parse nonterminal
4184: * xtc.xform.samples.javaproperty.JavaProperty.AdditiveExpression.
4185: *
4186: * @param yyStart The index.
4187: * @return The result.
4188: * @throws IOException Signals an I/O error.
4189: */
4190: private Result pAdditiveExpression(final int yyStart)
4191: throws IOException {
4192: Result yyResult;
4193: int yyRepetition1;
4194: Pair yyRepValue1;
4195: GNode yyValue;
4196: ParseError yyError = ParseError.DUMMY;
4197:
4198: // Alternative <Base>.
4199:
4200: yyResult = pMultiplicativeExpression(yyStart);
4201: yyError = yyResult.select(yyError);
4202: if (yyResult.hasValue()) {
4203: final GNode v$4 = (GNode) yyResult.semanticValue();
4204:
4205: yyRepetition1 = yyResult.index;
4206: yyRepValue1 = Pair.EMPTY;
4207: while (true) {
4208:
4209: yyResult = pAdditiveExpression$$Tail1(yyRepetition1);
4210: yyError = yyResult.select(yyError);
4211: if (yyResult.hasValue()) {
4212: final Action v$5 = (Action) yyResult
4213: .semanticValue();
4214:
4215: yyRepetition1 = yyResult.index;
4216: yyRepValue1 = new Pair(v$5, yyRepValue1);
4217: continue;
4218: }
4219: break;
4220: }
4221: { // Start scope for v$6.
4222: final Pair v$6 = yyRepValue1.reverse();
4223:
4224: yyValue = (GNode) apply(v$6, v$4, yyStart);
4225:
4226: setLocation(yyValue, yyStart);
4227: return new SemanticValue(yyValue, yyRepetition1,
4228: yyError);
4229: } // End scope for v$6.
4230: }
4231:
4232: // Done.
4233: return yyError;
4234: }
4235:
4236: // =========================================================================
4237:
4238: /**
4239: * Parse synthetic nonterminal
4240: * xtc.xform.samples.javaproperty.JavaProperty.AdditiveExpression$$Tail1.
4241: *
4242: * @param yyStart The index.
4243: * @return The result.
4244: * @throws IOException Signals an I/O error.
4245: */
4246: private Result pAdditiveExpression$$Tail1(final int yyStart)
4247: throws IOException {
4248:
4249: Result yyResult;
4250: Action yyValue;
4251: ParseError yyError = ParseError.DUMMY;
4252:
4253: // Alternative <Recursion>.
4254:
4255: yyResult = pAdditiveOperator(yyStart);
4256: yyError = yyResult.select(yyError);
4257: if (yyResult.hasValue()) {
4258: final String v$g$2 = (String) yyResult.semanticValue();
4259:
4260: yyResult = pMultiplicativeExpression(yyResult.index);
4261: yyError = yyResult.select(yyError);
4262: if (yyResult.hasValue()) {
4263: final GNode v$g$3 = (GNode) yyResult.semanticValue();
4264:
4265: yyValue = new Action() {
4266: public Object run(Object v$1) {
4267: return GNode.create("AdditiveExpression", v$1,
4268: v$g$2, v$g$3);
4269: }
4270: };
4271: return yyResult.createValue(yyValue, yyError);
4272: }
4273: }
4274:
4275: // Done.
4276: return yyError;
4277: }
4278:
4279: // =========================================================================
4280:
4281: /**
4282: * Parse nonterminal
4283: * xtc.xform.samples.javaproperty.JavaProperty.AdditiveOperator.
4284: *
4285: * @param yyStart The index.
4286: * @return The result.
4287: * @throws IOException Signals an I/O error.
4288: */
4289: private Result pAdditiveOperator(final int yyStart)
4290: throws IOException {
4291: Result yyResult;
4292: String yyValue;
4293: ParseError yyError = ParseError.DUMMY;
4294:
4295: // Alternative <Plus>.
4296:
4297: yyResult = pSymbol(yyStart);
4298: yyError = yyResult.select(yyError);
4299: if (yyResult.hasValue("+")) {
4300: yyValue = "+";
4301:
4302: return yyResult.createValue(yyValue, yyError);
4303: }
4304:
4305: // Alternative <Minus>.
4306:
4307: yyResult = pSymbol(yyStart);
4308: yyError = yyResult.select(yyError);
4309: if (yyResult.hasValue("-")) {
4310: yyValue = "-";
4311:
4312: return yyResult.createValue(yyValue, yyError);
4313: }
4314:
4315: // Done.
4316: yyError = yyError.select("additive operator expected", yyStart);
4317: return yyError;
4318: }
4319:
4320: // =========================================================================
4321:
4322: /**
4323: * Parse nonterminal
4324: * xtc.xform.samples.javaproperty.JavaProperty.MultiplicativeExpression.
4325: *
4326: * @param yyStart The index.
4327: * @return The result.
4328: * @throws IOException Signals an I/O error.
4329: */
4330: private Result pMultiplicativeExpression(final int yyStart)
4331: throws IOException {
4332:
4333: Result yyResult;
4334: int yyRepetition1;
4335: Pair yyRepValue1;
4336: GNode yyValue;
4337: ParseError yyError = ParseError.DUMMY;
4338:
4339: // Alternative <Base>.
4340:
4341: yyResult = pUnaryExpression(yyStart);
4342: yyError = yyResult.select(yyError);
4343: if (yyResult.hasValue()) {
4344: final GNode v$4 = (GNode) yyResult.semanticValue();
4345:
4346: yyRepetition1 = yyResult.index;
4347: yyRepValue1 = Pair.EMPTY;
4348: while (true) {
4349:
4350: yyResult = pMultiplicativeExpression$$Tail1(yyRepetition1);
4351: yyError = yyResult.select(yyError);
4352: if (yyResult.hasValue()) {
4353: final Action v$5 = (Action) yyResult
4354: .semanticValue();
4355:
4356: yyRepetition1 = yyResult.index;
4357: yyRepValue1 = new Pair(v$5, yyRepValue1);
4358: continue;
4359: }
4360: break;
4361: }
4362: { // Start scope for v$6.
4363: final Pair v$6 = yyRepValue1.reverse();
4364:
4365: yyValue = (GNode) apply(v$6, v$4, yyStart);
4366:
4367: setLocation(yyValue, yyStart);
4368: return new SemanticValue(yyValue, yyRepetition1,
4369: yyError);
4370: } // End scope for v$6.
4371: }
4372:
4373: // Done.
4374: return yyError;
4375: }
4376:
4377: // =========================================================================
4378:
4379: /**
4380: * Parse synthetic nonterminal
4381: * xtc.xform.samples.javaproperty.JavaProperty.MultiplicativeExpression$$Tail1.
4382: *
4383: * @param yyStart The index.
4384: * @return The result.
4385: * @throws IOException Signals an I/O error.
4386: */
4387: private Result pMultiplicativeExpression$$Tail1(final int yyStart)
4388: throws IOException {
4389:
4390: Result yyResult;
4391: Action yyValue;
4392: ParseError yyError = ParseError.DUMMY;
4393:
4394: // Alternative <Times>.
4395:
4396: yyResult = pMultiplicativeOperator(yyStart);
4397: yyError = yyResult.select(yyError);
4398: if (yyResult.hasValue()) {
4399: final String v$g$2 = (String) yyResult.semanticValue();
4400:
4401: yyResult = pUnaryExpression(yyResult.index);
4402: yyError = yyResult.select(yyError);
4403: if (yyResult.hasValue()) {
4404: final GNode v$g$3 = (GNode) yyResult.semanticValue();
4405:
4406: yyValue = new Action() {
4407: public Object run(Object v$1) {
4408: return GNode.create("MultiplicativeExpression",
4409: v$1, v$g$2, v$g$3);
4410: }
4411: };
4412: return yyResult.createValue(yyValue, yyError);
4413: }
4414: }
4415:
4416: // Done.
4417: return yyError;
4418: }
4419:
4420: // =========================================================================
4421:
4422: /**
4423: * Parse nonterminal
4424: * xtc.xform.samples.javaproperty.JavaProperty.MultiplicativeOperator.
4425: *
4426: * @param yyStart The index.
4427: * @return The result.
4428: * @throws IOException Signals an I/O error.
4429: */
4430: private Result pMultiplicativeOperator(final int yyStart)
4431: throws IOException {
4432:
4433: Result yyResult;
4434: String yyValue;
4435: ParseError yyError = ParseError.DUMMY;
4436:
4437: // Alternative <Times>.
4438:
4439: yyResult = pSymbol(yyStart);
4440: yyError = yyResult.select(yyError);
4441: if (yyResult.hasValue("*")) {
4442: yyValue = "*";
4443:
4444: return yyResult.createValue(yyValue, yyError);
4445: }
4446:
4447: // Alternative <Over>.
4448:
4449: yyResult = pSymbol(yyStart);
4450: yyError = yyResult.select(yyError);
4451: if (yyResult.hasValue("/")) {
4452: yyValue = "/";
4453:
4454: return yyResult.createValue(yyValue, yyError);
4455: }
4456:
4457: // Alternative <Modulo>.
4458:
4459: yyResult = pSymbol(yyStart);
4460: yyError = yyResult.select(yyError);
4461: if (yyResult.hasValue("%")) {
4462: yyValue = "%";
4463:
4464: return yyResult.createValue(yyValue, yyError);
4465: }
4466:
4467: // Done.
4468: yyError = yyError.select("multiplicative operator expected",
4469: yyStart);
4470: return yyError;
4471: }
4472:
4473: // =========================================================================
4474:
4475: /**
4476: * Parse nonterminal
4477: * xtc.xform.samples.javaproperty.JavaProperty.UnaryExpression.
4478: *
4479: * @param yyStart The index.
4480: * @return The result.
4481: * @throws IOException Signals an I/O error.
4482: */
4483: private Result pUnaryExpression(final int yyStart)
4484: throws IOException {
4485: Result yyResult;
4486: GNode yyValue;
4487: ParseError yyError = ParseError.DUMMY;
4488:
4489: // Alternative <Plus>.
4490:
4491: yyResult = pSymbol(yyStart);
4492: yyError = yyResult.select(yyError);
4493: if (yyResult.hasValue("+")) {
4494: final String v$g$1 = "+";
4495:
4496: yyResult = pUnaryExpression(yyResult.index);
4497: yyError = yyResult.select(yyError);
4498: if (yyResult.hasValue()) {
4499: final GNode v$g$2 = (GNode) yyResult.semanticValue();
4500:
4501: yyValue = GNode.create("UnaryExpression", v$g$1, v$g$2);
4502:
4503: setLocation(yyValue, yyStart);
4504: return yyResult.createValue(yyValue, yyError);
4505: }
4506: }
4507:
4508: // Alternative <Minus>.
4509:
4510: yyResult = pSymbol(yyStart);
4511: yyError = yyResult.select(yyError);
4512: if (yyResult.hasValue("-")) {
4513: final String v$g$3 = "-";
4514:
4515: yyResult = pUnaryExpression(yyResult.index);
4516: yyError = yyResult.select(yyError);
4517: if (yyResult.hasValue()) {
4518: final GNode v$g$4 = (GNode) yyResult.semanticValue();
4519:
4520: yyValue = GNode.create("UnaryExpression", v$g$3, v$g$4);
4521:
4522: setLocation(yyValue, yyStart);
4523: return yyResult.createValue(yyValue, yyError);
4524: }
4525: }
4526:
4527: // Alternative <Increment>.
4528:
4529: yyResult = pSymbol(yyStart);
4530: yyError = yyResult.select(yyError);
4531: if (yyResult.hasValue("++")) {
4532: final String v$g$5 = "++";
4533:
4534: yyResult = pUnaryExpression(yyResult.index);
4535: yyError = yyResult.select(yyError);
4536: if (yyResult.hasValue()) {
4537: final GNode v$g$6 = (GNode) yyResult.semanticValue();
4538:
4539: yyValue = GNode.create("UnaryExpression", v$g$5, v$g$6);
4540:
4541: setLocation(yyValue, yyStart);
4542: return yyResult.createValue(yyValue, yyError);
4543: }
4544: }
4545:
4546: // Alternative <Decrement>.
4547:
4548: yyResult = pSymbol(yyStart);
4549: yyError = yyResult.select(yyError);
4550: if (yyResult.hasValue("--")) {
4551: final String v$g$7 = "--";
4552:
4553: yyResult = pUnaryExpression(yyResult.index);
4554: yyError = yyResult.select(yyError);
4555: if (yyResult.hasValue()) {
4556: final GNode v$g$8 = (GNode) yyResult.semanticValue();
4557:
4558: yyValue = GNode.create("UnaryExpression", v$g$7, v$g$8);
4559:
4560: setLocation(yyValue, yyStart);
4561: return yyResult.createValue(yyValue, yyError);
4562: }
4563: }
4564:
4565: // Alternative <Base>.
4566:
4567: yyResult = pUnaryExpressionNotPlusMinus(yyStart);
4568: yyError = yyResult.select(yyError);
4569: if (yyResult.hasValue()) {
4570: yyValue = (GNode) yyResult.semanticValue();
4571:
4572: setLocation(yyValue, yyStart);
4573: return yyResult.createValue(yyValue, yyError);
4574: }
4575:
4576: // Done.
4577: yyError = yyError.select("unary expression expected", yyStart);
4578: return yyError;
4579: }
4580:
4581: // =========================================================================
4582:
4583: /**
4584: * Parse nonterminal
4585: * xtc.xform.samples.javaproperty.JavaProperty.UnaryExpressionNotPlusMinus.
4586: *
4587: * @param yyStart The index.
4588: * @return The result.
4589: * @throws IOException Signals an I/O error.
4590: */
4591: private Result pUnaryExpressionNotPlusMinus(final int yyStart)
4592: throws IOException {
4593:
4594: Result yyResult;
4595: int yyBase;
4596: int yyOption1;
4597: GNode yyOpValue1;
4598: GNode yyValue;
4599: ParseError yyError = ParseError.DUMMY;
4600:
4601: // Alternative 1.
4602:
4603: yyResult = pSymbol(yyStart);
4604: yyError = yyResult.select(yyError);
4605: if (yyResult.hasValue("~")) {
4606:
4607: yyResult = pUnaryExpression(yyResult.index);
4608: yyError = yyResult.select(yyError);
4609: if (yyResult.hasValue()) {
4610: final GNode v$g$1 = (GNode) yyResult.semanticValue();
4611:
4612: yyValue = GNode.create("BitwiseNegationExpression",
4613: v$g$1);
4614:
4615: setLocation(yyValue, yyStart);
4616: return yyResult.createValue(yyValue, yyError);
4617: }
4618: }
4619:
4620: // Alternative 2.
4621:
4622: yyResult = pSymbol(yyStart);
4623: yyError = yyResult.select(yyError);
4624: if (yyResult.hasValue("!")) {
4625:
4626: yyResult = pUnaryExpression(yyResult.index);
4627: yyError = yyResult.select(yyError);
4628: if (yyResult.hasValue()) {
4629: final GNode v$g$1 = (GNode) yyResult.semanticValue();
4630:
4631: yyValue = GNode.create("LogicalNegationExpression",
4632: v$g$1);
4633:
4634: setLocation(yyValue, yyStart);
4635: return yyResult.createValue(yyValue, yyError);
4636: }
4637: }
4638:
4639: // Alternative 3.
4640:
4641: yyResult = pSymbol(yyStart);
4642: yyError = yyResult.select(yyError);
4643: if (yyResult.hasValue("(")) {
4644:
4645: final int yyChoice1 = yyResult.index;
4646:
4647: // Nested alternative 1.
4648:
4649: yyResult = pBasicType(yyChoice1);
4650: yyError = yyResult.select(yyError);
4651: if (yyResult.hasValue()) {
4652: final String v$g$1 = (String) yyResult.semanticValue();
4653:
4654: yyOption1 = yyResult.index;
4655: yyOpValue1 = null;
4656:
4657: yyResult = pDimensions(yyOption1);
4658: yyError = yyResult.select(yyError);
4659: if (yyResult.hasValue()) {
4660: final GNode v$el$1 = (GNode) yyResult
4661: .semanticValue();
4662:
4663: yyOption1 = yyResult.index;
4664: yyOpValue1 = v$el$1;
4665: }
4666: { // Start scope for v$g$2.
4667: final GNode v$g$2 = yyOpValue1;
4668:
4669: yyBase = yyOption1;
4670: yyResult = pSymbol(yyBase);
4671: yyError = yyResult.select(yyError);
4672: if (yyResult.hasValue(")")) {
4673:
4674: yyResult = pUnaryExpression(yyResult.index);
4675: yyError = yyResult.select(yyError);
4676: if (yyResult.hasValue()) {
4677: final GNode v$g$3 = (GNode) yyResult
4678: .semanticValue();
4679:
4680: yyValue = GNode.create(
4681: "BasicCastExpression", v$g$1,
4682: v$g$2, v$g$3);
4683:
4684: setLocation(yyValue, yyStart);
4685: return yyResult.createValue(yyValue,
4686: yyError);
4687: }
4688: } else {
4689: yyError = yyError.select("\")\" expected",
4690: yyBase);
4691: }
4692: } // End scope for v$g$2.
4693: }
4694:
4695: // Nested alternative 2.
4696:
4697: yyResult = pType(yyChoice1);
4698: yyError = yyResult.select(yyError);
4699: if (yyResult.hasValue()) {
4700: final GNode v$g$1 = (GNode) yyResult.semanticValue();
4701:
4702: yyBase = yyResult.index;
4703: yyResult = pSymbol(yyBase);
4704: yyError = yyResult.select(yyError);
4705: if (yyResult.hasValue(")")) {
4706:
4707: yyResult = pUnaryExpressionNotPlusMinus(yyResult.index);
4708: yyError = yyResult.select(yyError);
4709: if (yyResult.hasValue()) {
4710: final GNode v$g$2 = (GNode) yyResult
4711: .semanticValue();
4712:
4713: yyValue = GNode.create("CastExpression", v$g$1,
4714: v$g$2);
4715:
4716: setLocation(yyValue, yyStart);
4717: return yyResult.createValue(yyValue, yyError);
4718: }
4719: } else {
4720: yyError = yyError.select("\")\" expected", yyBase);
4721: }
4722: }
4723: }
4724:
4725: // Alternative <Base>.
4726:
4727: yyResult = pPostfixExpression(yyStart);
4728: yyError = yyResult.select(yyError);
4729: if (yyResult.hasValue()) {
4730: yyValue = (GNode) yyResult.semanticValue();
4731:
4732: setLocation(yyValue, yyStart);
4733: return yyResult.createValue(yyValue, yyError);
4734: }
4735:
4736: // Done.
4737: yyError = yyError.select(
4738: "unary expression not plus minus expected", yyStart);
4739: return yyError;
4740: }
4741:
4742: // =========================================================================
4743:
4744: /**
4745: * Parse nonterminal
4746: * xtc.xform.samples.javaproperty.JavaProperty.PostfixExpression.
4747: *
4748: * @param yyStart The index.
4749: * @return The result.
4750: * @throws IOException Signals an I/O error.
4751: */
4752: private Result pPostfixExpression(final int yyStart)
4753: throws IOException {
4754: Result yyResult;
4755: int yyRepetition1;
4756: boolean yyRepeated1;
4757: Pair yyRepValue1;
4758: GNode yyValue;
4759: ParseError yyError = ParseError.DUMMY;
4760:
4761: // Alternative <PostFix>.
4762:
4763: yyResult = pPrimaryExpression(yyStart);
4764: yyError = yyResult.select(yyError);
4765: if (yyResult.hasValue()) {
4766: final GNode v$g$1 = (GNode) yyResult.semanticValue();
4767:
4768: yyRepetition1 = yyResult.index;
4769: yyRepeated1 = false;
4770: yyRepValue1 = Pair.EMPTY;
4771: while (true) {
4772:
4773: yyResult = pPostfixExpressionTail(yyRepetition1);
4774: yyError = yyResult.select(yyError);
4775: if (yyResult.hasValue()) {
4776: final GNode v$el$1 = (GNode) yyResult
4777: .semanticValue();
4778:
4779: yyRepetition1 = yyResult.index;
4780: yyRepeated1 = true;
4781: yyRepValue1 = new Pair(v$el$1, yyRepValue1);
4782: continue;
4783: }
4784: break;
4785: }
4786:
4787: if (yyRepeated1) {
4788: final Pair v$g$2 = yyRepValue1.reverse();
4789:
4790: yyValue = GNode.create("PostfixExpression", v$g$1,
4791: (Pair) v$g$2);
4792:
4793: setLocation(yyValue, yyStart);
4794: return new SemanticValue(yyValue, yyRepetition1,
4795: yyError);
4796: }
4797: }
4798:
4799: // Alternative <Base>.
4800:
4801: yyResult = pPrimaryExpression(yyStart);
4802: yyError = yyResult.select(yyError);
4803: if (yyResult.hasValue()) {
4804: yyValue = (GNode) yyResult.semanticValue();
4805:
4806: setLocation(yyValue, yyStart);
4807: return yyResult.createValue(yyValue, yyError);
4808: }
4809:
4810: // Done.
4811: return yyError;
4812: }
4813:
4814: // =========================================================================
4815:
4816: /**
4817: * Parse nonterminal
4818: * xtc.xform.samples.javaproperty.JavaProperty.PostfixExpressionTail.
4819: *
4820: * @param yyStart The index.
4821: * @return The result.
4822: * @throws IOException Signals an I/O error.
4823: */
4824: private Result pPostfixExpressionTail(final int yyStart)
4825: throws IOException {
4826:
4827: Result yyResult;
4828: int yyBase;
4829: int yyOption1;
4830: GNode yyOpValue1;
4831: GNode yyValue;
4832: ParseError yyError = ParseError.DUMMY;
4833:
4834: // Alternative 1.
4835:
4836: yyResult = pSymbol(yyStart);
4837: yyError = yyResult.select(yyError);
4838: if (yyResult.hasValue("[")) {
4839:
4840: yyOption1 = yyResult.index;
4841: yyOpValue1 = null;
4842:
4843: yyResult = pExpression(yyOption1);
4844: yyError = yyResult.select(yyError);
4845: if (yyResult.hasValue()) {
4846: final GNode v$el$1 = (GNode) yyResult.semanticValue();
4847:
4848: yyOption1 = yyResult.index;
4849: yyOpValue1 = v$el$1;
4850: }
4851: { // Start scope for v$g$1.
4852: final GNode v$g$1 = yyOpValue1;
4853:
4854: yyBase = yyOption1;
4855: yyResult = pSymbol(yyBase);
4856: yyError = yyResult.select(yyError);
4857: if (yyResult.hasValue("]")) {
4858:
4859: yyValue = GNode.create("SubscriptTail", v$g$1);
4860:
4861: setLocation(yyValue, yyStart);
4862: return yyResult.createValue(yyValue, yyError);
4863: } else {
4864: yyError = yyError.select("\"]\" expected", yyBase);
4865: }
4866: } // End scope for v$g$1.
4867: }
4868:
4869: // Alternative <Arguments>.
4870:
4871: yyResult = pArguments(yyStart);
4872: yyError = yyResult.select(yyError);
4873: if (yyResult.hasValue()) {
4874: yyValue = (GNode) yyResult.semanticValue();
4875:
4876: setLocation(yyValue, yyStart);
4877: return yyResult.createValue(yyValue, yyError);
4878: }
4879:
4880: // Alternative 3.
4881:
4882: yyResult = pSymbol(yyStart);
4883: yyError = yyResult.select(yyError);
4884: if (yyResult.hasValue(".")) {
4885:
4886: final int yyChoice1 = yyResult.index;
4887:
4888: // Nested alternative 1.
4889:
4890: yyResult = pPrimaryExpression(yyChoice1);
4891: yyError = yyResult.select(yyError);
4892: if (yyResult.hasValue()) {
4893: final GNode v$g$1 = (GNode) yyResult.semanticValue();
4894:
4895: yyValue = GNode.create("SelectionTail", v$g$1);
4896:
4897: setLocation(yyValue, yyStart);
4898: return yyResult.createValue(yyValue, yyError);
4899: }
4900:
4901: // Nested alternative 2.
4902:
4903: yyBase = yyChoice1;
4904: yyResult = pWord(yyBase);
4905: yyError = yyResult.select(yyError);
4906: if (yyResult.hasValue("class")) {
4907:
4908: yyValue = GNode.create("ClassSelectionTail", false);
4909:
4910: setLocation(yyValue, yyStart);
4911: return yyResult.createValue(yyValue, yyError);
4912: } else {
4913: yyError = yyError.select("\"class\" expected", yyBase);
4914: }
4915: }
4916:
4917: // Alternative 4.
4918:
4919: yyResult = pSymbol(yyStart);
4920: yyError = yyResult.select(yyError);
4921: if (yyResult.hasValue("++")) {
4922:
4923: yyValue = GNode.create("PostincrementTail", false);
4924:
4925: setLocation(yyValue, yyStart);
4926: return yyResult.createValue(yyValue, yyError);
4927: }
4928:
4929: // Alternative 5.
4930:
4931: yyResult = pSymbol(yyStart);
4932: yyError = yyResult.select(yyError);
4933: if (yyResult.hasValue("--")) {
4934:
4935: yyValue = GNode.create("PostdecrementTail", false);
4936:
4937: setLocation(yyValue, yyStart);
4938: return yyResult.createValue(yyValue, yyError);
4939: }
4940:
4941: // Done.
4942: yyError = yyError.select("postfix expression tail expected",
4943: yyStart);
4944: return yyError;
4945: }
4946:
4947: // =========================================================================
4948:
4949: /**
4950: * Parse nonterminal
4951: * xtc.xform.samples.javaproperty.JavaProperty.PrimaryExpression.
4952: *
4953: * @param yyStart The index.
4954: * @return The result.
4955: * @throws IOException Signals an I/O error.
4956: */
4957: private Result pPrimaryExpression(final int yyStart)
4958: throws IOException {
4959: Result yyResult;
4960: int yyBase;
4961: int yyOption1;
4962: GNode yyOpValue1;
4963: GNode yyValue;
4964: ParseError yyError = ParseError.DUMMY;
4965:
4966: // Alternative <Literal>.
4967:
4968: yyResult = pLiteral(yyStart);
4969: yyError = yyResult.select(yyError);
4970: if (yyResult.hasValue()) {
4971: yyValue = (GNode) yyResult.semanticValue();
4972:
4973: setLocation(yyValue, yyStart);
4974: return yyResult.createValue(yyValue, yyError);
4975: }
4976:
4977: // Alternative 2.
4978:
4979: yyResult = pIdentifier(yyStart);
4980: yyError = yyResult.select(yyError);
4981: if (yyResult.hasValue()) {
4982: final String v$g$1 = (String) yyResult.semanticValue();
4983:
4984: yyValue = GNode.create("PrimaryIdentifier", v$g$1);
4985:
4986: setLocation(yyValue, yyStart);
4987: return yyResult.createValue(yyValue, yyError);
4988: }
4989:
4990: // Alternative 3.
4991:
4992: yyResult = pSymbol(yyStart);
4993: yyError = yyResult.select(yyError);
4994: if (yyResult.hasValue("(")) {
4995:
4996: yyResult = pExpression(yyResult.index);
4997: yyError = yyResult.select(yyError);
4998: if (yyResult.hasValue()) {
4999: yyValue = (GNode) yyResult.semanticValue();
5000:
5001: yyBase = yyResult.index;
5002: yyResult = pSymbol(yyBase);
5003: yyError = yyResult.select(yyError);
5004: if (yyResult.hasValue(")")) {
5005:
5006: setLocation(yyValue, yyStart);
5007: return yyResult.createValue(yyValue, yyError);
5008: } else {
5009: yyError = yyError.select("\")\" expected", yyBase);
5010: }
5011: }
5012: }
5013:
5014: // Alternative 4.
5015:
5016: yyResult = pWord(yyStart);
5017: yyError = yyResult.select(yyError);
5018: if (yyResult.hasValue("this")) {
5019:
5020: yyValue = GNode.create("ThisExpression", false);
5021:
5022: setLocation(yyValue, yyStart);
5023: return yyResult.createValue(yyValue, yyError);
5024: }
5025:
5026: // Alternative 5.
5027:
5028: yyResult = pWord(yyStart);
5029: yyError = yyResult.select(yyError);
5030: if (yyResult.hasValue("super")) {
5031:
5032: yyValue = GNode.create("SuperExpression", false);
5033:
5034: setLocation(yyValue, yyStart);
5035: return yyResult.createValue(yyValue, yyError);
5036: }
5037:
5038: // Alternative 6.
5039:
5040: yyResult = pWord(yyStart);
5041: yyError = yyResult.select(yyError);
5042: if (yyResult.hasValue("new")) {
5043:
5044: final int yyChoice1 = yyResult.index;
5045:
5046: // Nested alternative 1.
5047:
5048: yyResult = pQualifiedIdentifier(yyChoice1);
5049: yyError = yyResult.select(yyError);
5050: if (yyResult.hasValue()) {
5051: final GNode v$g$1 = (GNode) yyResult.semanticValue();
5052:
5053: yyResult = pArguments(yyResult.index);
5054: yyError = yyResult.select(yyError);
5055: if (yyResult.hasValue()) {
5056: final GNode v$g$2 = (GNode) yyResult
5057: .semanticValue();
5058:
5059: yyOption1 = yyResult.index;
5060: yyOpValue1 = null;
5061:
5062: yyResult = pClassBody(yyOption1);
5063: yyError = yyResult.select(yyError);
5064: if (yyResult.hasValue()) {
5065: final GNode v$el$1 = (GNode) yyResult
5066: .semanticValue();
5067:
5068: yyOption1 = yyResult.index;
5069: yyOpValue1 = v$el$1;
5070: }
5071: { // Start scope for v$g$3.
5072: final GNode v$g$3 = yyOpValue1;
5073:
5074: yyValue = GNode.create("NewExpression", v$g$1,
5075: v$g$2, v$g$3);
5076:
5077: setLocation(yyValue, yyStart);
5078: return new SemanticValue(yyValue, yyOption1,
5079: yyError);
5080: } // End scope for v$g$3.
5081: }
5082: }
5083:
5084: // Nested alternative 2.
5085:
5086: yyResult = pTypeName(yyChoice1);
5087: yyError = yyResult.select(yyError);
5088: if (yyResult.hasValue()) {
5089: final GNode v$g$4 = (GNode) yyResult.semanticValue();
5090:
5091: final int yyChoice2 = yyResult.index;
5092:
5093: // Nested alternative 1.
5094:
5095: yyResult = pConcreteDimensions(yyChoice2);
5096: yyError = yyResult.select(yyError);
5097: if (yyResult.hasValue()) {
5098: final GNode v$g$5 = (GNode) yyResult
5099: .semanticValue();
5100:
5101: yyOption1 = yyResult.index;
5102: yyOpValue1 = null;
5103:
5104: yyResult = pDimensions(yyOption1);
5105: yyError = yyResult.select(yyError);
5106: if (yyResult.hasValue()) {
5107: final GNode v$el$2 = (GNode) yyResult
5108: .semanticValue();
5109:
5110: yyOption1 = yyResult.index;
5111: yyOpValue1 = v$el$2;
5112: }
5113: { // Start scope for v$g$6.
5114: final GNode v$g$6 = yyOpValue1;
5115:
5116: yyValue = GNode.create("NewExpression", v$g$4,
5117: v$g$5, v$g$6);
5118:
5119: setLocation(yyValue, yyStart);
5120: return new SemanticValue(yyValue, yyOption1,
5121: yyError);
5122: } // End scope for v$g$6.
5123: }
5124:
5125: // Nested alternative 2.
5126:
5127: yyOption1 = yyChoice2;
5128: yyOpValue1 = null;
5129:
5130: yyResult = pDimensions(yyOption1);
5131: yyError = yyResult.select(yyError);
5132: if (yyResult.hasValue()) {
5133: final GNode v$el$3 = (GNode) yyResult
5134: .semanticValue();
5135:
5136: yyOption1 = yyResult.index;
5137: yyOpValue1 = v$el$3;
5138: }
5139: { // Start scope for v$g$7.
5140: final GNode v$g$7 = yyOpValue1;
5141:
5142: yyResult = pArrayInitializer(yyOption1);
5143: yyError = yyResult.select(yyError);
5144: if (yyResult.hasValue()) {
5145: final GNode v$g$8 = (GNode) yyResult
5146: .semanticValue();
5147:
5148: yyValue = GNode.create("NewExpression", v$g$4,
5149: v$g$7, v$g$8);
5150:
5151: setLocation(yyValue, yyStart);
5152: return yyResult.createValue(yyValue, yyError);
5153: }
5154: } // End scope for v$g$7.
5155: }
5156: }
5157:
5158: // Alternative 7.
5159:
5160: yyResult = pWord(yyStart);
5161: yyError = yyResult.select(yyError);
5162: if (yyResult.hasValue("void")) {
5163:
5164: yyBase = yyResult.index;
5165: yyResult = pSymbol(yyBase);
5166: yyError = yyResult.select(yyError);
5167: if (yyResult.hasValue(".")) {
5168:
5169: yyBase = yyResult.index;
5170: yyResult = pWord(yyBase);
5171: yyError = yyResult.select(yyError);
5172: if (yyResult.hasValue("class")) {
5173:
5174: yyValue = GNode
5175: .create("VoidClassExpression", false);
5176:
5177: setLocation(yyValue, yyStart);
5178: return yyResult.createValue(yyValue, yyError);
5179: } else {
5180: yyError = yyError.select("\"class\" expected",
5181: yyBase);
5182: }
5183: } else {
5184: yyError = yyError.select("\".\" expected", yyBase);
5185: }
5186: }
5187:
5188: // Done.
5189: yyError = yyError
5190: .select("primary expression expected", yyStart);
5191: return yyError;
5192: }
5193:
5194: // =========================================================================
5195:
5196: /**
5197: * Parse nonterminal
5198: * xtc.xform.samples.javaproperty.JavaProperty.ConcreteDimensions.
5199: *
5200: * @param yyStart The index.
5201: * @return The result.
5202: * @throws IOException Signals an I/O error.
5203: */
5204: private Result pConcreteDimensions(final int yyStart)
5205: throws IOException {
5206: Result yyResult;
5207: int yyRepetition1;
5208: boolean yyRepeated1;
5209: Pair yyRepValue1;
5210: GNode yyValue;
5211: ParseError yyError = ParseError.DUMMY;
5212:
5213: // Alternative 1.
5214:
5215: yyRepetition1 = yyStart;
5216: yyRepeated1 = false;
5217: yyRepValue1 = Pair.EMPTY;
5218: while (true) {
5219:
5220: yyResult = pConcreteDimension(yyRepetition1);
5221: yyError = yyResult.select(yyError);
5222: if (yyResult.hasValue()) {
5223: final GNode v$el$1 = (GNode) yyResult.semanticValue();
5224:
5225: yyRepetition1 = yyResult.index;
5226: yyRepeated1 = true;
5227: yyRepValue1 = new Pair(v$el$1, yyRepValue1);
5228: continue;
5229: }
5230: break;
5231: }
5232:
5233: if (yyRepeated1) {
5234: final Pair v$g$1 = yyRepValue1.reverse();
5235:
5236: yyValue = GNode.create("ConcreteDimensions", (Pair) v$g$1);
5237:
5238: setLocation(yyValue, yyStart);
5239: return new SemanticValue(yyValue, yyRepetition1, yyError);
5240: }
5241:
5242: // Done.
5243: return yyError;
5244: }
5245:
5246: // =========================================================================
5247:
5248: /**
5249: * Parse nonterminal
5250: * xtc.xform.samples.javaproperty.JavaProperty.ConcreteDimension.
5251: *
5252: * @param yyStart The index.
5253: * @return The result.
5254: * @throws IOException Signals an I/O error.
5255: */
5256: private Result pConcreteDimension(final int yyStart)
5257: throws IOException {
5258: Result yyResult;
5259: int yyBase;
5260: GNode yyValue;
5261: ParseError yyError = ParseError.DUMMY;
5262:
5263: // Alternative 1.
5264:
5265: yyResult = pSymbol(yyStart);
5266: yyError = yyResult.select(yyError);
5267: if (yyResult.hasValue("[")) {
5268:
5269: yyResult = pExpression(yyResult.index);
5270: yyError = yyResult.select(yyError);
5271: if (yyResult.hasValue()) {
5272: yyValue = (GNode) yyResult.semanticValue();
5273:
5274: yyBase = yyResult.index;
5275: yyResult = pSymbol(yyBase);
5276: yyError = yyResult.select(yyError);
5277: if (yyResult.hasValue("]")) {
5278:
5279: setLocation(yyValue, yyStart);
5280: return yyResult.createValue(yyValue, yyError);
5281: } else {
5282: yyError = yyError.select("\"]\" expected", yyBase);
5283: }
5284: }
5285: }
5286:
5287: // Done.
5288: yyError = yyError
5289: .select("concrete dimension expected", yyStart);
5290: return yyError;
5291: }
5292:
5293: // =========================================================================
5294:
5295: /**
5296: * Parse nonterminal xtc.xform.samples.javaproperty.JavaProperty.Arguments.
5297: *
5298: * @param yyStart The index.
5299: * @return The result.
5300: * @throws IOException Signals an I/O error.
5301: */
5302: private Result pArguments(final int yyStart) throws IOException {
5303: Result yyResult;
5304: int yyBase;
5305: int yyRepetition1;
5306: Pair yyRepValue1;
5307: GNode yyValue;
5308: ParseError yyError = ParseError.DUMMY;
5309:
5310: // Alternative 1.
5311:
5312: yyResult = pSymbol(yyStart);
5313: yyError = yyResult.select(yyError);
5314: if (yyResult.hasValue("(")) {
5315:
5316: final int yyChoice1 = yyResult.index;
5317:
5318: // Nested alternative 1.
5319:
5320: yyResult = pExpression(yyChoice1);
5321: yyError = yyResult.select(yyError);
5322: if (yyResult.hasValue()) {
5323: final GNode v$g$1 = (GNode) yyResult.semanticValue();
5324:
5325: yyRepetition1 = yyResult.index;
5326: yyRepValue1 = Pair.EMPTY;
5327: while (true) {
5328:
5329: yyBase = yyRepetition1;
5330: yyResult = pSymbol(yyBase);
5331: yyError = yyResult.select(yyError);
5332: if (yyResult.hasValue(",")) {
5333:
5334: yyResult = pExpression(yyResult.index);
5335: yyError = yyResult.select(yyError);
5336: if (yyResult.hasValue()) {
5337: final GNode v$el$1 = (GNode) yyResult
5338: .semanticValue();
5339:
5340: yyRepetition1 = yyResult.index;
5341: yyRepValue1 = new Pair(v$el$1, yyRepValue1);
5342: continue;
5343: }
5344: } else {
5345: yyError = yyError.select("\",\" expected",
5346: yyBase);
5347: }
5348: break;
5349: }
5350: { // Start scope for v$g$2.
5351: final Pair v$g$2 = yyRepValue1.reverse();
5352:
5353: yyBase = yyRepetition1;
5354: yyResult = pSymbol(yyBase);
5355: yyError = yyResult.select(yyError);
5356: if (yyResult.hasValue(")")) {
5357:
5358: yyValue = GNode.create("Arguments", v$g$1,
5359: (Pair) v$g$2);
5360:
5361: setLocation(yyValue, yyStart);
5362: return yyResult.createValue(yyValue, yyError);
5363: } else {
5364: yyError = yyError.select("\")\" expected",
5365: yyBase);
5366: }
5367: } // End scope for v$g$2.
5368: }
5369:
5370: // Nested alternative 2.
5371:
5372: yyBase = yyChoice1;
5373: yyResult = pSymbol(yyBase);
5374: yyError = yyResult.select(yyError);
5375: if (yyResult.hasValue(")")) {
5376:
5377: yyValue = GNode.create("Arguments", false);
5378:
5379: setLocation(yyValue, yyStart);
5380: return yyResult.createValue(yyValue, yyError);
5381: } else {
5382: yyError = yyError.select("\")\" expected", yyBase);
5383: }
5384: }
5385:
5386: // Done.
5387: yyError = yyError.select("arguments expected", yyStart);
5388: return yyError;
5389: }
5390:
5391: // =========================================================================
5392:
5393: /**
5394: * Parse nonterminal
5395: * xtc.xform.samples.javaproperty.JavaProperty.ArrayInitializer.
5396: *
5397: * @param yyStart The index.
5398: * @return The result.
5399: * @throws IOException Signals an I/O error.
5400: */
5401: private Result pArrayInitializer(final int yyStart)
5402: throws IOException {
5403: Result yyResult;
5404: int yyBase;
5405: int yyRepetition1;
5406: Pair yyRepValue1;
5407: int yyOption1;
5408: GNode yyValue;
5409: ParseError yyError = ParseError.DUMMY;
5410:
5411: // Alternative 1.
5412:
5413: yyResult = pSymbol(yyStart);
5414: yyError = yyResult.select(yyError);
5415: if (yyResult.hasValue("{")) {
5416:
5417: final int yyChoice1 = yyResult.index;
5418:
5419: // Nested alternative 1.
5420:
5421: yyResult = pVariableInitializer(yyChoice1);
5422: yyError = yyResult.select(yyError);
5423: if (yyResult.hasValue()) {
5424: final GNode v$g$1 = (GNode) yyResult.semanticValue();
5425:
5426: yyRepetition1 = yyResult.index;
5427: yyRepValue1 = Pair.EMPTY;
5428: while (true) {
5429:
5430: yyBase = yyRepetition1;
5431: yyResult = pSymbol(yyBase);
5432: yyError = yyResult.select(yyError);
5433: if (yyResult.hasValue(",")) {
5434:
5435: yyResult = pVariableInitializer(yyResult.index);
5436: yyError = yyResult.select(yyError);
5437: if (yyResult.hasValue()) {
5438: final GNode v$el$1 = (GNode) yyResult
5439: .semanticValue();
5440:
5441: yyRepetition1 = yyResult.index;
5442: yyRepValue1 = new Pair(v$el$1, yyRepValue1);
5443: continue;
5444: }
5445: } else {
5446: yyError = yyError.select("\",\" expected",
5447: yyBase);
5448: }
5449: break;
5450: }
5451: { // Start scope for v$g$2.
5452: final Pair v$g$2 = yyRepValue1.reverse();
5453:
5454: yyOption1 = yyRepetition1;
5455:
5456: yyBase = yyOption1;
5457: yyResult = pSymbol(yyBase);
5458: yyError = yyResult.select(yyError);
5459: if (yyResult.hasValue(",")) {
5460:
5461: yyOption1 = yyResult.index;
5462: } else {
5463: yyError = yyError.select("\",\" expected",
5464: yyBase);
5465: }
5466:
5467: yyBase = yyOption1;
5468: yyResult = pSymbol(yyBase);
5469: yyError = yyResult.select(yyError);
5470: if (yyResult.hasValue("}")) {
5471:
5472: yyValue = GNode.create("ArrayInitializer",
5473: v$g$1, (Pair) v$g$2);
5474:
5475: setLocation(yyValue, yyStart);
5476: return yyResult.createValue(yyValue, yyError);
5477: } else {
5478: yyError = yyError.select("\"}\" expected",
5479: yyBase);
5480: }
5481: } // End scope for v$g$2.
5482: }
5483:
5484: // Nested alternative 2.
5485:
5486: yyBase = yyChoice1;
5487: yyResult = pSymbol(yyBase);
5488: yyError = yyResult.select(yyError);
5489: if (yyResult.hasValue("}")) {
5490:
5491: yyValue = GNode.create("ArrayInitializer", false);
5492:
5493: setLocation(yyValue, yyStart);
5494: return yyResult.createValue(yyValue, yyError);
5495: } else {
5496: yyError = yyError.select("\"}\" expected", yyBase);
5497: }
5498: }
5499:
5500: // Done.
5501: yyError = yyError.select("array initializer expected", yyStart);
5502: return yyError;
5503: }
5504:
5505: // =========================================================================
5506:
5507: /**
5508: * Parse nonterminal
5509: * xtc.xform.samples.javaproperty.JavaProperty.VariableInitializer.
5510: *
5511: * @param yyStart The index.
5512: * @return The result.
5513: * @throws IOException Signals an I/O error.
5514: */
5515: private Result pVariableInitializer(final int yyStart)
5516: throws IOException {
5517: JavaPropertyParserColumn yyColumn = (JavaPropertyParserColumn) column(yyStart);
5518: if (null == yyColumn.chunk2)
5519: yyColumn.chunk2 = new Chunk2();
5520: if (null == yyColumn.chunk2.fVariableInitializer)
5521: yyColumn.chunk2.fVariableInitializer = pVariableInitializer$1(yyStart);
5522: return yyColumn.chunk2.fVariableInitializer;
5523: }
5524:
5525: /** Actually parse xtc.xform.samples.javaproperty.JavaProperty.VariableInitializer. */
5526: private Result pVariableInitializer$1(final int yyStart)
5527: throws IOException {
5528:
5529: Result yyResult;
5530: GNode yyValue;
5531: ParseError yyError = ParseError.DUMMY;
5532:
5533: // Alternative <Array>.
5534:
5535: yyResult = pArrayInitializer(yyStart);
5536: yyError = yyResult.select(yyError);
5537: if (yyResult.hasValue()) {
5538: yyValue = (GNode) yyResult.semanticValue();
5539:
5540: setLocation(yyValue, yyStart);
5541: return yyResult.createValue(yyValue, yyError);
5542: }
5543:
5544: // Alternative <Expression>.
5545:
5546: yyResult = pExpression(yyStart);
5547: yyError = yyResult.select(yyError);
5548: if (yyResult.hasValue()) {
5549: yyValue = (GNode) yyResult.semanticValue();
5550:
5551: setLocation(yyValue, yyStart);
5552: return yyResult.createValue(yyValue, yyError);
5553: }
5554:
5555: // Done.
5556: return yyError;
5557: }
5558:
5559: // =========================================================================
5560:
5561: /**
5562: * Parse nonterminal xtc.lang.JavaType.ResultType.
5563: *
5564: * @param yyStart The index.
5565: * @return The result.
5566: * @throws IOException Signals an I/O error.
5567: */
5568: private Result pResultType(final int yyStart) throws IOException {
5569: Result yyResult;
5570: GNode yyValue;
5571: ParseError yyError = ParseError.DUMMY;
5572:
5573: // Alternative <Void>.
5574:
5575: yyResult = pVoidTypeSpecifier(yyStart);
5576: yyError = yyResult.select(yyError);
5577: if (yyResult.hasValue()) {
5578: yyValue = (GNode) yyResult.semanticValue();
5579:
5580: setLocation(yyValue, yyStart);
5581: return yyResult.createValue(yyValue, yyError);
5582: }
5583:
5584: // Alternative <Regular>.
5585:
5586: yyResult = pType(yyStart);
5587: yyError = yyResult.select(yyError);
5588: if (yyResult.hasValue()) {
5589: yyValue = (GNode) yyResult.semanticValue();
5590:
5591: setLocation(yyValue, yyStart);
5592: return yyResult.createValue(yyValue, yyError);
5593: }
5594:
5595: // Done.
5596: return yyError;
5597: }
5598:
5599: // =========================================================================
5600:
5601: /**
5602: * Parse nonterminal xtc.lang.JavaType.VoidTypeSpecifier.
5603: *
5604: * @param yyStart The index.
5605: * @return The result.
5606: * @throws IOException Signals an I/O error.
5607: */
5608: private Result pVoidTypeSpecifier(final int yyStart)
5609: throws IOException {
5610: Result yyResult;
5611: GNode yyValue;
5612: ParseError yyError = ParseError.DUMMY;
5613:
5614: // Alternative <Void>.
5615:
5616: yyResult = pWord(yyStart);
5617: yyError = yyResult.select(yyError);
5618: if (yyResult.hasValue("void")) {
5619:
5620: yyValue = GNode.create("VoidTypeSpecifier", false);
5621:
5622: setLocation(yyValue, yyStart);
5623: return yyResult.createValue(yyValue, yyError);
5624: }
5625:
5626: // Done.
5627: yyError = yyError.select("void type specifier expected",
5628: yyStart);
5629: return yyError;
5630: }
5631:
5632: // =========================================================================
5633:
5634: /**
5635: * Parse nonterminal xtc.lang.JavaType.Type.
5636: *
5637: * @param yyStart The index.
5638: * @return The result.
5639: * @throws IOException Signals an I/O error.
5640: */
5641: private Result pType(final int yyStart) throws IOException {
5642: JavaPropertyParserColumn yyColumn = (JavaPropertyParserColumn) column(yyStart);
5643: if (null == yyColumn.chunk2)
5644: yyColumn.chunk2 = new Chunk2();
5645: if (null == yyColumn.chunk2.fType)
5646: yyColumn.chunk2.fType = pType$1(yyStart);
5647: return yyColumn.chunk2.fType;
5648: }
5649:
5650: /** Actually parse xtc.lang.JavaType.Type. */
5651: private Result pType$1(final int yyStart) throws IOException {
5652: Result yyResult;
5653: int yyOption1;
5654: GNode yyOpValue1;
5655: GNode yyValue;
5656: ParseError yyError = ParseError.DUMMY;
5657:
5658: // Alternative <Type>.
5659:
5660: yyResult = pTypeName(yyStart);
5661: yyError = yyResult.select(yyError);
5662: if (yyResult.hasValue()) {
5663: final GNode v$g$1 = (GNode) yyResult.semanticValue();
5664:
5665: yyOption1 = yyResult.index;
5666: yyOpValue1 = null;
5667:
5668: yyResult = pDimensions(yyOption1);
5669: yyError = yyResult.select(yyError);
5670: if (yyResult.hasValue()) {
5671: final GNode v$el$1 = (GNode) yyResult.semanticValue();
5672:
5673: yyOption1 = yyResult.index;
5674: yyOpValue1 = v$el$1;
5675: }
5676: { // Start scope for v$g$2.
5677: final GNode v$g$2 = yyOpValue1;
5678:
5679: yyValue = GNode.create("Type", v$g$1, v$g$2);
5680:
5681: setLocation(yyValue, yyStart);
5682: return new SemanticValue(yyValue, yyOption1, yyError);
5683: } // End scope for v$g$2.
5684: }
5685:
5686: // Done.
5687: return yyError;
5688: }
5689:
5690: // =========================================================================
5691:
5692: /**
5693: * Parse nonterminal xtc.lang.JavaType.TypeName.
5694: *
5695: * @param yyStart The index.
5696: * @return The result.
5697: * @throws IOException Signals an I/O error.
5698: */
5699: private Result pTypeName(final int yyStart) throws IOException {
5700: JavaPropertyParserColumn yyColumn = (JavaPropertyParserColumn) column(yyStart);
5701: if (null == yyColumn.chunk2)
5702: yyColumn.chunk2 = new Chunk2();
5703: if (null == yyColumn.chunk2.fTypeName)
5704: yyColumn.chunk2.fTypeName = pTypeName$1(yyStart);
5705: return yyColumn.chunk2.fTypeName;
5706: }
5707:
5708: /** Actually parse xtc.lang.JavaType.TypeName. */
5709: private Result pTypeName$1(final int yyStart) throws IOException {
5710: Result yyResult;
5711: GNode yyValue;
5712: ParseError yyError = ParseError.DUMMY;
5713:
5714: // Alternative <Basic>.
5715:
5716: yyResult = pBasicType(yyStart);
5717: yyError = yyResult.select(yyError);
5718: if (yyResult.hasValue()) {
5719: final String v$g$1 = (String) yyResult.semanticValue();
5720:
5721: yyValue = GNode.create("TypeName", v$g$1);
5722:
5723: setLocation(yyValue, yyStart);
5724: return yyResult.createValue(yyValue, yyError);
5725: }
5726:
5727: // Alternative <Qualified>.
5728:
5729: yyResult = pQualifiedIdentifier(yyStart);
5730: yyError = yyResult.select(yyError);
5731: if (yyResult.hasValue()) {
5732: yyValue = (GNode) yyResult.semanticValue();
5733:
5734: setLocation(yyValue, yyStart);
5735: return yyResult.createValue(yyValue, yyError);
5736: }
5737:
5738: // Done.
5739: return yyError;
5740: }
5741:
5742: // =========================================================================
5743:
5744: /**
5745: * Parse nonterminal xtc.lang.JavaType.BasicType.
5746: *
5747: * @param yyStart The index.
5748: * @return The result.
5749: * @throws IOException Signals an I/O error.
5750: */
5751: private Result pBasicType(final int yyStart) throws IOException {
5752: JavaPropertyParserColumn yyColumn = (JavaPropertyParserColumn) column(yyStart);
5753: if (null == yyColumn.chunk2)
5754: yyColumn.chunk2 = new Chunk2();
5755: if (null == yyColumn.chunk2.fBasicType)
5756: yyColumn.chunk2.fBasicType = pBasicType$1(yyStart);
5757: return yyColumn.chunk2.fBasicType;
5758: }
5759:
5760: /** Actually parse xtc.lang.JavaType.BasicType. */
5761: private Result pBasicType$1(final int yyStart) throws IOException {
5762: Result yyResult;
5763: String yyValue;
5764: ParseError yyError = ParseError.DUMMY;
5765:
5766: // Alternative <Byte>.
5767:
5768: yyResult = pWord(yyStart);
5769: yyError = yyResult.select(yyError);
5770: if (yyResult.hasValue("byte")) {
5771: yyValue = "byte";
5772:
5773: return yyResult.createValue(yyValue, yyError);
5774: }
5775:
5776: // Alternative <Short>.
5777:
5778: yyResult = pWord(yyStart);
5779: yyError = yyResult.select(yyError);
5780: if (yyResult.hasValue("short")) {
5781: yyValue = "short";
5782:
5783: return yyResult.createValue(yyValue, yyError);
5784: }
5785:
5786: // Alternative <Char>.
5787:
5788: yyResult = pWord(yyStart);
5789: yyError = yyResult.select(yyError);
5790: if (yyResult.hasValue("char")) {
5791: yyValue = "char";
5792:
5793: return yyResult.createValue(yyValue, yyError);
5794: }
5795:
5796: // Alternative <Int>.
5797:
5798: yyResult = pWord(yyStart);
5799: yyError = yyResult.select(yyError);
5800: if (yyResult.hasValue("int")) {
5801: yyValue = "int";
5802:
5803: return yyResult.createValue(yyValue, yyError);
5804: }
5805:
5806: // Alternative <Long>.
5807:
5808: yyResult = pWord(yyStart);
5809: yyError = yyResult.select(yyError);
5810: if (yyResult.hasValue("long")) {
5811: yyValue = "long";
5812:
5813: return yyResult.createValue(yyValue, yyError);
5814: }
5815:
5816: // Alternative <Float>.
5817:
5818: yyResult = pWord(yyStart);
5819: yyError = yyResult.select(yyError);
5820: if (yyResult.hasValue("float")) {
5821: yyValue = "float";
5822:
5823: return yyResult.createValue(yyValue, yyError);
5824: }
5825:
5826: // Alternative <Double>.
5827:
5828: yyResult = pWord(yyStart);
5829: yyError = yyResult.select(yyError);
5830: if (yyResult.hasValue("double")) {
5831: yyValue = "double";
5832:
5833: return yyResult.createValue(yyValue, yyError);
5834: }
5835:
5836: // Alternative <Boolean>.
5837:
5838: yyResult = pWord(yyStart);
5839: yyError = yyResult.select(yyError);
5840: if (yyResult.hasValue("boolean")) {
5841: yyValue = "boolean";
5842:
5843: return yyResult.createValue(yyValue, yyError);
5844: }
5845:
5846: // Done.
5847: yyError = yyError.select("basic type expected", yyStart);
5848: return yyError;
5849: }
5850:
5851: // =========================================================================
5852:
5853: /**
5854: * Parse nonterminal xtc.lang.JavaType.Dimensions.
5855: *
5856: * @param yyStart The index.
5857: * @return The result.
5858: * @throws IOException Signals an I/O error.
5859: */
5860: private Result pDimensions(final int yyStart) throws IOException {
5861: JavaPropertyParserColumn yyColumn = (JavaPropertyParserColumn) column(yyStart);
5862: if (null == yyColumn.chunk2)
5863: yyColumn.chunk2 = new Chunk2();
5864: if (null == yyColumn.chunk2.fDimensions)
5865: yyColumn.chunk2.fDimensions = pDimensions$1(yyStart);
5866: return yyColumn.chunk2.fDimensions;
5867: }
5868:
5869: /** Actually parse xtc.lang.JavaType.Dimensions. */
5870: private Result pDimensions$1(final int yyStart) throws IOException {
5871: Result yyResult;
5872: GNode yyValue;
5873: ParseError yyError = ParseError.DUMMY;
5874:
5875: // Alternative 1.
5876:
5877: yyResult = pDimensions$$Plus1(yyStart);
5878: yyError = yyResult.select(yyError);
5879: if (yyResult.hasValue()) {
5880: final Pair v$g$1 = (Pair) yyResult.semanticValue();
5881:
5882: yyValue = GNode.create("Dimensions", (Pair) v$g$1);
5883:
5884: setLocation(yyValue, yyStart);
5885: return yyResult.createValue(yyValue, yyError);
5886: }
5887:
5888: // Done.
5889: return yyError;
5890: }
5891:
5892: // =========================================================================
5893:
5894: /**
5895: * Parse synthetic nonterminal
5896: * xtc.xform.samples.javaproperty.JavaProperty.Dimensions$$Plus1.
5897: *
5898: * @param yyStart The index.
5899: * @return The result.
5900: * @throws IOException Signals an I/O error.
5901: */
5902: private Result pDimensions$$Plus1(final int yyStart)
5903: throws IOException {
5904: JavaPropertyParserColumn yyColumn = (JavaPropertyParserColumn) column(yyStart);
5905: if (null == yyColumn.chunk2)
5906: yyColumn.chunk2 = new Chunk2();
5907: if (null == yyColumn.chunk2.fDimensions$$Plus1)
5908: yyColumn.chunk2.fDimensions$$Plus1 = pDimensions$$Plus1$1(yyStart);
5909: return yyColumn.chunk2.fDimensions$$Plus1;
5910: }
5911:
5912: /** Actually parse xtc.xform.samples.javaproperty.JavaProperty.Dimensions$$Plus1. */
5913: private Result pDimensions$$Plus1$1(final int yyStart)
5914: throws IOException {
5915: Result yyResult;
5916: int yyBase;
5917: Pair yyValue;
5918: ParseError yyError = ParseError.DUMMY;
5919:
5920: // Alternative 1.
5921:
5922: yyResult = pSymbol(yyStart);
5923: yyError = yyResult.select(yyError);
5924: if (yyResult.hasValue("[")) {
5925: final String v$el$1 = "[";
5926:
5927: yyBase = yyResult.index;
5928: yyResult = pSymbol(yyBase);
5929: yyError = yyResult.select(yyError);
5930: if (yyResult.hasValue("]")) {
5931:
5932: final int yyChoice1 = yyResult.index;
5933:
5934: // Nested alternative 1.
5935:
5936: yyResult = pDimensions$$Plus1(yyChoice1);
5937: yyError = yyResult.select(yyError);
5938: if (yyResult.hasValue()) {
5939: final Pair v$2 = (Pair) yyResult.semanticValue();
5940:
5941: yyValue = new Pair(v$el$1, v$2);
5942:
5943: return yyResult.createValue(yyValue, yyError);
5944: }
5945:
5946: // Nested alternative 2.
5947:
5948: yyValue = new Pair(v$el$1);
5949:
5950: return new SemanticValue(yyValue, yyChoice1, yyError);
5951: } else {
5952: yyError = yyError.select("\"]\" expected", yyBase);
5953: }
5954: }
5955:
5956: // Done.
5957: yyError = yyError.select("dimensions expected", yyStart);
5958: return yyError;
5959: }
5960:
5961: // =========================================================================
5962:
5963: /**
5964: * Parse nonterminal xtc.lang.JavaConstant.Literal.
5965: *
5966: * @param yyStart The index.
5967: * @return The result.
5968: * @throws IOException Signals an I/O error.
5969: */
5970: private Result pLiteral(final int yyStart) throws IOException {
5971: Result yyResult;
5972: GNode yyValue;
5973: ParseError yyError = ParseError.DUMMY;
5974:
5975: // Alternative 1.
5976:
5977: yyResult = pFloatingPointLiteral(yyStart);
5978: yyError = yyResult.select(yyError);
5979: if (yyResult.hasValue()) {
5980: yyValue = (GNode) yyResult.semanticValue();
5981:
5982: yyResult = pSpacing(yyResult.index);
5983: yyError = yyResult.select(yyError);
5984: if (yyResult.hasValue()) {
5985:
5986: setLocation(yyValue, yyStart);
5987: return yyResult.createValue(yyValue, yyError);
5988: }
5989: }
5990:
5991: // Alternative 2.
5992:
5993: yyResult = pIntegerLiteral(yyStart);
5994: yyError = yyResult.select(yyError);
5995: if (yyResult.hasValue()) {
5996: yyValue = (GNode) yyResult.semanticValue();
5997:
5998: yyResult = pSpacing(yyResult.index);
5999: yyError = yyResult.select(yyError);
6000: if (yyResult.hasValue()) {
6001:
6002: setLocation(yyValue, yyStart);
6003: return yyResult.createValue(yyValue, yyError);
6004: }
6005: }
6006:
6007: // Alternative 3.
6008:
6009: yyResult = pCharacterLiteral(yyStart);
6010: yyError = yyResult.select(yyError);
6011: if (yyResult.hasValue()) {
6012: yyValue = (GNode) yyResult.semanticValue();
6013:
6014: yyResult = pSpacing(yyResult.index);
6015: yyError = yyResult.select(yyError);
6016: if (yyResult.hasValue()) {
6017:
6018: setLocation(yyValue, yyStart);
6019: return yyResult.createValue(yyValue, yyError);
6020: }
6021: }
6022:
6023: // Alternative 4.
6024:
6025: yyResult = pStringLiteral(yyStart);
6026: yyError = yyResult.select(yyError);
6027: if (yyResult.hasValue()) {
6028: yyValue = (GNode) yyResult.semanticValue();
6029:
6030: yyResult = pSpacing(yyResult.index);
6031: yyError = yyResult.select(yyError);
6032: if (yyResult.hasValue()) {
6033:
6034: setLocation(yyValue, yyStart);
6035: return yyResult.createValue(yyValue, yyError);
6036: }
6037: }
6038:
6039: // Alternative 5.
6040:
6041: yyResult = pWord(yyStart);
6042: yyError = yyResult.select(yyError);
6043: if (yyResult.hasValue("true")) {
6044: final String v$g$1 = "true";
6045:
6046: yyValue = GNode.create("BooleanLiteral", v$g$1);
6047:
6048: setLocation(yyValue, yyStart);
6049: return yyResult.createValue(yyValue, yyError);
6050: }
6051:
6052: // Alternative 6.
6053:
6054: yyResult = pWord(yyStart);
6055: yyError = yyResult.select(yyError);
6056: if (yyResult.hasValue("false")) {
6057: final String v$g$2 = "false";
6058:
6059: yyValue = GNode.create("BooleanLiteral", v$g$2);
6060:
6061: setLocation(yyValue, yyStart);
6062: return yyResult.createValue(yyValue, yyError);
6063: }
6064:
6065: // Alternative 7.
6066:
6067: yyResult = pWord(yyStart);
6068: yyError = yyResult.select(yyError);
6069: if (yyResult.hasValue("null")) {
6070:
6071: yyValue = GNode.create("NullLiteral", false);
6072:
6073: setLocation(yyValue, yyStart);
6074: return yyResult.createValue(yyValue, yyError);
6075: }
6076:
6077: // Done.
6078: yyError = yyError.select("literal expected", yyStart);
6079: return yyError;
6080: }
6081:
6082: // =========================================================================
6083:
6084: /**
6085: * Parse nonterminal xtc.lang.JavaConstant.IntegerLiteral.
6086: *
6087: * @param yyStart The index.
6088: * @return The result.
6089: * @throws IOException Signals an I/O error.
6090: */
6091: private Result pIntegerLiteral(final int yyStart)
6092: throws IOException {
6093: Result yyResult;
6094: GNode yyValue;
6095: ParseError yyError = ParseError.DUMMY;
6096:
6097: // Alternative <Hex>.
6098:
6099: yyResult = pHexLiteral(yyStart);
6100: yyError = yyResult.select(yyError);
6101: if (yyResult.hasValue()) {
6102: final String v$g$1 = (String) yyResult.semanticValue();
6103:
6104: yyValue = GNode.create("IntegerLiteral", v$g$1);
6105:
6106: setLocation(yyValue, yyStart);
6107: return yyResult.createValue(yyValue, yyError);
6108: }
6109:
6110: // Alternative <Octal>.
6111:
6112: yyResult = pOctalLiteral(yyStart);
6113: yyError = yyResult.select(yyError);
6114: if (yyResult.hasValue()) {
6115: final String v$g$2 = (String) yyResult.semanticValue();
6116:
6117: yyValue = GNode.create("IntegerLiteral", v$g$2);
6118:
6119: setLocation(yyValue, yyStart);
6120: return yyResult.createValue(yyValue, yyError);
6121: }
6122:
6123: // Alternative <Decimal>.
6124:
6125: yyResult = pDecimalLiteral(yyStart);
6126: yyError = yyResult.select(yyError);
6127: if (yyResult.hasValue()) {
6128: final String v$g$3 = (String) yyResult.semanticValue();
6129:
6130: yyValue = GNode.create("IntegerLiteral", v$g$3);
6131:
6132: setLocation(yyValue, yyStart);
6133: return yyResult.createValue(yyValue, yyError);
6134: }
6135:
6136: // Done.
6137: return yyError;
6138: }
6139:
6140: // =========================================================================
6141:
6142: /**
6143: * Parse nonterminal xtc.lang.JavaConstant.HexLiteral.
6144: *
6145: * @param yyStart The index.
6146: * @return The result.
6147: * @throws IOException Signals an I/O error.
6148: */
6149: private Result pHexLiteral(final int yyStart) throws IOException {
6150: int yyC;
6151: int yyIndex;
6152: Result yyResult;
6153: int yyOption1;
6154: String yyValue;
6155: ParseError yyError = ParseError.DUMMY;
6156:
6157: // Alternative 1.
6158:
6159: yyResult = pHexNumeral(yyStart);
6160: yyError = yyResult.select(yyError);
6161: if (yyResult.hasValue()) {
6162:
6163: yyOption1 = yyResult.index;
6164:
6165: yyC = character(yyOption1);
6166: if (-1 != yyC) {
6167: yyIndex = yyOption1 + 1;
6168:
6169: switch (yyC) {
6170: case 'L':
6171: case 'l': {
6172: yyOption1 = yyIndex;
6173: }
6174:
6175: default:
6176: /* No match. */
6177: }
6178: }
6179:
6180: yyValue = difference(yyStart, yyOption1);
6181:
6182: return new SemanticValue(yyValue, yyOption1, yyError);
6183: }
6184:
6185: // Done.
6186: yyError = yyError.select("hex literal expected", yyStart);
6187: return yyError;
6188: }
6189:
6190: // =========================================================================
6191:
6192: /**
6193: * Parse nonterminal xtc.lang.JavaConstant.OctalLiteral.
6194: *
6195: * @param yyStart The index.
6196: * @return The result.
6197: * @throws IOException Signals an I/O error.
6198: */
6199: private Result pOctalLiteral(final int yyStart) throws IOException {
6200: int yyC;
6201: int yyIndex;
6202: Result yyResult;
6203: int yyOption1;
6204: String yyValue;
6205: ParseError yyError = ParseError.DUMMY;
6206:
6207: // Alternative 1.
6208:
6209: yyResult = pOctalNumeral(yyStart);
6210: yyError = yyResult.select(yyError);
6211: if (yyResult.hasValue()) {
6212:
6213: yyOption1 = yyResult.index;
6214:
6215: yyC = character(yyOption1);
6216: if (-1 != yyC) {
6217: yyIndex = yyOption1 + 1;
6218:
6219: switch (yyC) {
6220: case 'L':
6221: case 'l': {
6222: yyOption1 = yyIndex;
6223: }
6224:
6225: default:
6226: /* No match. */
6227: }
6228: }
6229:
6230: yyValue = difference(yyStart, yyOption1);
6231:
6232: return new SemanticValue(yyValue, yyOption1, yyError);
6233: }
6234:
6235: // Done.
6236: yyError = yyError.select("octal literal expected", yyStart);
6237: return yyError;
6238: }
6239:
6240: // =========================================================================
6241:
6242: /**
6243: * Parse nonterminal xtc.lang.JavaConstant.DecimalLiteral.
6244: *
6245: * @param yyStart The index.
6246: * @return The result.
6247: * @throws IOException Signals an I/O error.
6248: */
6249: private Result pDecimalLiteral(final int yyStart)
6250: throws IOException {
6251: int yyC;
6252: int yyIndex;
6253: Result yyResult;
6254: int yyOption1;
6255: String yyValue;
6256: ParseError yyError = ParseError.DUMMY;
6257:
6258: // Alternative 1.
6259:
6260: yyResult = pDecimalNumeral(yyStart);
6261: yyError = yyResult.select(yyError);
6262: if (yyResult.hasValue()) {
6263:
6264: yyOption1 = yyResult.index;
6265:
6266: yyC = character(yyOption1);
6267: if (-1 != yyC) {
6268: yyIndex = yyOption1 + 1;
6269:
6270: switch (yyC) {
6271: case 'L':
6272: case 'l': {
6273: yyOption1 = yyIndex;
6274: }
6275:
6276: default:
6277: /* No match. */
6278: }
6279: }
6280:
6281: yyValue = difference(yyStart, yyOption1);
6282:
6283: return new SemanticValue(yyValue, yyOption1, yyError);
6284: }
6285:
6286: // Done.
6287: yyError = yyError.select("decimal literal expected", yyStart);
6288: return yyError;
6289: }
6290:
6291: // =========================================================================
6292:
6293: /**
6294: * Parse nonterminal xtc.lang.JavaConstant.DecimalNumeral.
6295: *
6296: * @param yyStart The index.
6297: * @return The result.
6298: * @throws IOException Signals an I/O error.
6299: */
6300: private Result pDecimalNumeral(final int yyStart)
6301: throws IOException {
6302: int yyC;
6303: int yyIndex;
6304: int yyRepetition1;
6305: Void yyValue;
6306: ParseError yyError = ParseError.DUMMY;
6307:
6308: // Alternative 1.
6309:
6310: yyC = character(yyStart);
6311: if (-1 != yyC) {
6312: yyIndex = yyStart + 1;
6313:
6314: switch (yyC) {
6315: case '0': {
6316: yyValue = null;
6317:
6318: return new SemanticValue(yyValue, yyIndex, yyError);
6319: }
6320:
6321: case '1':
6322: case '2':
6323: case '3':
6324: case '4':
6325: case '5':
6326: case '6':
6327: case '7':
6328: case '8':
6329: case '9': {
6330: yyRepetition1 = yyIndex;
6331: while (true) {
6332:
6333: yyC = character(yyRepetition1);
6334: if (-1 != yyC) {
6335: yyIndex = yyRepetition1 + 1;
6336:
6337: switch (yyC) {
6338: case '0':
6339: case '1':
6340: case '2':
6341: case '3':
6342: case '4':
6343: case '5':
6344: case '6':
6345: case '7':
6346: case '8':
6347: case '9': {
6348: yyRepetition1 = yyIndex;
6349: continue;
6350: }
6351:
6352: default:
6353: /* No match. */
6354: }
6355: }
6356: break;
6357: }
6358:
6359: yyValue = null;
6360:
6361: return new SemanticValue(yyValue, yyRepetition1,
6362: yyError);
6363: }
6364:
6365: default:
6366: /* No match. */
6367: }
6368: }
6369:
6370: // Done.
6371: yyError = yyError.select("decimal numeral expected", yyStart);
6372: return yyError;
6373: }
6374:
6375: // =========================================================================
6376:
6377: /**
6378: * Parse nonterminal xtc.lang.JavaConstant.HexNumeral.
6379: *
6380: * @param yyStart The index.
6381: * @return The result.
6382: * @throws IOException Signals an I/O error.
6383: */
6384: private Result pHexNumeral(final int yyStart) throws IOException {
6385: int yyC;
6386: int yyIndex;
6387: int yyRepetition1;
6388: boolean yyRepeated1;
6389: Void yyValue;
6390: ParseError yyError = ParseError.DUMMY;
6391:
6392: // Alternative 1.
6393:
6394: yyC = character(yyStart);
6395: if ('0' == yyC) {
6396: yyIndex = yyStart + 1;
6397:
6398: yyC = character(yyIndex);
6399: if (-1 != yyC) {
6400: yyIndex = yyIndex + 1;
6401:
6402: switch (yyC) {
6403: case 'X':
6404: case 'x': {
6405: yyRepetition1 = yyIndex;
6406: yyRepeated1 = false;
6407: while (true) {
6408:
6409: yyC = character(yyRepetition1);
6410: if (-1 != yyC) {
6411: yyIndex = yyRepetition1 + 1;
6412:
6413: switch (yyC) {
6414: case '0':
6415: case '1':
6416: case '2':
6417: case '3':
6418: case '4':
6419: case '5':
6420: case '6':
6421: case '7':
6422: case '8':
6423: case '9':
6424: case 'A':
6425: case 'B':
6426: case 'C':
6427: case 'D':
6428: case 'E':
6429: case 'F':
6430: case 'a':
6431: case 'b':
6432: case 'c':
6433: case 'd':
6434: case 'e':
6435: case 'f': {
6436: yyRepetition1 = yyIndex;
6437: yyRepeated1 = true;
6438: continue;
6439: }
6440:
6441: default:
6442: /* No match. */
6443: }
6444: }
6445: break;
6446: }
6447:
6448: if (yyRepeated1) {
6449:
6450: yyValue = null;
6451:
6452: return new SemanticValue(yyValue,
6453: yyRepetition1, yyError);
6454: }
6455: }
6456: break;
6457:
6458: default:
6459: /* No match. */
6460: }
6461: }
6462: }
6463:
6464: // Done.
6465: yyError = yyError.select("hex numeral expected", yyStart);
6466: return yyError;
6467: }
6468:
6469: // =========================================================================
6470:
6471: /**
6472: * Parse nonterminal xtc.lang.JavaConstant.OctalNumeral.
6473: *
6474: * @param yyStart The index.
6475: * @return The result.
6476: * @throws IOException Signals an I/O error.
6477: */
6478: private Result pOctalNumeral(final int yyStart) throws IOException {
6479: int yyC;
6480: int yyIndex;
6481: int yyRepetition1;
6482: boolean yyRepeated1;
6483: Void yyValue;
6484: ParseError yyError = ParseError.DUMMY;
6485:
6486: // Alternative 1.
6487:
6488: yyC = character(yyStart);
6489: if ('0' == yyC) {
6490: yyIndex = yyStart + 1;
6491:
6492: yyRepetition1 = yyIndex;
6493: yyRepeated1 = false;
6494: while (true) {
6495:
6496: yyC = character(yyRepetition1);
6497: if (-1 != yyC) {
6498: yyIndex = yyRepetition1 + 1;
6499:
6500: switch (yyC) {
6501: case '0':
6502: case '1':
6503: case '2':
6504: case '3':
6505: case '4':
6506: case '5':
6507: case '6':
6508: case '7': {
6509: yyRepetition1 = yyIndex;
6510: yyRepeated1 = true;
6511: continue;
6512: }
6513:
6514: default:
6515: /* No match. */
6516: }
6517: }
6518: break;
6519: }
6520:
6521: if (yyRepeated1) {
6522:
6523: yyValue = null;
6524:
6525: return new SemanticValue(yyValue, yyRepetition1,
6526: yyError);
6527: }
6528: }
6529:
6530: // Done.
6531: yyError = yyError.select("octal numeral expected", yyStart);
6532: return yyError;
6533: }
6534:
6535: // =========================================================================
6536:
6537: /**
6538: * Parse nonterminal xtc.lang.JavaConstant.FloatingPointLiteral.
6539: *
6540: * @param yyStart The index.
6541: * @return The result.
6542: * @throws IOException Signals an I/O error.
6543: */
6544: private Result pFloatingPointLiteral(final int yyStart)
6545: throws IOException {
6546: Result yyResult;
6547: GNode yyValue;
6548: ParseError yyError = ParseError.DUMMY;
6549:
6550: // Alternative 1.
6551:
6552: yyResult = pFloatingPointString(yyStart);
6553: yyError = yyResult.select(yyError);
6554: if (yyResult.hasValue()) {
6555: final String v$g$1 = (String) yyResult.semanticValue();
6556:
6557: yyValue = GNode.create("FloatingPointLiteral", v$g$1);
6558:
6559: setLocation(yyValue, yyStart);
6560: return yyResult.createValue(yyValue, yyError);
6561: }
6562:
6563: // Done.
6564: return yyError;
6565: }
6566:
6567: // =========================================================================
6568:
6569: /**
6570: * Parse nonterminal xtc.lang.JavaConstant.FloatingPointString.
6571: *
6572: * @param yyStart The index.
6573: * @return The result.
6574: * @throws IOException Signals an I/O error.
6575: */
6576: private Result pFloatingPointString(final int yyStart)
6577: throws IOException {
6578: int yyC;
6579: int yyIndex;
6580: Result yyResult;
6581: int yyRepetition1;
6582: boolean yyRepeated1;
6583: int yyOption1;
6584: String yyValue;
6585: ParseError yyError = ParseError.DUMMY;
6586:
6587: // Alternative 1.
6588:
6589: yyRepetition1 = yyStart;
6590: yyRepeated1 = false;
6591: while (true) {
6592:
6593: yyC = character(yyRepetition1);
6594: if (-1 != yyC) {
6595: yyIndex = yyRepetition1 + 1;
6596:
6597: switch (yyC) {
6598: case '0':
6599: case '1':
6600: case '2':
6601: case '3':
6602: case '4':
6603: case '5':
6604: case '6':
6605: case '7':
6606: case '8':
6607: case '9': {
6608: yyRepetition1 = yyIndex;
6609: yyRepeated1 = true;
6610: continue;
6611: }
6612:
6613: default:
6614: /* No match. */
6615: }
6616: }
6617: break;
6618: }
6619:
6620: if (yyRepeated1) {
6621:
6622: yyC = character(yyRepetition1);
6623: if ('.' == yyC) {
6624: yyIndex = yyRepetition1 + 1;
6625:
6626: yyRepetition1 = yyIndex;
6627: while (true) {
6628:
6629: yyC = character(yyRepetition1);
6630: if (-1 != yyC) {
6631: yyIndex = yyRepetition1 + 1;
6632:
6633: switch (yyC) {
6634: case '0':
6635: case '1':
6636: case '2':
6637: case '3':
6638: case '4':
6639: case '5':
6640: case '6':
6641: case '7':
6642: case '8':
6643: case '9': {
6644: yyRepetition1 = yyIndex;
6645: continue;
6646: }
6647:
6648: default:
6649: /* No match. */
6650: }
6651: }
6652: break;
6653: }
6654:
6655: yyOption1 = yyRepetition1;
6656:
6657: yyResult = pExponent(yyOption1);
6658: yyError = yyResult.select(yyError);
6659: if (yyResult.hasValue()) {
6660:
6661: yyOption1 = yyResult.index;
6662: }
6663:
6664: yyC = character(yyOption1);
6665: if (-1 != yyC) {
6666: yyIndex = yyOption1 + 1;
6667:
6668: switch (yyC) {
6669: case 'D':
6670: case 'F':
6671: case 'd':
6672: case 'f': {
6673: yyOption1 = yyIndex;
6674: }
6675:
6676: default:
6677: /* No match. */
6678: }
6679: }
6680:
6681: yyValue = difference(yyStart, yyOption1);
6682:
6683: return new SemanticValue(yyValue, yyOption1, yyError);
6684: }
6685: }
6686:
6687: // Alternative 2.
6688:
6689: yyC = character(yyStart);
6690: if ('.' == yyC) {
6691: yyIndex = yyStart + 1;
6692:
6693: yyRepetition1 = yyIndex;
6694: yyRepeated1 = false;
6695: while (true) {
6696:
6697: yyC = character(yyRepetition1);
6698: if (-1 != yyC) {
6699: yyIndex = yyRepetition1 + 1;
6700:
6701: switch (yyC) {
6702: case '0':
6703: case '1':
6704: case '2':
6705: case '3':
6706: case '4':
6707: case '5':
6708: case '6':
6709: case '7':
6710: case '8':
6711: case '9': {
6712: yyRepetition1 = yyIndex;
6713: yyRepeated1 = true;
6714: continue;
6715: }
6716:
6717: default:
6718: /* No match. */
6719: }
6720: }
6721: break;
6722: }
6723:
6724: if (yyRepeated1) {
6725:
6726: yyOption1 = yyRepetition1;
6727:
6728: yyResult = pExponent(yyOption1);
6729: yyError = yyResult.select(yyError);
6730: if (yyResult.hasValue()) {
6731:
6732: yyOption1 = yyResult.index;
6733: }
6734:
6735: yyC = character(yyOption1);
6736: if (-1 != yyC) {
6737: yyIndex = yyOption1 + 1;
6738:
6739: switch (yyC) {
6740: case 'D':
6741: case 'F':
6742: case 'd':
6743: case 'f': {
6744: yyOption1 = yyIndex;
6745: }
6746:
6747: default:
6748: /* No match. */
6749: }
6750: }
6751:
6752: yyValue = difference(yyStart, yyOption1);
6753:
6754: return new SemanticValue(yyValue, yyOption1, yyError);
6755: }
6756: }
6757:
6758: // Alternative 3.
6759:
6760: yyRepetition1 = yyStart;
6761: yyRepeated1 = false;
6762: while (true) {
6763:
6764: yyC = character(yyRepetition1);
6765: if (-1 != yyC) {
6766: yyIndex = yyRepetition1 + 1;
6767:
6768: switch (yyC) {
6769: case '0':
6770: case '1':
6771: case '2':
6772: case '3':
6773: case '4':
6774: case '5':
6775: case '6':
6776: case '7':
6777: case '8':
6778: case '9': {
6779: yyRepetition1 = yyIndex;
6780: yyRepeated1 = true;
6781: continue;
6782: }
6783:
6784: default:
6785: /* No match. */
6786: }
6787: }
6788: break;
6789: }
6790:
6791: if (yyRepeated1) {
6792:
6793: final int yyChoice1 = yyRepetition1;
6794:
6795: // Nested alternative 1.
6796:
6797: yyResult = pExponent(yyChoice1);
6798: yyError = yyResult.select(yyError);
6799: if (yyResult.hasValue()) {
6800:
6801: yyOption1 = yyResult.index;
6802:
6803: yyC = character(yyOption1);
6804: if (-1 != yyC) {
6805: yyIndex = yyOption1 + 1;
6806:
6807: switch (yyC) {
6808: case 'D':
6809: case 'F':
6810: case 'd':
6811: case 'f': {
6812: yyOption1 = yyIndex;
6813: }
6814:
6815: default:
6816: /* No match. */
6817: }
6818: }
6819:
6820: yyValue = difference(yyStart, yyOption1);
6821:
6822: return new SemanticValue(yyValue, yyOption1, yyError);
6823: }
6824:
6825: // Nested alternative 2.
6826:
6827: yyOption1 = yyChoice1;
6828:
6829: yyResult = pExponent(yyOption1);
6830: yyError = yyResult.select(yyError);
6831: if (yyResult.hasValue()) {
6832:
6833: yyOption1 = yyResult.index;
6834: }
6835:
6836: yyC = character(yyOption1);
6837: if (-1 != yyC) {
6838: yyIndex = yyOption1 + 1;
6839:
6840: switch (yyC) {
6841: case 'D':
6842: case 'F':
6843: case 'd':
6844: case 'f': {
6845: yyValue = difference(yyStart, yyIndex);
6846:
6847: return new SemanticValue(yyValue, yyIndex, yyError);
6848: }
6849:
6850: default:
6851: /* No match. */
6852: }
6853: }
6854: }
6855:
6856: // Done.
6857: yyError = yyError.select("floating point string expected",
6858: yyStart);
6859: return yyError;
6860: }
6861:
6862: // =========================================================================
6863:
6864: /**
6865: * Parse nonterminal xtc.lang.JavaConstant.Exponent.
6866: *
6867: * @param yyStart The index.
6868: * @return The result.
6869: * @throws IOException Signals an I/O error.
6870: */
6871: private Result pExponent(final int yyStart) throws IOException {
6872: int yyC;
6873: int yyIndex;
6874: int yyRepetition1;
6875: boolean yyRepeated1;
6876: int yyOption1;
6877: Void yyValue;
6878: ParseError yyError = ParseError.DUMMY;
6879:
6880: // Alternative 1.
6881:
6882: yyC = character(yyStart);
6883: if (-1 != yyC) {
6884: yyIndex = yyStart + 1;
6885:
6886: switch (yyC) {
6887: case 'E':
6888: case 'e': {
6889: yyOption1 = yyIndex;
6890:
6891: yyC = character(yyOption1);
6892: if (-1 != yyC) {
6893: yyIndex = yyOption1 + 1;
6894:
6895: switch (yyC) {
6896: case '+':
6897: case '-': {
6898: yyOption1 = yyIndex;
6899: }
6900:
6901: default:
6902: /* No match. */
6903: }
6904: }
6905:
6906: yyRepetition1 = yyOption1;
6907: yyRepeated1 = false;
6908: while (true) {
6909:
6910: yyC = character(yyRepetition1);
6911: if (-1 != yyC) {
6912: yyIndex = yyRepetition1 + 1;
6913:
6914: switch (yyC) {
6915: case '0':
6916: case '1':
6917: case '2':
6918: case '3':
6919: case '4':
6920: case '5':
6921: case '6':
6922: case '7':
6923: case '8':
6924: case '9': {
6925: yyRepetition1 = yyIndex;
6926: yyRepeated1 = true;
6927: continue;
6928: }
6929:
6930: default:
6931: /* No match. */
6932: }
6933: }
6934: break;
6935: }
6936:
6937: if (yyRepeated1) {
6938:
6939: yyValue = null;
6940:
6941: return new SemanticValue(yyValue, yyRepetition1,
6942: yyError);
6943: }
6944: }
6945: break;
6946:
6947: default:
6948: /* No match. */
6949: }
6950: }
6951:
6952: // Done.
6953: yyError = yyError.select("exponent expected", yyStart);
6954: return yyError;
6955: }
6956:
6957: // =========================================================================
6958:
6959: /**
6960: * Parse nonterminal xtc.lang.JavaConstant.CharacterLiteral.
6961: *
6962: * @param yyStart The index.
6963: * @return The result.
6964: * @throws IOException Signals an I/O error.
6965: */
6966: private Result pCharacterLiteral(final int yyStart)
6967: throws IOException {
6968: Result yyResult;
6969: GNode yyValue;
6970: ParseError yyError = ParseError.DUMMY;
6971:
6972: // Alternative 1.
6973:
6974: yyResult = pCharacterConstant(yyStart);
6975: yyError = yyResult.select(yyError);
6976: if (yyResult.hasValue()) {
6977: final String v$g$1 = (String) yyResult.semanticValue();
6978:
6979: yyValue = GNode.create("CharacterLiteral", v$g$1);
6980:
6981: setLocation(yyValue, yyStart);
6982: return yyResult.createValue(yyValue, yyError);
6983: }
6984:
6985: // Done.
6986: return yyError;
6987: }
6988:
6989: // =========================================================================
6990:
6991: /**
6992: * Parse nonterminal xtc.lang.JavaConstant.StringLiteral.
6993: *
6994: * @param yyStart The index.
6995: * @return The result.
6996: * @throws IOException Signals an I/O error.
6997: */
6998: private Result pStringLiteral(final int yyStart) throws IOException {
6999: Result yyResult;
7000: GNode yyValue;
7001: ParseError yyError = ParseError.DUMMY;
7002:
7003: // Alternative 1.
7004:
7005: yyResult = pStringConstant(yyStart);
7006: yyError = yyResult.select(yyError);
7007: if (yyResult.hasValue()) {
7008: final String v$g$1 = (String) yyResult.semanticValue();
7009:
7010: yyValue = GNode.create("StringLiteral", v$g$1);
7011:
7012: setLocation(yyValue, yyStart);
7013: return yyResult.createValue(yyValue, yyError);
7014: }
7015:
7016: // Done.
7017: return yyError;
7018: }
7019:
7020: // =========================================================================
7021:
7022: /**
7023: * Parse nonterminal xtc.lang.JavaConstant.CharacterConstant.
7024: *
7025: * @param yyStart The index.
7026: * @return The result.
7027: * @throws IOException Signals an I/O error.
7028: */
7029: private Result pCharacterConstant(final int yyStart)
7030: throws IOException {
7031: int yyC;
7032: int yyIndex;
7033: Result yyResult;
7034: String yyValue;
7035: ParseError yyError = ParseError.DUMMY;
7036:
7037: // Alternative 1.
7038:
7039: yyC = character(yyStart);
7040: if ('\'' == yyC) {
7041: yyIndex = yyStart + 1;
7042:
7043: yyResult = pCharacterConstant$$Choice1(yyIndex);
7044: yyError = yyResult.select(yyError);
7045: if (yyResult.hasValue()) {
7046:
7047: yyC = character(yyResult.index);
7048: if ('\'' == yyC) {
7049: yyIndex = yyResult.index + 1;
7050:
7051: yyValue = difference(yyStart, yyIndex);
7052:
7053: return new SemanticValue(yyValue, yyIndex, yyError);
7054: }
7055: }
7056: }
7057:
7058: // Done.
7059: yyError = yyError
7060: .select("character constant expected", yyStart);
7061: return yyError;
7062: }
7063:
7064: // =========================================================================
7065:
7066: /**
7067: * Parse synthetic nonterminal
7068: * xtc.xform.samples.javaproperty.JavaProperty.CharacterConstant$$Choice1.
7069: *
7070: * @param yyStart The index.
7071: * @return The result.
7072: * @throws IOException Signals an I/O error.
7073: */
7074: private Result pCharacterConstant$$Choice1(final int yyStart)
7075: throws IOException {
7076:
7077: int yyC;
7078: int yyIndex;
7079: Void yyValue;
7080: ParseError yyError = ParseError.DUMMY;
7081:
7082: // Alternative 1.
7083:
7084: yyC = character(yyStart);
7085: if (-1 != yyC) {
7086: yyIndex = yyStart + 1;
7087:
7088: switch (yyC) {
7089: case '\\': {
7090: final int yyChoice1 = yyIndex;
7091:
7092: // Nested alternative 1.
7093:
7094: yyC = character(yyChoice1);
7095: if (-1 != yyC) {
7096: yyIndex = yyChoice1 + 1;
7097:
7098: switch (yyC) {
7099: case '\"':
7100: case '\'':
7101: case '\\':
7102: case 'b':
7103: case 'f':
7104: case 'n':
7105: case 'r':
7106: case 't': {
7107: yyValue = null;
7108:
7109: return new SemanticValue(yyValue, yyIndex,
7110: yyError);
7111: }
7112:
7113: case 'u': {
7114: yyC = character(yyIndex);
7115: if (-1 != yyC) {
7116: yyIndex = yyIndex + 1;
7117:
7118: switch (yyC) {
7119: case '0':
7120: case '1':
7121: case '2':
7122: case '3':
7123: case '4':
7124: case '5':
7125: case '6':
7126: case '7':
7127: case '8':
7128: case '9':
7129: case 'A':
7130: case 'B':
7131: case 'C':
7132: case 'D':
7133: case 'E':
7134: case 'F':
7135: case 'a':
7136: case 'b':
7137: case 'c':
7138: case 'd':
7139: case 'e':
7140: case 'f': {
7141: yyC = character(yyIndex);
7142: if (-1 != yyC) {
7143: yyIndex = yyIndex + 1;
7144:
7145: switch (yyC) {
7146: case '0':
7147: case '1':
7148: case '2':
7149: case '3':
7150: case '4':
7151: case '5':
7152: case '6':
7153: case '7':
7154: case '8':
7155: case '9':
7156: case 'A':
7157: case 'B':
7158: case 'C':
7159: case 'D':
7160: case 'E':
7161: case 'F':
7162: case 'a':
7163: case 'b':
7164: case 'c':
7165: case 'd':
7166: case 'e':
7167: case 'f': {
7168: yyC = character(yyIndex);
7169: if (-1 != yyC) {
7170: yyIndex = yyIndex + 1;
7171:
7172: switch (yyC) {
7173: case '0':
7174: case '1':
7175: case '2':
7176: case '3':
7177: case '4':
7178: case '5':
7179: case '6':
7180: case '7':
7181: case '8':
7182: case '9':
7183: case 'A':
7184: case 'B':
7185: case 'C':
7186: case 'D':
7187: case 'E':
7188: case 'F':
7189: case 'a':
7190: case 'b':
7191: case 'c':
7192: case 'd':
7193: case 'e':
7194: case 'f': {
7195: yyC = character(yyIndex);
7196: if (-1 != yyC) {
7197: yyIndex = yyIndex + 1;
7198:
7199: switch (yyC) {
7200: case '0':
7201: case '1':
7202: case '2':
7203: case '3':
7204: case '4':
7205: case '5':
7206: case '6':
7207: case '7':
7208: case '8':
7209: case '9':
7210: case 'A':
7211: case 'B':
7212: case 'C':
7213: case 'D':
7214: case 'E':
7215: case 'F':
7216: case 'a':
7217: case 'b':
7218: case 'c':
7219: case 'd':
7220: case 'e':
7221: case 'f': {
7222: yyValue = null;
7223:
7224: return new SemanticValue(
7225: yyValue,
7226: yyIndex,
7227: yyError);
7228: }
7229:
7230: default:
7231: /* No match. */
7232: }
7233: }
7234: }
7235: break;
7236:
7237: default:
7238: /* No match. */
7239: }
7240: }
7241: }
7242: break;
7243:
7244: default:
7245: /* No match. */
7246: }
7247: }
7248: }
7249: break;
7250:
7251: default:
7252: /* No match. */
7253: }
7254: }
7255: }
7256: break;
7257:
7258: default:
7259: /* No match. */
7260: }
7261: }
7262:
7263: // Nested alternative 2.
7264:
7265: final int yyChoice2 = yyChoice1;
7266:
7267: // Nested alternative 1.
7268:
7269: yyC = character(yyChoice2);
7270: if (-1 != yyC) {
7271: yyIndex = yyChoice2 + 1;
7272:
7273: switch (yyC) {
7274: case '0':
7275: case '1':
7276: case '2':
7277: case '3': {
7278: yyC = character(yyIndex);
7279: if (-1 != yyC) {
7280: yyIndex = yyIndex + 1;
7281:
7282: switch (yyC) {
7283: case '0':
7284: case '1':
7285: case '2':
7286: case '3':
7287: case '4':
7288: case '5':
7289: case '6':
7290: case '7': {
7291: yyC = character(yyIndex);
7292: if (-1 != yyC) {
7293: yyIndex = yyIndex + 1;
7294:
7295: switch (yyC) {
7296: case '0':
7297: case '1':
7298: case '2':
7299: case '3':
7300: case '4':
7301: case '5':
7302: case '6':
7303: case '7': {
7304: yyValue = null;
7305:
7306: return new SemanticValue(
7307: yyValue, yyIndex,
7308: yyError);
7309: }
7310:
7311: default:
7312: /* No match. */
7313: }
7314: }
7315: }
7316: break;
7317:
7318: default:
7319: /* No match. */
7320: }
7321: }
7322: }
7323: break;
7324:
7325: default:
7326: /* No match. */
7327: }
7328: }
7329:
7330: // Nested alternative 2.
7331:
7332: yyC = character(yyChoice2);
7333: if (-1 != yyC) {
7334: yyIndex = yyChoice2 + 1;
7335:
7336: switch (yyC) {
7337: case '0':
7338: case '1':
7339: case '2':
7340: case '3':
7341: case '4':
7342: case '5':
7343: case '6':
7344: case '7': {
7345: final int yyChoice3 = yyIndex;
7346:
7347: // Nested alternative 1.
7348:
7349: yyC = character(yyChoice3);
7350: if (-1 != yyC) {
7351: yyIndex = yyChoice3 + 1;
7352:
7353: switch (yyC) {
7354: case '0':
7355: case '1':
7356: case '2':
7357: case '3':
7358: case '4':
7359: case '5':
7360: case '6':
7361: case '7': {
7362: yyValue = null;
7363:
7364: return new SemanticValue(yyValue,
7365: yyIndex, yyError);
7366: }
7367:
7368: default:
7369: /* No match. */
7370: }
7371: }
7372:
7373: // Nested alternative 2.
7374:
7375: yyValue = null;
7376:
7377: return new SemanticValue(yyValue, yyChoice3,
7378: yyError);
7379: }
7380:
7381: default:
7382: /* No match. */
7383: }
7384: }
7385: }
7386: break;
7387:
7388: default:
7389: /* No match. */
7390: }
7391: }
7392:
7393: // Alternative 2.
7394:
7395: yyC = character(yyStart);
7396: if (-1 != yyC) {
7397: yyIndex = yyStart + 1;
7398:
7399: switch (yyC) {
7400: case '\'':
7401: case '\\':
7402: /* No match. */
7403: break;
7404:
7405: default: {
7406: yyValue = null;
7407:
7408: return new SemanticValue(yyValue, yyIndex, yyError);
7409: }
7410: }
7411: }
7412:
7413: // Done.
7414: yyError = yyError
7415: .select("character constant expected", yyStart);
7416: return yyError;
7417: }
7418:
7419: // =========================================================================
7420:
7421: /**
7422: * Parse nonterminal xtc.lang.JavaConstant.StringConstant.
7423: *
7424: * @param yyStart The index.
7425: * @return The result.
7426: * @throws IOException Signals an I/O error.
7427: */
7428: private Result pStringConstant(final int yyStart)
7429: throws IOException {
7430: int yyC;
7431: int yyIndex;
7432: int yyRepetition1;
7433: String yyValue;
7434: ParseError yyError = ParseError.DUMMY;
7435:
7436: // Alternative 1.
7437:
7438: yyC = character(yyStart);
7439: if ('\"' == yyC) {
7440: yyIndex = yyStart + 1;
7441:
7442: yyRepetition1 = yyIndex;
7443: while (true) {
7444:
7445: final int yyChoice1 = yyRepetition1;
7446:
7447: // Nested alternative 1.
7448:
7449: yyC = character(yyChoice1);
7450: if (-1 != yyC) {
7451: yyIndex = yyChoice1 + 1;
7452:
7453: switch (yyC) {
7454: case '\\': {
7455: final int yyChoice2 = yyIndex;
7456:
7457: // Nested alternative 1.
7458:
7459: yyC = character(yyChoice2);
7460: if (-1 != yyC) {
7461: yyIndex = yyChoice2 + 1;
7462:
7463: switch (yyC) {
7464: case '\"':
7465: case '\'':
7466: case '\\':
7467: case 'b':
7468: case 'f':
7469: case 'n':
7470: case 'r':
7471: case 't': {
7472: yyRepetition1 = yyIndex;
7473: continue;
7474: }
7475:
7476: case 'u': {
7477: yyC = character(yyIndex);
7478: if (-1 != yyC) {
7479: yyIndex = yyIndex + 1;
7480:
7481: switch (yyC) {
7482: case '0':
7483: case '1':
7484: case '2':
7485: case '3':
7486: case '4':
7487: case '5':
7488: case '6':
7489: case '7':
7490: case '8':
7491: case '9':
7492: case 'A':
7493: case 'B':
7494: case 'C':
7495: case 'D':
7496: case 'E':
7497: case 'F':
7498: case 'a':
7499: case 'b':
7500: case 'c':
7501: case 'd':
7502: case 'e':
7503: case 'f': {
7504: yyC = character(yyIndex);
7505: if (-1 != yyC) {
7506: yyIndex = yyIndex + 1;
7507:
7508: switch (yyC) {
7509: case '0':
7510: case '1':
7511: case '2':
7512: case '3':
7513: case '4':
7514: case '5':
7515: case '6':
7516: case '7':
7517: case '8':
7518: case '9':
7519: case 'A':
7520: case 'B':
7521: case 'C':
7522: case 'D':
7523: case 'E':
7524: case 'F':
7525: case 'a':
7526: case 'b':
7527: case 'c':
7528: case 'd':
7529: case 'e':
7530: case 'f': {
7531: yyC = character(yyIndex);
7532: if (-1 != yyC) {
7533: yyIndex = yyIndex + 1;
7534:
7535: switch (yyC) {
7536: case '0':
7537: case '1':
7538: case '2':
7539: case '3':
7540: case '4':
7541: case '5':
7542: case '6':
7543: case '7':
7544: case '8':
7545: case '9':
7546: case 'A':
7547: case 'B':
7548: case 'C':
7549: case 'D':
7550: case 'E':
7551: case 'F':
7552: case 'a':
7553: case 'b':
7554: case 'c':
7555: case 'd':
7556: case 'e':
7557: case 'f': {
7558: yyC = character(yyIndex);
7559: if (-1 != yyC) {
7560: yyIndex = yyIndex + 1;
7561:
7562: switch (yyC) {
7563: case '0':
7564: case '1':
7565: case '2':
7566: case '3':
7567: case '4':
7568: case '5':
7569: case '6':
7570: case '7':
7571: case '8':
7572: case '9':
7573: case 'A':
7574: case 'B':
7575: case 'C':
7576: case 'D':
7577: case 'E':
7578: case 'F':
7579: case 'a':
7580: case 'b':
7581: case 'c':
7582: case 'd':
7583: case 'e':
7584: case 'f': {
7585: yyRepetition1 = yyIndex;
7586: continue;
7587: }
7588:
7589: default:
7590: /* No match. */
7591: }
7592: }
7593: }
7594: break;
7595:
7596: default:
7597: /* No match. */
7598: }
7599: }
7600: }
7601: break;
7602:
7603: default:
7604: /* No match. */
7605: }
7606: }
7607: }
7608: break;
7609:
7610: default:
7611: /* No match. */
7612: }
7613: }
7614: }
7615: break;
7616:
7617: default:
7618: /* No match. */
7619: }
7620: }
7621:
7622: // Nested alternative 2.
7623:
7624: final int yyChoice3 = yyChoice2;
7625:
7626: // Nested alternative 1.
7627:
7628: yyC = character(yyChoice3);
7629: if (-1 != yyC) {
7630: yyIndex = yyChoice3 + 1;
7631:
7632: switch (yyC) {
7633: case '0':
7634: case '1':
7635: case '2':
7636: case '3': {
7637: yyC = character(yyIndex);
7638: if (-1 != yyC) {
7639: yyIndex = yyIndex + 1;
7640:
7641: switch (yyC) {
7642: case '0':
7643: case '1':
7644: case '2':
7645: case '3':
7646: case '4':
7647: case '5':
7648: case '6':
7649: case '7': {
7650: yyC = character(yyIndex);
7651: if (-1 != yyC) {
7652: yyIndex = yyIndex + 1;
7653:
7654: switch (yyC) {
7655: case '0':
7656: case '1':
7657: case '2':
7658: case '3':
7659: case '4':
7660: case '5':
7661: case '6':
7662: case '7': {
7663: yyRepetition1 = yyIndex;
7664: continue;
7665: }
7666:
7667: default:
7668: /* No match. */
7669: }
7670: }
7671: }
7672: break;
7673:
7674: default:
7675: /* No match. */
7676: }
7677: }
7678: }
7679: break;
7680:
7681: default:
7682: /* No match. */
7683: }
7684: }
7685:
7686: // Nested alternative 2.
7687:
7688: yyC = character(yyChoice3);
7689: if (-1 != yyC) {
7690: yyIndex = yyChoice3 + 1;
7691:
7692: switch (yyC) {
7693: case '0':
7694: case '1':
7695: case '2':
7696: case '3':
7697: case '4':
7698: case '5':
7699: case '6':
7700: case '7': {
7701: final int yyChoice4 = yyIndex;
7702:
7703: // Nested alternative 1.
7704:
7705: yyC = character(yyChoice4);
7706: if (-1 != yyC) {
7707: yyIndex = yyChoice4 + 1;
7708:
7709: switch (yyC) {
7710: case '0':
7711: case '1':
7712: case '2':
7713: case '3':
7714: case '4':
7715: case '5':
7716: case '6':
7717: case '7': {
7718: yyRepetition1 = yyIndex;
7719: continue;
7720: }
7721:
7722: default:
7723: /* No match. */
7724: }
7725: }
7726:
7727: // Nested alternative 2.
7728:
7729: yyRepetition1 = yyChoice4;
7730: continue;
7731: }
7732:
7733: default:
7734: /* No match. */
7735: }
7736: }
7737: }
7738: break;
7739:
7740: default:
7741: /* No match. */
7742: }
7743: }
7744:
7745: // Nested alternative 2.
7746:
7747: yyC = character(yyChoice1);
7748: if (-1 != yyC) {
7749: yyIndex = yyChoice1 + 1;
7750:
7751: switch (yyC) {
7752: case '\"':
7753: case '\\':
7754: /* No match. */
7755: break;
7756:
7757: default: {
7758: yyRepetition1 = yyIndex;
7759: continue;
7760: }
7761: }
7762: }
7763: break;
7764: }
7765:
7766: yyC = character(yyRepetition1);
7767: if ('\"' == yyC) {
7768: yyIndex = yyRepetition1 + 1;
7769:
7770: yyValue = difference(yyStart, yyIndex);
7771:
7772: return new SemanticValue(yyValue, yyIndex, yyError);
7773: }
7774: }
7775:
7776: // Done.
7777: yyError = yyError.select("string constant expected", yyStart);
7778: return yyError;
7779: }
7780:
7781: // =========================================================================
7782:
7783: /**
7784: * Parse nonterminal xtc.lang.JavaIdentifier.QualifiedIdentifier.
7785: *
7786: * @param yyStart The index.
7787: * @return The result.
7788: * @throws IOException Signals an I/O error.
7789: */
7790: private Result pQualifiedIdentifier(final int yyStart)
7791: throws IOException {
7792: JavaPropertyParserColumn yyColumn = (JavaPropertyParserColumn) column(yyStart);
7793: if (null == yyColumn.chunk2)
7794: yyColumn.chunk2 = new Chunk2();
7795: if (null == yyColumn.chunk2.fQualifiedIdentifier)
7796: yyColumn.chunk2.fQualifiedIdentifier = pQualifiedIdentifier$1(yyStart);
7797: return yyColumn.chunk2.fQualifiedIdentifier;
7798: }
7799:
7800: /** Actually parse xtc.lang.JavaIdentifier.QualifiedIdentifier. */
7801: private Result pQualifiedIdentifier$1(final int yyStart)
7802: throws IOException {
7803:
7804: Result yyResult;
7805: GNode yyValue;
7806: ParseError yyError = ParseError.DUMMY;
7807:
7808: // Alternative 1.
7809:
7810: yyResult = pIdentifier(yyStart);
7811: yyError = yyResult.select(yyError);
7812: if (yyResult.hasValue()) {
7813: final String v$g$1 = (String) yyResult.semanticValue();
7814:
7815: yyResult = pQualifiedIdentifier$$Star1(yyResult.index);
7816: yyError = yyResult.select(yyError);
7817: if (yyResult.hasValue()) {
7818: final Pair v$g$2 = (Pair) yyResult.semanticValue();
7819:
7820: yyValue = GNode.create("QualifiedIdentifier", v$g$1,
7821: (Pair) v$g$2);
7822:
7823: setLocation(yyValue, yyStart);
7824: return yyResult.createValue(yyValue, yyError);
7825: }
7826: }
7827:
7828: // Done.
7829: return yyError;
7830: }
7831:
7832: // =========================================================================
7833:
7834: /**
7835: * Parse synthetic nonterminal
7836: * xtc.xform.samples.javaproperty.JavaProperty.QualifiedIdentifier$$Star1.
7837: *
7838: * @param yyStart The index.
7839: * @return The result.
7840: * @throws IOException Signals an I/O error.
7841: */
7842: private Result pQualifiedIdentifier$$Star1(final int yyStart)
7843: throws IOException {
7844:
7845: JavaPropertyParserColumn yyColumn = (JavaPropertyParserColumn) column(yyStart);
7846: if (null == yyColumn.chunk2)
7847: yyColumn.chunk2 = new Chunk2();
7848: if (null == yyColumn.chunk2.fQualifiedIdentifier$$Star1)
7849: yyColumn.chunk2.fQualifiedIdentifier$$Star1 = pQualifiedIdentifier$$Star1$1(yyStart);
7850: return yyColumn.chunk2.fQualifiedIdentifier$$Star1;
7851: }
7852:
7853: /** Actually parse xtc.xform.samples.javaproperty.JavaProperty.QualifiedIdentifier$$Star1. */
7854: private Result pQualifiedIdentifier$$Star1$1(final int yyStart)
7855: throws IOException {
7856:
7857: Result yyResult;
7858: Pair yyValue;
7859: ParseError yyError = ParseError.DUMMY;
7860:
7861: // Alternative 1.
7862:
7863: yyResult = pSymbol(yyStart);
7864: yyError = yyResult.select(yyError);
7865: if (yyResult.hasValue(".")) {
7866:
7867: yyResult = pIdentifier(yyResult.index);
7868: yyError = yyResult.select(yyError);
7869: if (yyResult.hasValue()) {
7870: final String v$el$1 = (String) yyResult.semanticValue();
7871:
7872: yyResult = pQualifiedIdentifier$$Star1(yyResult.index);
7873: yyError = yyResult.select(yyError);
7874: if (yyResult.hasValue()) {
7875: final Pair v$2 = (Pair) yyResult.semanticValue();
7876:
7877: yyValue = new Pair(v$el$1, v$2);
7878:
7879: return yyResult.createValue(yyValue, yyError);
7880: }
7881: }
7882: }
7883:
7884: // Alternative 2.
7885:
7886: yyValue = Pair.EMPTY;
7887:
7888: return new SemanticValue(yyValue, yyStart, yyError);
7889: }
7890:
7891: // =========================================================================
7892:
7893: /**
7894: * Parse nonterminal xtc.lang.JavaIdentifier.Identifier.
7895: *
7896: * @param yyStart The index.
7897: * @return The result.
7898: * @throws IOException Signals an I/O error.
7899: */
7900: private Result pIdentifier(final int yyStart) throws IOException {
7901: JavaPropertyParserColumn yyColumn = (JavaPropertyParserColumn) column(yyStart);
7902: if (null == yyColumn.chunk3)
7903: yyColumn.chunk3 = new Chunk3();
7904: if (null == yyColumn.chunk3.fIdentifier)
7905: yyColumn.chunk3.fIdentifier = pIdentifier$1(yyStart);
7906: return yyColumn.chunk3.fIdentifier;
7907: }
7908:
7909: /** Actually parse xtc.lang.JavaIdentifier.Identifier. */
7910: private Result pIdentifier$1(final int yyStart) throws IOException {
7911: Result yyResult;
7912: String yyValue;
7913: ParseError yyError = ParseError.DUMMY;
7914:
7915: // Alternative 1.
7916:
7917: yyResult = pWord(yyStart);
7918: yyError = yyResult.select(yyError);
7919: if (yyResult.hasValue()) {
7920: yyValue = (String) yyResult.semanticValue();
7921:
7922: if (!JAVA_KEYWORDS.contains(yyValue)) {
7923:
7924: return yyResult.createValue(yyValue, yyError);
7925: }
7926: }
7927:
7928: // Done.
7929: yyError = yyError.select("identifier expected", yyStart);
7930: return yyError;
7931: }
7932:
7933: // =========================================================================
7934:
7935: /**
7936: * Parse nonterminal xtc.lang.JavaIdentifier.Word.
7937: *
7938: * @param yyStart The index.
7939: * @return The result.
7940: * @throws IOException Signals an I/O error.
7941: */
7942: private Result pWord(final int yyStart) throws IOException {
7943: JavaPropertyParserColumn yyColumn = (JavaPropertyParserColumn) column(yyStart);
7944: if (null == yyColumn.chunk3)
7945: yyColumn.chunk3 = new Chunk3();
7946: if (null == yyColumn.chunk3.fWord)
7947: yyColumn.chunk3.fWord = pWord$1(yyStart);
7948: return yyColumn.chunk3.fWord;
7949: }
7950:
7951: /** Actually parse xtc.lang.JavaIdentifier.Word. */
7952: private Result pWord$1(final int yyStart) throws IOException {
7953: Result yyResult;
7954: String yyValue;
7955: ParseError yyError = ParseError.DUMMY;
7956:
7957: // Alternative 1.
7958:
7959: yyResult = pWordCharacters(yyStart);
7960: yyError = yyResult.select(yyError);
7961: if (yyResult.hasValue()) {
7962: yyValue = (String) yyResult.semanticValue();
7963:
7964: yyResult = pSpacing(yyResult.index);
7965: yyError = yyResult.select(yyError);
7966: if (yyResult.hasValue()) {
7967:
7968: return yyResult.createValue(yyValue, yyError);
7969: }
7970: }
7971:
7972: // Done.
7973: return yyError;
7974: }
7975:
7976: // =========================================================================
7977:
7978: /**
7979: * Parse nonterminal xtc.lang.JavaIdentifier.WordCharacters.
7980: *
7981: * @param yyStart The index.
7982: * @return The result.
7983: * @throws IOException Signals an I/O error.
7984: */
7985: private Result pWordCharacters(final int yyStart)
7986: throws IOException {
7987: int yyC;
7988: int yyIndex;
7989: int yyRepetition1;
7990: String yyValue;
7991: ParseError yyError = ParseError.DUMMY;
7992:
7993: // Alternative 1.
7994:
7995: yyC = character(yyStart);
7996: if (-1 != yyC) {
7997: yyIndex = yyStart + 1;
7998: final char start = (char) yyC;
7999:
8000: if (Character.isJavaIdentifierStart(start)) {
8001:
8002: yyRepetition1 = yyIndex;
8003: while (true) {
8004:
8005: yyC = character(yyRepetition1);
8006: if (-1 != yyC) {
8007: yyIndex = yyRepetition1 + 1;
8008: final char part = (char) yyC;
8009:
8010: if (Character.isJavaIdentifierPart(part)) {
8011:
8012: yyRepetition1 = yyIndex;
8013: continue;
8014: }
8015: }
8016: break;
8017: }
8018:
8019: yyValue = difference(yyStart, yyRepetition1);
8020:
8021: return new SemanticValue(yyValue, yyRepetition1,
8022: yyError);
8023: }
8024: }
8025:
8026: // Done.
8027: yyError = yyError.select("word characters expected", yyStart);
8028: return yyError;
8029: }
8030:
8031: // =========================================================================
8032:
8033: /**
8034: * Parse nonterminal xtc.lang.JavaSymbol.Symbol.
8035: *
8036: * @param yyStart The index.
8037: * @return The result.
8038: * @throws IOException Signals an I/O error.
8039: */
8040: private Result pSymbol(final int yyStart) throws IOException {
8041: JavaPropertyParserColumn yyColumn = (JavaPropertyParserColumn) column(yyStart);
8042: if (null == yyColumn.chunk3)
8043: yyColumn.chunk3 = new Chunk3();
8044: if (null == yyColumn.chunk3.fSymbol)
8045: yyColumn.chunk3.fSymbol = pSymbol$1(yyStart);
8046: return yyColumn.chunk3.fSymbol;
8047: }
8048:
8049: /** Actually parse xtc.lang.JavaSymbol.Symbol. */
8050: private Result pSymbol$1(final int yyStart) throws IOException {
8051: Result yyResult;
8052: String yyValue;
8053: ParseError yyError = ParseError.DUMMY;
8054:
8055: // Alternative 1.
8056:
8057: yyResult = pSymbolCharacters(yyStart);
8058: yyError = yyResult.select(yyError);
8059: if (yyResult.hasValue()) {
8060: yyValue = (String) yyResult.semanticValue();
8061:
8062: yyResult = pSpacing(yyResult.index);
8063: yyError = yyResult.select(yyError);
8064: if (yyResult.hasValue()) {
8065:
8066: return yyResult.createValue(yyValue, yyError);
8067: }
8068: }
8069:
8070: // Done.
8071: return yyError;
8072: }
8073:
8074: // =========================================================================
8075:
8076: /**
8077: * Parse nonterminal xtc.lang.JavaSymbol.SymbolCharacters.
8078: *
8079: * @param yyStart The index.
8080: * @return The result.
8081: * @throws IOException Signals an I/O error.
8082: */
8083: private Result pSymbolCharacters(final int yyStart)
8084: throws IOException {
8085: int yyC;
8086: int yyIndex;
8087: String yyValue;
8088: ParseError yyError = ParseError.DUMMY;
8089:
8090: // Alternative 1.
8091:
8092: yyC = character(yyStart);
8093: if (-1 != yyC) {
8094: yyIndex = yyStart + 1;
8095:
8096: switch (yyC) {
8097: case '>': {
8098: final int yyChoice1 = yyIndex;
8099:
8100: // Nested alternative 1.
8101:
8102: yyC = character(yyChoice1);
8103: if (-1 != yyC) {
8104: yyIndex = yyChoice1 + 1;
8105:
8106: switch (yyC) {
8107: case '>': {
8108: final int yyChoice2 = yyIndex;
8109:
8110: // Nested alternative 1.
8111:
8112: yyC = character(yyChoice2);
8113: if (-1 != yyC) {
8114: yyIndex = yyChoice2 + 1;
8115:
8116: switch (yyC) {
8117: case '>': {
8118: final int yyChoice3 = yyIndex;
8119:
8120: // Nested alternative 1.
8121:
8122: yyC = character(yyChoice3);
8123: if (-1 != yyC) {
8124: yyIndex = yyChoice3 + 1;
8125: if ('=' == yyC) {
8126:
8127: yyValue = ">>>=";
8128:
8129: return new SemanticValue(
8130: yyValue, yyIndex,
8131: yyError);
8132: }
8133: }
8134:
8135: // Nested alternative 2.
8136:
8137: yyValue = ">>>";
8138:
8139: return new SemanticValue(yyValue,
8140: yyChoice3, yyError);
8141: }
8142:
8143: case '=': {
8144: yyValue = ">>=";
8145:
8146: return new SemanticValue(yyValue,
8147: yyIndex, yyError);
8148: }
8149:
8150: default:
8151: /* No match. */
8152: }
8153: }
8154:
8155: // Nested alternative 2.
8156:
8157: yyValue = ">>";
8158:
8159: return new SemanticValue(yyValue, yyChoice2,
8160: yyError);
8161: }
8162:
8163: case '=': {
8164: yyValue = ">=";
8165:
8166: return new SemanticValue(yyValue, yyIndex,
8167: yyError);
8168: }
8169:
8170: default:
8171: /* No match. */
8172: }
8173: }
8174:
8175: // Nested alternative 2.
8176:
8177: yyValue = ">";
8178:
8179: return new SemanticValue(yyValue, yyChoice1, yyError);
8180: }
8181:
8182: case '<': {
8183: final int yyChoice1 = yyIndex;
8184:
8185: // Nested alternative 1.
8186:
8187: yyC = character(yyChoice1);
8188: if (-1 != yyC) {
8189: yyIndex = yyChoice1 + 1;
8190:
8191: switch (yyC) {
8192: case '<': {
8193: final int yyChoice2 = yyIndex;
8194:
8195: // Nested alternative 1.
8196:
8197: yyC = character(yyChoice2);
8198: if (-1 != yyC) {
8199: yyIndex = yyChoice2 + 1;
8200: if ('=' == yyC) {
8201:
8202: yyValue = "<<=";
8203:
8204: return new SemanticValue(yyValue,
8205: yyIndex, yyError);
8206: }
8207: }
8208:
8209: // Nested alternative 2.
8210:
8211: yyValue = "<<";
8212:
8213: return new SemanticValue(yyValue, yyChoice2,
8214: yyError);
8215: }
8216:
8217: case '=': {
8218: yyValue = "<=";
8219:
8220: return new SemanticValue(yyValue, yyIndex,
8221: yyError);
8222: }
8223:
8224: default:
8225: /* No match. */
8226: }
8227: }
8228:
8229: // Nested alternative 2.
8230:
8231: yyValue = "<";
8232:
8233: return new SemanticValue(yyValue, yyChoice1, yyError);
8234: }
8235:
8236: case '+': {
8237: final int yyChoice1 = yyIndex;
8238:
8239: // Nested alternative 1.
8240:
8241: yyC = character(yyChoice1);
8242: if (-1 != yyC) {
8243: yyIndex = yyChoice1 + 1;
8244:
8245: switch (yyC) {
8246: case '=': {
8247: yyValue = "+=";
8248:
8249: return new SemanticValue(yyValue, yyIndex,
8250: yyError);
8251: }
8252:
8253: case '+': {
8254: yyValue = "++";
8255:
8256: return new SemanticValue(yyValue, yyIndex,
8257: yyError);
8258: }
8259:
8260: default:
8261: /* No match. */
8262: }
8263: }
8264:
8265: // Nested alternative 2.
8266:
8267: yyValue = "+";
8268:
8269: return new SemanticValue(yyValue, yyChoice1, yyError);
8270: }
8271:
8272: case '-': {
8273: final int yyChoice1 = yyIndex;
8274:
8275: // Nested alternative 1.
8276:
8277: yyC = character(yyChoice1);
8278: if (-1 != yyC) {
8279: yyIndex = yyChoice1 + 1;
8280:
8281: switch (yyC) {
8282: case '=': {
8283: yyValue = "-=";
8284:
8285: return new SemanticValue(yyValue, yyIndex,
8286: yyError);
8287: }
8288:
8289: case '-': {
8290: yyValue = "--";
8291:
8292: return new SemanticValue(yyValue, yyIndex,
8293: yyError);
8294: }
8295:
8296: default:
8297: /* No match. */
8298: }
8299: }
8300:
8301: // Nested alternative 2.
8302:
8303: yyValue = "-";
8304:
8305: return new SemanticValue(yyValue, yyChoice1, yyError);
8306: }
8307:
8308: case '*': {
8309: final int yyChoice1 = yyIndex;
8310:
8311: // Nested alternative 1.
8312:
8313: yyC = character(yyChoice1);
8314: if (-1 != yyC) {
8315: yyIndex = yyChoice1 + 1;
8316: if ('=' == yyC) {
8317:
8318: yyValue = "*=";
8319:
8320: return new SemanticValue(yyValue, yyIndex,
8321: yyError);
8322: }
8323: }
8324:
8325: // Nested alternative 2.
8326:
8327: yyValue = "*";
8328:
8329: return new SemanticValue(yyValue, yyChoice1, yyError);
8330: }
8331:
8332: case '/': {
8333: final int yyChoice1 = yyIndex;
8334:
8335: // Nested alternative 1.
8336:
8337: yyC = character(yyChoice1);
8338: if (-1 != yyC) {
8339: yyIndex = yyChoice1 + 1;
8340: if ('=' == yyC) {
8341:
8342: yyValue = "/=";
8343:
8344: return new SemanticValue(yyValue, yyIndex,
8345: yyError);
8346: }
8347: }
8348:
8349: // Nested alternative 2.
8350:
8351: yyValue = "/";
8352:
8353: return new SemanticValue(yyValue, yyChoice1, yyError);
8354: }
8355:
8356: case '%': {
8357: final int yyChoice1 = yyIndex;
8358:
8359: // Nested alternative 1.
8360:
8361: yyC = character(yyChoice1);
8362: if (-1 != yyC) {
8363: yyIndex = yyChoice1 + 1;
8364: if ('=' == yyC) {
8365:
8366: yyValue = "%=";
8367:
8368: return new SemanticValue(yyValue, yyIndex,
8369: yyError);
8370: }
8371: }
8372:
8373: // Nested alternative 2.
8374:
8375: yyValue = "%";
8376:
8377: return new SemanticValue(yyValue, yyChoice1, yyError);
8378: }
8379:
8380: case '&': {
8381: final int yyChoice1 = yyIndex;
8382:
8383: // Nested alternative 1.
8384:
8385: yyC = character(yyChoice1);
8386: if (-1 != yyC) {
8387: yyIndex = yyChoice1 + 1;
8388:
8389: switch (yyC) {
8390: case '=': {
8391: yyValue = "&=";
8392:
8393: return new SemanticValue(yyValue, yyIndex,
8394: yyError);
8395: }
8396:
8397: case '&': {
8398: yyValue = "&&";
8399:
8400: return new SemanticValue(yyValue, yyIndex,
8401: yyError);
8402: }
8403:
8404: default:
8405: /* No match. */
8406: }
8407: }
8408:
8409: // Nested alternative 2.
8410:
8411: yyValue = "&";
8412:
8413: return new SemanticValue(yyValue, yyChoice1, yyError);
8414: }
8415:
8416: case '^': {
8417: final int yyChoice1 = yyIndex;
8418:
8419: // Nested alternative 1.
8420:
8421: yyC = character(yyChoice1);
8422: if (-1 != yyC) {
8423: yyIndex = yyChoice1 + 1;
8424: if ('=' == yyC) {
8425:
8426: yyValue = "^=";
8427:
8428: return new SemanticValue(yyValue, yyIndex,
8429: yyError);
8430: }
8431: }
8432:
8433: // Nested alternative 2.
8434:
8435: yyValue = "^";
8436:
8437: return new SemanticValue(yyValue, yyChoice1, yyError);
8438: }
8439:
8440: case '|': {
8441: final int yyChoice1 = yyIndex;
8442:
8443: // Nested alternative 1.
8444:
8445: yyC = character(yyChoice1);
8446: if (-1 != yyC) {
8447: yyIndex = yyChoice1 + 1;
8448:
8449: switch (yyC) {
8450: case '=': {
8451: yyValue = "|=";
8452:
8453: return new SemanticValue(yyValue, yyIndex,
8454: yyError);
8455: }
8456:
8457: case '|': {
8458: yyValue = "||";
8459:
8460: return new SemanticValue(yyValue, yyIndex,
8461: yyError);
8462: }
8463:
8464: default:
8465: /* No match. */
8466: }
8467: }
8468:
8469: // Nested alternative 2.
8470:
8471: yyValue = "|";
8472:
8473: return new SemanticValue(yyValue, yyChoice1, yyError);
8474: }
8475:
8476: case '=': {
8477: final int yyChoice1 = yyIndex;
8478:
8479: // Nested alternative 1.
8480:
8481: yyC = character(yyChoice1);
8482: if (-1 != yyC) {
8483: yyIndex = yyChoice1 + 1;
8484: if ('=' == yyC) {
8485:
8486: yyValue = "==";
8487:
8488: return new SemanticValue(yyValue, yyIndex,
8489: yyError);
8490: }
8491: }
8492:
8493: // Nested alternative 2.
8494:
8495: yyValue = "=";
8496:
8497: return new SemanticValue(yyValue, yyChoice1, yyError);
8498: }
8499:
8500: case '!': {
8501: final int yyChoice1 = yyIndex;
8502:
8503: // Nested alternative 1.
8504:
8505: yyC = character(yyChoice1);
8506: if (-1 != yyC) {
8507: yyIndex = yyChoice1 + 1;
8508: if ('=' == yyC) {
8509:
8510: yyValue = "!=";
8511:
8512: return new SemanticValue(yyValue, yyIndex,
8513: yyError);
8514: }
8515: }
8516:
8517: // Nested alternative 2.
8518:
8519: yyValue = "!";
8520:
8521: return new SemanticValue(yyValue, yyChoice1, yyError);
8522: }
8523:
8524: case ';': {
8525: yyValue = ";";
8526:
8527: return new SemanticValue(yyValue, yyIndex, yyError);
8528: }
8529:
8530: case ':': {
8531: yyValue = ":";
8532:
8533: return new SemanticValue(yyValue, yyIndex, yyError);
8534: }
8535:
8536: case ',': {
8537: yyValue = ",";
8538:
8539: return new SemanticValue(yyValue, yyIndex, yyError);
8540: }
8541:
8542: case '.': {
8543: yyValue = ".";
8544:
8545: return new SemanticValue(yyValue, yyIndex, yyError);
8546: }
8547:
8548: case '{': {
8549: yyValue = "{";
8550:
8551: return new SemanticValue(yyValue, yyIndex, yyError);
8552: }
8553:
8554: case '}': {
8555: yyValue = "}";
8556:
8557: return new SemanticValue(yyValue, yyIndex, yyError);
8558: }
8559:
8560: case '(': {
8561: yyValue = "(";
8562:
8563: return new SemanticValue(yyValue, yyIndex, yyError);
8564: }
8565:
8566: case ')': {
8567: yyValue = ")";
8568:
8569: return new SemanticValue(yyValue, yyIndex, yyError);
8570: }
8571:
8572: case '[': {
8573: yyValue = "[";
8574:
8575: return new SemanticValue(yyValue, yyIndex, yyError);
8576: }
8577:
8578: case ']': {
8579: yyValue = "]";
8580:
8581: return new SemanticValue(yyValue, yyIndex, yyError);
8582: }
8583:
8584: case '~': {
8585: yyValue = "~";
8586:
8587: return new SemanticValue(yyValue, yyIndex, yyError);
8588: }
8589:
8590: case '?': {
8591: yyValue = "?";
8592:
8593: return new SemanticValue(yyValue, yyIndex, yyError);
8594: }
8595:
8596: default:
8597: /* No match. */
8598: }
8599: }
8600:
8601: // Done.
8602: yyError = yyError.select("symbol characters expected", yyStart);
8603: return yyError;
8604: }
8605:
8606: // =========================================================================
8607:
8608: /**
8609: * Parse nonterminal xtc.util.Spacing.Spacing.
8610: *
8611: * @param yyStart The index.
8612: * @return The result.
8613: * @throws IOException Signals an I/O error.
8614: */
8615: private Result pSpacing(final int yyStart) throws IOException {
8616: int yyC;
8617: int yyIndex;
8618: Result yyResult;
8619: int yyPredIndex;
8620: boolean yyPredMatched;
8621: int yyBase;
8622: int yyRepetition1;
8623: int yyRepetition2;
8624: Void yyValue;
8625: ParseError yyError = ParseError.DUMMY;
8626:
8627: // Alternative 1.
8628:
8629: yyRepetition1 = yyStart;
8630: while (true) {
8631:
8632: final int yyChoice1 = yyRepetition1;
8633:
8634: // Nested alternative 1.
8635:
8636: yyC = character(yyChoice1);
8637: if (-1 != yyC) {
8638: yyIndex = yyChoice1 + 1;
8639:
8640: switch (yyC) {
8641: case ' ': {
8642: yyRepetition1 = yyIndex;
8643: continue;
8644: }
8645:
8646: case '\t': {
8647: yyRepetition1 = yyIndex;
8648: continue;
8649: }
8650:
8651: case '\f': {
8652: yyRepetition1 = yyIndex;
8653: continue;
8654: }
8655:
8656: case '\r': {
8657: final int yyChoice2 = yyIndex;
8658:
8659: // Nested alternative 1.
8660:
8661: yyC = character(yyChoice2);
8662: if ('\n' == yyC) {
8663: yyIndex = yyChoice2 + 1;
8664:
8665: yyRepetition1 = yyIndex;
8666: continue;
8667: }
8668:
8669: // Nested alternative 2.
8670:
8671: yyRepetition1 = yyChoice2;
8672: continue;
8673: }
8674:
8675: case '\n': {
8676: yyRepetition1 = yyIndex;
8677: continue;
8678: }
8679:
8680: case '/': {
8681: yyC = character(yyIndex);
8682: if (-1 != yyC) {
8683: yyIndex = yyIndex + 1;
8684:
8685: switch (yyC) {
8686: case '*': {
8687: yyRepetition2 = yyIndex;
8688: while (true) {
8689:
8690: final int yyChoice2 = yyRepetition2;
8691:
8692: // Nested alternative 1.
8693:
8694: yyC = character(yyChoice2);
8695: if (-1 != yyC) {
8696: yyIndex = yyChoice2 + 1;
8697:
8698: switch (yyC) {
8699: case '*': {
8700: yyPredMatched = false;
8701:
8702: yyC = character(yyIndex);
8703: if ('/' == yyC) {
8704: yyPredIndex = yyIndex + 1;
8705:
8706: yyPredMatched = true;
8707: }
8708:
8709: if (!yyPredMatched) {
8710:
8711: yyRepetition2 = yyIndex;
8712: continue;
8713: } else {
8714: yyError = yyError.select(
8715: "spacing expected",
8716: yyStart);
8717: }
8718: }
8719: break;
8720:
8721: default: {
8722: yyRepetition2 = yyIndex;
8723: continue;
8724: }
8725: }
8726: }
8727: break;
8728: }
8729:
8730: yyBase = yyRepetition2;
8731: yyC = character(yyBase);
8732: if ('*' == yyC) {
8733: yyIndex = yyRepetition2 + 1;
8734:
8735: yyC = character(yyIndex);
8736: if ('/' == yyC) {
8737: yyIndex = yyIndex + 1;
8738:
8739: yyRepetition1 = yyIndex;
8740: continue;
8741: } else {
8742: yyError = yyError.select(
8743: "\"*/\" expected", yyBase);
8744: }
8745: } else {
8746: yyError = yyError.select(
8747: "\"*/\" expected", yyBase);
8748: }
8749: }
8750: break;
8751:
8752: case '/': {
8753: yyRepetition2 = yyIndex;
8754: while (true) {
8755:
8756: yyC = character(yyRepetition2);
8757: if (-1 != yyC) {
8758: yyIndex = yyRepetition2 + 1;
8759:
8760: switch (yyC) {
8761: case '\n':
8762: case '\r':
8763: /* No match. */
8764: break;
8765:
8766: default: {
8767: yyRepetition2 = yyIndex;
8768: continue;
8769: }
8770: }
8771: }
8772: break;
8773: }
8774:
8775: yyResult = pLineTerminator(yyRepetition2);
8776: yyError = yyResult.select(yyError);
8777: if (yyResult.hasValue()) {
8778:
8779: yyRepetition1 = yyResult.index;
8780: continue;
8781: }
8782: }
8783: break;
8784:
8785: default:
8786: /* No match. */
8787: }
8788: }
8789: }
8790: break;
8791:
8792: default:
8793: /* No match. */
8794: }
8795: }
8796: break;
8797: }
8798:
8799: yyValue = null;
8800:
8801: return new SemanticValue(yyValue, yyRepetition1, yyError);
8802: }
8803:
8804: // =========================================================================
8805:
8806: /**
8807: * Parse nonterminal xtc.util.Spacing.LineTerminator.
8808: *
8809: * @param yyStart The index.
8810: * @return The result.
8811: * @throws IOException Signals an I/O error.
8812: */
8813: private Result pLineTerminator(final int yyStart)
8814: throws IOException {
8815: int yyC;
8816: int yyIndex;
8817: Void yyValue;
8818: ParseError yyError = ParseError.DUMMY;
8819:
8820: // Alternative 1.
8821:
8822: yyC = character(yyStart);
8823: if (-1 != yyC) {
8824: yyIndex = yyStart + 1;
8825:
8826: switch (yyC) {
8827: case '\r': {
8828: final int yyChoice1 = yyIndex;
8829:
8830: // Nested alternative 1.
8831:
8832: yyC = character(yyChoice1);
8833: if ('\n' == yyC) {
8834: yyIndex = yyChoice1 + 1;
8835:
8836: yyValue = null;
8837:
8838: return new SemanticValue(yyValue, yyIndex, yyError);
8839: }
8840:
8841: // Nested alternative 2.
8842:
8843: yyValue = null;
8844:
8845: return new SemanticValue(yyValue, yyChoice1, yyError);
8846: }
8847:
8848: case '\n': {
8849: yyValue = null;
8850:
8851: return new SemanticValue(yyValue, yyIndex, yyError);
8852: }
8853:
8854: default:
8855: /* No match. */
8856: }
8857: }
8858:
8859: // Done.
8860: yyError = yyError.select("line terminator expected", yyStart);
8861: return yyError;
8862: }
8863:
8864: // =========================================================================
8865:
8866: /**
8867: * Parse nonterminal xtc.util.Spacing.EndOfFile.
8868: *
8869: * @param yyStart The index.
8870: * @return The result.
8871: * @throws IOException Signals an I/O error.
8872: */
8873: private Result pEndOfFile(final int yyStart) throws IOException {
8874: int yyC;
8875: int yyPredIndex;
8876: boolean yyPredMatched;
8877: Void yyValue;
8878: ParseError yyError = ParseError.DUMMY;
8879:
8880: // Alternative 1.
8881:
8882: yyPredMatched = false;
8883:
8884: yyC = character(yyStart);
8885: if (-1 != yyC) {
8886: yyPredIndex = yyStart + 1;
8887:
8888: yyPredMatched = true;
8889: }
8890:
8891: if (!yyPredMatched) {
8892:
8893: yyValue = null;
8894:
8895: return new SemanticValue(yyValue, yyStart, yyError);
8896: } else {
8897: yyError = yyError.select("end of file expected", yyStart);
8898: }
8899:
8900: // Done.
8901: return yyError;
8902: }
8903:
8904: // =========================================================================
8905:
8906: /**
8907: * Parse nonterminal xtc.util.Null.Null.
8908: *
8909: * @param yyStart The index.
8910: * @return The result.
8911: * @throws IOException Signals an I/O error.
8912: */
8913: private Result pNull(final int yyStart) throws IOException {
8914: Object yyValue;
8915: ParseError yyError = ParseError.DUMMY;
8916:
8917: // Alternative 1.
8918:
8919: yyValue = null;
8920:
8921: if (yyValue instanceof Node) {
8922: setLocation((Node) yyValue, yyStart);
8923: }
8924: return new SemanticValue(yyValue, yyStart, yyError);
8925: }
8926:
8927: // =========================================================================
8928:
8929: static {
8930: add(JAVA_KEYWORDS, new Object[] { "abstract", "default", "if",
8931: "private", "this", "boolean", "do", "implements",
8932: "protected", "throw", "break", "double", "import",
8933: "public", "throws", "byte", "else", "instanceof",
8934: "return", "transient", "case", "extends", "int",
8935: "short", "try", "catch", "final", "interface",
8936: "static", "void", "char", "finally", "long",
8937: "strictfp", "volatile", "class", "float", "native",
8938: "super", "while", "const", "for", "new", "switch",
8939: "continue", "goto", "package", "synchronized" });
8940: }
8941: static {
8942: add(JAVA_KEYWORDS, new Object[] { "property" });
8943: }
8944:
8945: // =========================================================================
8946:
8947: /**
8948: * Add the specified values to the specified set.
8949: *
8950: * @param set The set.
8951: * @param values The new values.
8952: */
8953: protected static void add(Set set, Object[] values) {
8954: for (int i = 0; i < values.length; i++) {
8955: set.add(values[i]);
8956: }
8957: }
8958:
8959: }
|