00001: // ===========================================================================
00002: // This file has been generated by
00003: // Rats! Parser Generator, version 1.13.2,
00004: // (C) 2004-2007 Robert Grimm,
00005: // on Tuesday, November 27, 2007 at 1:37:27 PM.
00006: // Edit at your own risk.
00007: // ===========================================================================
00008:
00009: package xtc.lang.jeannie;
00010:
00011: import java.io.Reader;
00012: import java.io.IOException;
00013:
00014: import java.util.HashSet;
00015: import java.util.Set;
00016:
00017: import xtc.util.Action;
00018: import xtc.util.Pair;
00019:
00020: import xtc.tree.Node;
00021: import xtc.tree.GNode;
00022:
00023: import xtc.parser.ParserBase;
00024: import xtc.parser.Column;
00025: import xtc.parser.Result;
00026: import xtc.parser.SemanticValue;
00027: import xtc.parser.ParseError;
00028:
00029: import xtc.lang.CParserState;
00030:
00031: /**
00032: * Packrat parser for grammar <code>xtc.lang.jeannie.Debugger</code>.
00033: *
00034: * <p />This class has been generated by the <i>Rats!</i> parser
00035: * generator, version 1.13.2, (C) 2004-2007 Robert Grimm.
00036: */
00037: public final class DebuggerParser extends ParserBase {
00038:
00039: /** The RELOCATE flag. */
00040: public static final boolean RELOCATE = true;
00041:
00042: /** The C_KEYWORDS set. */
00043: public static final Set<String> C_KEYWORDS = new HashSet<String>();
00044:
00045: /** The GCC flag. */
00046: public static final boolean GCC = true;
00047:
00048: /** The JAVA_KEYWORDS set. */
00049: public static final Set<String> JAVA_KEYWORDS = new HashSet<String>();
00050:
00051: /** The C99 flag. */
00052: public static final boolean C99 = true;
00053:
00054: // =========================================================================
00055:
00056: /** Chunk 1 of memoized results. */
00057: static final class Chunk1 {
00058: Result fMetaVariable;
00059: Result fUnambiguousCommand;
00060: Result fRestOfLine;
00061: Result fConstant;
00062: Result fCConstant$Exponent;
00063: Result f$$Shared27;
00064: Result fBinaryExponent;
00065: Result fCConstant$CharacterLiteral;
00066: Result fCConstant$CharacterLiteral$$Plus1;
00067: Result fCConstant$StringConstant;
00068: }
00069:
00070: /** Chunk 2 of memoized results. */
00071: static final class Chunk2 {
00072: Result fCConstant$StringConstant$$Plus1;
00073: Result fCConstant$StringLiteral;
00074: Result fCConstant$StringLiteral$$Star1;
00075: Result fSymbol;
00076: Result fCIdentifier$Identifier;
00077: Result fKeyword;
00078: Result fCIdentifier$Word;
00079: Result fResultType;
00080: Result fType;
00081: Result fJavaType$TypeName;
00082: }
00083:
00084: /** Chunk 3 of memoized results. */
00085: static final class Chunk3 {
00086: Result fPrimitiveType;
00087: Result fDimensions;
00088: Result fDimensions$$Plus1;
00089: Result fLiteral;
00090: Result fIntegerLiteral;
00091: Result fQualifiedIdentifier;
00092: Result fQualifiedIdentifier$$Star1;
00093: Result fJavaIdentifier$Identifier;
00094: Result fJavaIdentifier$Word;
00095: Result fJeannieC$DeclarationSpecifiers;
00096: }
00097:
00098: /** Chunk 4 of memoized results. */
00099: static final class Chunk4 {
00100: Result fJeannieC$InitializedDeclaratorList;
00101: Result fJeannieC$InitializedDeclaratorList$$Star1;
00102: Result fJeannieC$SpecifierQualifierList;
00103: Result fJeannieC$AttributedDeclarator;
00104: Result fJeannieC$Declarator;
00105: Result fJeannieC$Pointer;
00106: Result fJeannieC$ParameterTypeList;
00107: Result fJeannieC$AbstractDeclarator;
00108: Result f$$Shared9;
00109: Result fJeannieC$TypeName;
00110: }
00111:
00112: /** Chunk 5 of memoized results. */
00113: static final class Chunk5 {
00114: Result fJeannieC$AttributeSpecifierList;
00115: Result fJeannieC$AttributeSpecifier;
00116: Result f$$Shared10;
00117: Result fJeannieC$Statement;
00118: Result fJeannieC$CompoundStatement;
00119: Result fJeannieC$CommaExpression;
00120: Result fJeannieC$AssignmentExpression;
00121: Result f$$Shared11;
00122: Result fJeannieC$ConditionalExpression;
00123: Result fJeannieC$LogicalOrExpression;
00124: }
00125:
00126: /** Chunk 6 of memoized results. */
00127: static final class Chunk6 {
00128: Result f$$Shared12;
00129: Result f$$Shared13;
00130: Result f$$Shared14;
00131: Result f$$Shared15;
00132: Result f$$Shared16;
00133: Result fJeannieC$CastExpression;
00134: Result fJeannieC$UnaryExpression;
00135: Result f$$Shared17;
00136: Result fJeannieC$ExpressionList;
00137: Result fJeannieC$ExpressionList$$Star1;
00138: }
00139:
00140: /** Chunk 7 of memoized results. */
00141: static final class Chunk7 {
00142: Result fJeannieC$AssemblyOperands;
00143: Result fJeannieC$AssemblyOperands$$Star1;
00144: Result fJeannieC$AssemblyOperand;
00145: Result f$$Shared18;
00146: Result f$$Shared25;
00147: Result fJeannieC$CInCBlock;
00148: Result fJeannieC$CInCBlock$$Star1;
00149: Result fJeannieC$CInCBlock$$Star2;
00150: Result fJeannieC$JavaThrows;
00151: Result fDebuggerC$DeclarationSpecifiers;
00152: }
00153:
00154: /** Chunk 8 of memoized results. */
00155: static final class Chunk8 {
00156: Result fDebuggerC$InitializedDeclaratorList;
00157: Result fDebuggerC$InitializedDeclaratorList$$Star1;
00158: Result fDebuggerC$SpecifierQualifierList;
00159: Result fDebuggerC$AttributedDeclarator;
00160: Result fDebuggerC$Declarator;
00161: Result fDebuggerC$Pointer;
00162: Result fDebuggerC$ParameterTypeList;
00163: Result fDebuggerC$AbstractDeclarator;
00164: Result fDebuggerC$TypeName;
00165: Result fDebuggerC$AttributeSpecifierList;
00166: }
00167:
00168: /** Chunk 9 of memoized results. */
00169: static final class Chunk9 {
00170: Result fDebuggerC$AttributeSpecifier;
00171: Result fDebuggerC$Statement;
00172: Result fDebuggerC$CompoundStatement;
00173: Result fDebuggerC$CommaExpression;
00174: Result fDebuggerC$AssignmentExpression;
00175: Result fDebuggerC$ConditionalExpression;
00176: Result fDebuggerC$LogicalOrExpression;
00177: Result fDebuggerC$CastExpression;
00178: Result fDebuggerC$UnaryExpression;
00179: Result fDebuggerC$ExpressionList;
00180: }
00181:
00182: /** Chunk 10 of memoized results. */
00183: static final class Chunk10 {
00184: Result fDebuggerC$ExpressionList$$Star1;
00185: Result fDebuggerC$AssemblyOperands;
00186: Result fDebuggerC$AssemblyOperands$$Star1;
00187: Result fDebuggerC$AssemblyOperand;
00188: Result fDebuggerC$CInCBlock;
00189: Result fDebuggerC$CInCBlock$$Star1;
00190: Result fDebuggerC$CInCBlock$$Star2;
00191: Result fDebuggerC$JavaThrows;
00192: Result fJeannieJava$Modifiers;
00193: Result fJeannieJava$FormalParameters;
00194: }
00195:
00196: /** Chunk 11 of memoized results. */
00197: static final class Chunk11 {
00198: Result fJeannieJava$FormalParameters$$Star1;
00199: Result fJeannieJava$Declarators;
00200: Result fJeannieJava$Declarators$$Star1;
00201: Result fJeannieJava$Block;
00202: Result fJeannieJava$ParExpression;
00203: Result fJeannieJava$CatchClause;
00204: Result fJeannieJava$Expression;
00205: Result f$$Shared21;
00206: Result fJeannieJava$ConditionalExpression;
00207: Result fJeannieJava$LogicalOrExpression;
00208: }
00209:
00210: /** Chunk 12 of memoized results. */
00211: static final class Chunk12 {
00212: Result fJeannieJava$RelationalExpression;
00213: Result f$$Shared22;
00214: Result f$$Shared23;
00215: Result fJeannieJava$VariableInitializer;
00216: Result f$$Shared26;
00217: Result fJeannieJava$JavaInJavaBlock;
00218: Result fJeannieJava$JavaInJavaBlock$$Star1;
00219: Result fDebuggerJava$Modifiers;
00220: Result fDebuggerJava$FormalParameters;
00221: Result fDebuggerJava$FormalParameters$$Star1;
00222: }
00223:
00224: /** Chunk 13 of memoized results. */
00225: static final class Chunk13 {
00226: Result fDebuggerJava$Declarators;
00227: Result fDebuggerJava$Declarators$$Star1;
00228: Result fDebuggerJava$Block;
00229: Result fDebuggerJava$ParExpression;
00230: Result fDebuggerJava$CatchClause;
00231: Result fDebuggerJava$Expression;
00232: Result fDebuggerJava$ConditionalExpression;
00233: Result fDebuggerJava$LogicalOrExpression;
00234: Result fDebuggerJava$RelationalExpression;
00235: Result fDebuggerJava$VariableInitializer;
00236: }
00237:
00238: // =========================================================================
00239:
00240: /** Memoization table column. */
00241: static final class DebuggerParserColumn extends Column {
00242: Chunk1 chunk1;
00243: Chunk2 chunk2;
00244: Chunk3 chunk3;
00245: Chunk4 chunk4;
00246: Chunk5 chunk5;
00247: Chunk6 chunk6;
00248: Chunk7 chunk7;
00249: Chunk8 chunk8;
00250: Chunk9 chunk9;
00251: Chunk10 chunk10;
00252: Chunk11 chunk11;
00253: Chunk12 chunk12;
00254: Chunk13 chunk13;
00255: }
00256:
00257: // =========================================================================
00258:
00259: /** The global state object. */
00260: protected final CParserState yyState;
00261:
00262: // =========================================================================
00263:
00264: /**
00265: * Create a new packrat parser.
00266: *
00267: * @param reader The reader.
00268: * @param file The file name.
00269: */
00270: public DebuggerParser(final Reader reader, final String file) {
00271: super (reader, file);
00272: yyState = new CParserState();
00273: }
00274:
00275: /**
00276: * Create a new packrat parser.
00277: *
00278: * @param reader The file reader.
00279: * @param file The file name.
00280: * @param size The file size.
00281: */
00282: public DebuggerParser(final Reader reader, final String file,
00283: final int size) {
00284: super (reader, file, size);
00285: yyState = new CParserState();
00286: }
00287:
00288: // =========================================================================
00289:
00290: protected Column newColumn() {
00291: return new DebuggerParserColumn();
00292: }
00293:
00294: // =========================================================================
00295:
00296: /**
00297: * Parse nonterminal xtc.lang.jeannie.Debugger.MetaVariable.
00298: *
00299: * @param yyStart The index.
00300: * @return The result.
00301: * @throws IOException Signals an I/O error.
00302: */
00303: private Result pMetaVariable(final int yyStart) throws IOException {
00304: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
00305: if (null == yyColumn.chunk1)
00306: yyColumn.chunk1 = new Chunk1();
00307: if (null == yyColumn.chunk1.fMetaVariable)
00308: yyColumn.chunk1.fMetaVariable = pMetaVariable$1(yyStart);
00309: return yyColumn.chunk1.fMetaVariable;
00310: }
00311:
00312: /** Actually parse xtc.lang.jeannie.Debugger.MetaVariable. */
00313: private Result pMetaVariable$1(final int yyStart)
00314: throws IOException {
00315: int yyC;
00316: int yyIndex;
00317: Result yyResult;
00318: Node yyValue;
00319: ParseError yyError = ParseError.DUMMY;
00320:
00321: // Alternative 1.
00322:
00323: yyC = character(yyStart);
00324: if ('$' == yyC) {
00325: yyIndex = yyStart + 1;
00326:
00327: yyResult = pJavaIdentifier$Identifier(yyIndex);
00328: yyError = yyResult.select(yyError);
00329: if (yyResult.hasValue()) {
00330: final String v$g$1 = yyResult.semanticValue();
00331:
00332: yyValue = GNode.create("MetaVariable", v$g$1);
00333: yyValue.setLocation(location(yyStart));
00334:
00335: return yyResult.createValue(yyValue, yyError);
00336: }
00337: }
00338:
00339: // Done.
00340: yyError = yyError.select("meta variable expected", yyStart);
00341: return yyError;
00342: }
00343:
00344: // =========================================================================
00345:
00346: /**
00347: * Parse nonterminal xtc.lang.jeannie.Debugger.CCommand.
00348: *
00349: * @param yyStart The index.
00350: * @return The result.
00351: * @throws IOException Signals an I/O error.
00352: */
00353: public Result pCCommand(final int yyStart) throws IOException {
00354: Result yyResult;
00355: Node yyValue;
00356: ParseError yyError = ParseError.DUMMY;
00357:
00358: // Alternative 1.
00359:
00360: yyResult = pSpacing(yyStart);
00361: yyError = yyResult.select(yyError);
00362: if (yyResult.hasValue()) {
00363:
00364: final int yyChoice1 = yyResult.index;
00365:
00366: // Nested alternative <Unambiguous>.
00367:
00368: yyResult = pUnambiguousCommand(yyChoice1);
00369: yyError = yyResult.select(yyError);
00370: if (yyResult.hasValue()) {
00371: yyValue = yyResult.semanticValue();
00372:
00373: return yyResult.createValue(yyValue, yyError);
00374: }
00375:
00376: // Nested alternative <Print>.
00377:
00378: yyResult = pPrintCExpressionCommand(yyChoice1);
00379: yyError = yyResult.select(yyError);
00380: if (yyResult.hasValue()) {
00381: yyValue = yyResult.semanticValue();
00382:
00383: return yyResult.createValue(yyValue, yyError);
00384: }
00385:
00386: // Nested alternative <Watch>.
00387:
00388: yyResult = pWatchCExpressionCommand(yyChoice1);
00389: yyError = yyResult.select(yyError);
00390: if (yyResult.hasValue()) {
00391: yyValue = yyResult.semanticValue();
00392:
00393: return yyResult.createValue(yyValue, yyError);
00394: }
00395: }
00396:
00397: // Done.
00398: return yyError;
00399: }
00400:
00401: // =========================================================================
00402:
00403: /**
00404: * Parse nonterminal xtc.lang.jeannie.Debugger.JavaCommand.
00405: *
00406: * @param yyStart The index.
00407: * @return The result.
00408: * @throws IOException Signals an I/O error.
00409: */
00410: public Result pJavaCommand(final int yyStart) throws IOException {
00411: Result yyResult;
00412: Node yyValue;
00413: ParseError yyError = ParseError.DUMMY;
00414:
00415: // Alternative 1.
00416:
00417: yyResult = pSpacing(yyStart);
00418: yyError = yyResult.select(yyError);
00419: if (yyResult.hasValue()) {
00420:
00421: final int yyChoice1 = yyResult.index;
00422:
00423: // Nested alternative <Unambiguous>.
00424:
00425: yyResult = pUnambiguousCommand(yyChoice1);
00426: yyError = yyResult.select(yyError);
00427: if (yyResult.hasValue()) {
00428: yyValue = yyResult.semanticValue();
00429:
00430: return yyResult.createValue(yyValue, yyError);
00431: }
00432:
00433: // Nested alternative <Print>.
00434:
00435: yyResult = pPrintJavaExpressionCommand(yyChoice1);
00436: yyError = yyResult.select(yyError);
00437: if (yyResult.hasValue()) {
00438: yyValue = yyResult.semanticValue();
00439:
00440: return yyResult.createValue(yyValue, yyError);
00441: }
00442:
00443: // Nested alternative <Watch>.
00444:
00445: yyResult = pWatchJavaFieldCommand(yyChoice1);
00446: yyError = yyResult.select(yyError);
00447: if (yyResult.hasValue()) {
00448: yyValue = yyResult.semanticValue();
00449:
00450: return yyResult.createValue(yyValue, yyError);
00451: }
00452: }
00453:
00454: // Done.
00455: return yyError;
00456: }
00457:
00458: // =========================================================================
00459:
00460: /**
00461: * Parse nonterminal xtc.lang.jeannie.Debugger.UnambiguousCommand.
00462: *
00463: * @param yyStart The index.
00464: * @return The result.
00465: * @throws IOException Signals an I/O error.
00466: */
00467: private Result pUnambiguousCommand(final int yyStart)
00468: throws IOException {
00469: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
00470: if (null == yyColumn.chunk1)
00471: yyColumn.chunk1 = new Chunk1();
00472: if (null == yyColumn.chunk1.fUnambiguousCommand)
00473: yyColumn.chunk1.fUnambiguousCommand = pUnambiguousCommand$1(yyStart);
00474: return yyColumn.chunk1.fUnambiguousCommand;
00475: }
00476:
00477: /** Actually parse xtc.lang.jeannie.Debugger.UnambiguousCommand. */
00478: private Result pUnambiguousCommand$1(final int yyStart)
00479: throws IOException {
00480: Result yyResult;
00481: Node yyValue;
00482: ParseError yyError = ParseError.DUMMY;
00483:
00484: // Alternative <BreakClass>.
00485:
00486: yyResult = pBreakClassCommand(yyStart);
00487: yyError = yyResult.select(yyError);
00488: if (yyResult.hasValue()) {
00489: yyValue = yyResult.semanticValue();
00490:
00491: return yyResult.createValue(yyValue, yyError);
00492: }
00493:
00494: // Alternative <BreakFile>.
00495:
00496: yyResult = pBreakFileCommand(yyStart);
00497: yyError = yyResult.select(yyError);
00498: if (yyResult.hasValue()) {
00499: yyValue = yyResult.semanticValue();
00500:
00501: return yyResult.createValue(yyValue, yyError);
00502: }
00503:
00504: // Alternative <C2j>.
00505:
00506: yyResult = pC2jCommand(yyStart);
00507: yyError = yyResult.select(yyError);
00508: if (yyResult.hasValue()) {
00509: yyValue = yyResult.semanticValue();
00510:
00511: return yyResult.createValue(yyValue, yyError);
00512: }
00513:
00514: // Alternative <Continue>.
00515:
00516: yyResult = pContinueCommand(yyStart);
00517: yyError = yyResult.select(yyError);
00518: if (yyResult.hasValue()) {
00519: yyValue = yyResult.semanticValue();
00520:
00521: return yyResult.createValue(yyValue, yyError);
00522: }
00523:
00524: // Alternative <Delete>.
00525:
00526: yyResult = pDeleteCommand(yyStart);
00527: yyError = yyResult.select(yyError);
00528: if (yyResult.hasValue()) {
00529: yyValue = yyResult.semanticValue();
00530:
00531: return yyResult.createValue(yyValue, yyError);
00532: }
00533:
00534: // Alternative <Down>.
00535:
00536: yyResult = pDownCommand(yyStart);
00537: yyError = yyResult.select(yyError);
00538: if (yyResult.hasValue()) {
00539: yyValue = yyResult.semanticValue();
00540:
00541: return yyResult.createValue(yyValue, yyError);
00542: }
00543:
00544: // Alternative <Exit>.
00545:
00546: yyResult = pExitCommand(yyStart);
00547: yyError = yyResult.select(yyError);
00548: if (yyResult.hasValue()) {
00549: yyValue = yyResult.semanticValue();
00550:
00551: return yyResult.createValue(yyValue, yyError);
00552: }
00553:
00554: // Alternative <Gdb>.
00555:
00556: yyResult = pGdbCommand(yyStart);
00557: yyError = yyResult.select(yyError);
00558: if (yyResult.hasValue()) {
00559: yyValue = yyResult.semanticValue();
00560:
00561: return yyResult.createValue(yyValue, yyError);
00562: }
00563:
00564: // Alternative <Help>.
00565:
00566: yyResult = pHelpCommand(yyStart);
00567: yyError = yyResult.select(yyError);
00568: if (yyResult.hasValue()) {
00569: yyValue = yyResult.semanticValue();
00570:
00571: return yyResult.createValue(yyValue, yyError);
00572: }
00573:
00574: // Alternative <InfoBreak>.
00575:
00576: yyResult = pInfoBreakCommand(yyStart);
00577: yyError = yyResult.select(yyError);
00578: if (yyResult.hasValue()) {
00579: yyValue = yyResult.semanticValue();
00580:
00581: return yyResult.createValue(yyValue, yyError);
00582: }
00583:
00584: // Alternative <InfoWatch>.
00585:
00586: yyResult = pInfoWatchCommand(yyStart);
00587: yyError = yyResult.select(yyError);
00588: if (yyResult.hasValue()) {
00589: yyValue = yyResult.semanticValue();
00590:
00591: return yyResult.createValue(yyValue, yyError);
00592: }
00593:
00594: // Alternative <InitJ>.
00595:
00596: yyResult = pInitJCommand(yyStart);
00597: yyError = yyResult.select(yyError);
00598: if (yyResult.hasValue()) {
00599: yyValue = yyResult.semanticValue();
00600:
00601: return yyResult.createValue(yyValue, yyError);
00602: }
00603:
00604: // Alternative <J2c>.
00605:
00606: yyResult = pJ2cCommand(yyStart);
00607: yyError = yyResult.select(yyError);
00608: if (yyResult.hasValue()) {
00609: yyValue = yyResult.semanticValue();
00610:
00611: return yyResult.createValue(yyValue, yyError);
00612: }
00613:
00614: // Alternative <Jdb>.
00615:
00616: yyResult = pJdbCommand(yyStart);
00617: yyError = yyResult.select(yyError);
00618: if (yyResult.hasValue()) {
00619: yyValue = yyResult.semanticValue();
00620:
00621: return yyResult.createValue(yyValue, yyError);
00622: }
00623:
00624: // Alternative <JRet>.
00625:
00626: yyResult = pJRetCommand(yyStart);
00627: yyError = yyResult.select(yyError);
00628: if (yyResult.hasValue()) {
00629: yyValue = yyResult.semanticValue();
00630:
00631: return yyResult.createValue(yyValue, yyError);
00632: }
00633:
00634: // Alternative <List>.
00635:
00636: yyResult = pListCommand(yyStart);
00637: yyError = yyResult.select(yyError);
00638: if (yyResult.hasValue()) {
00639: yyValue = yyResult.semanticValue();
00640:
00641: return yyResult.createValue(yyValue, yyError);
00642: }
00643:
00644: // Alternative <Locals>.
00645:
00646: yyResult = pLocalsCommand(yyStart);
00647: yyError = yyResult.select(yyError);
00648: if (yyResult.hasValue()) {
00649: yyValue = yyResult.semanticValue();
00650:
00651: return yyResult.createValue(yyValue, yyError);
00652: }
00653:
00654: // Alternative <Next>.
00655:
00656: yyResult = pNextCommand(yyStart);
00657: yyError = yyResult.select(yyError);
00658: if (yyResult.hasValue()) {
00659: yyValue = yyResult.semanticValue();
00660:
00661: return yyResult.createValue(yyValue, yyError);
00662: }
00663:
00664: // Alternative <Run>.
00665:
00666: yyResult = pRunCommand(yyStart);
00667: yyError = yyResult.select(yyError);
00668: if (yyResult.hasValue()) {
00669: yyValue = yyResult.semanticValue();
00670:
00671: return yyResult.createValue(yyValue, yyError);
00672: }
00673:
00674: // Alternative <Stat>.
00675:
00676: yyResult = pStatCommand(yyStart);
00677: yyError = yyResult.select(yyError);
00678: if (yyResult.hasValue()) {
00679: yyValue = yyResult.semanticValue();
00680:
00681: return yyResult.createValue(yyValue, yyError);
00682: }
00683:
00684: // Alternative <Step>.
00685:
00686: yyResult = pStepCommand(yyStart);
00687: yyError = yyResult.select(yyError);
00688: if (yyResult.hasValue()) {
00689: yyValue = yyResult.semanticValue();
00690:
00691: return yyResult.createValue(yyValue, yyError);
00692: }
00693:
00694: // Alternative <Up>.
00695:
00696: yyResult = pUpCommand(yyStart);
00697: yyError = yyResult.select(yyError);
00698: if (yyResult.hasValue()) {
00699: yyValue = yyResult.semanticValue();
00700:
00701: return yyResult.createValue(yyValue, yyError);
00702: }
00703:
00704: // Alternative <Where>.
00705:
00706: yyResult = pWhereCommand(yyStart);
00707: yyError = yyResult.select(yyError);
00708: if (yyResult.hasValue()) {
00709: yyValue = yyResult.semanticValue();
00710:
00711: return yyResult.createValue(yyValue, yyError);
00712: }
00713:
00714: // Done.
00715: return yyError;
00716: }
00717:
00718: // =========================================================================
00719:
00720: /**
00721: * Parse nonterminal xtc.lang.jeannie.Debugger.BreakClassCommand.
00722: *
00723: * @param yyStart The index.
00724: * @return The result.
00725: * @throws IOException Signals an I/O error.
00726: */
00727: private Result pBreakClassCommand(final int yyStart)
00728: throws IOException {
00729: Result yyResult;
00730: int yyBase;
00731: Node yyValue;
00732: ParseError yyError = ParseError.DUMMY;
00733:
00734: // Alternative 1.
00735:
00736: yyResult = pJavaIdentifier$Word(yyStart);
00737: yyError = yyResult.select(yyError);
00738: if (yyResult.hasValue("stop")) {
00739:
00740: yyBase = yyResult.index;
00741: yyResult = pJavaIdentifier$Word(yyBase);
00742: yyError = yyResult.select(yyError);
00743: if (yyResult.hasValue("at")) {
00744:
00745: yyResult = pQualifiedIdentifier(yyResult.index);
00746: yyError = yyResult.select(yyError);
00747: if (yyResult.hasValue()) {
00748: final Node v$g$1 = yyResult.semanticValue();
00749:
00750: yyBase = yyResult.index;
00751: yyResult = pSymbol(yyBase);
00752: yyError = yyResult.select(yyError);
00753: if (yyResult.hasValue(":")) {
00754:
00755: yyResult = pLineNumber(yyResult.index);
00756: yyError = yyResult.select(yyError);
00757: if (yyResult.hasValue()) {
00758: final String v$g$2 = yyResult
00759: .semanticValue();
00760:
00761: yyResult = pSpacing(yyResult.index);
00762: yyError = yyResult.select(yyError);
00763: if (yyResult.hasValue()) {
00764:
00765: yyValue = GNode.create(
00766: "BreakClassCommand", v$g$1,
00767: v$g$2);
00768: yyValue.setLocation(location(yyStart));
00769:
00770: return yyResult.createValue(yyValue,
00771: yyError);
00772: }
00773: }
00774: } else {
00775: yyError = yyError.select("\":\" expected",
00776: yyBase);
00777: }
00778: }
00779: } else {
00780: yyError = yyError.select("\"at\" expected", yyBase);
00781: }
00782: }
00783:
00784: // Done.
00785: yyError = yyError.select("break class command expected",
00786: yyStart);
00787: return yyError;
00788: }
00789:
00790: // =========================================================================
00791:
00792: /**
00793: * Parse nonterminal xtc.lang.jeannie.Debugger.BreakFileCommand.
00794: *
00795: * @param yyStart The index.
00796: * @return The result.
00797: * @throws IOException Signals an I/O error.
00798: */
00799: private Result pBreakFileCommand(final int yyStart)
00800: throws IOException {
00801: Result yyResult;
00802: int yyBase;
00803: Node yyValue;
00804: ParseError yyError = ParseError.DUMMY;
00805:
00806: // Alternative 1.
00807:
00808: yyResult = pJavaIdentifier$Word(yyStart);
00809: yyError = yyResult.select(yyError);
00810: if (yyResult.hasValue("break")) {
00811:
00812: yyResult = pDebugger$FileName(yyResult.index);
00813: yyError = yyResult.select(yyError);
00814: if (yyResult.hasValue()) {
00815: final String v$g$1 = yyResult.semanticValue();
00816:
00817: yyResult = pSpacing(yyResult.index);
00818: yyError = yyResult.select(yyError);
00819: if (yyResult.hasValue()) {
00820:
00821: yyBase = yyResult.index;
00822: yyResult = pSymbol(yyBase);
00823: yyError = yyResult.select(yyError);
00824: if (yyResult.hasValue(":")) {
00825:
00826: yyResult = pLineNumber(yyResult.index);
00827: yyError = yyResult.select(yyError);
00828: if (yyResult.hasValue()) {
00829: final String v$g$2 = yyResult
00830: .semanticValue();
00831:
00832: yyResult = pSpacing(yyResult.index);
00833: yyError = yyResult.select(yyError);
00834: if (yyResult.hasValue()) {
00835:
00836: yyValue = GNode.create(
00837: "BreakFileCommand", v$g$1,
00838: v$g$2);
00839: yyValue.setLocation(location(yyStart));
00840:
00841: return yyResult.createValue(yyValue,
00842: yyError);
00843: }
00844: }
00845: } else {
00846: yyError = yyError.select("\":\" expected",
00847: yyBase);
00848: }
00849: }
00850: }
00851: }
00852:
00853: // Done.
00854: yyError = yyError
00855: .select("break file command expected", yyStart);
00856: return yyError;
00857: }
00858:
00859: // =========================================================================
00860:
00861: /**
00862: * Parse nonterminal xtc.lang.jeannie.Debugger.FileName.
00863: *
00864: * @param yyStart The index.
00865: * @return The result.
00866: * @throws IOException Signals an I/O error.
00867: */
00868: private Result pDebugger$FileName(final int yyStart)
00869: throws IOException {
00870: int yyC;
00871: int yyIndex;
00872: int yyRepetition1;
00873: boolean yyRepeated1;
00874: String yyValue;
00875: ParseError yyError = ParseError.DUMMY;
00876:
00877: // Alternative 1.
00878:
00879: yyRepetition1 = yyStart;
00880: yyRepeated1 = false;
00881: while (true) {
00882:
00883: final int yyChoice1 = yyRepetition1;
00884:
00885: // Nested alternative 1.
00886:
00887: yyC = character(yyChoice1);
00888: if (-1 != yyC) {
00889: yyIndex = yyChoice1 + 1;
00890: if (('$' == yyC) || (('.' <= yyC) && (yyC <= '9'))
00891: || (('A' <= yyC) && (yyC <= 'Z'))
00892: || ('_' == yyC)
00893: || (('a' <= yyC) && (yyC <= 'z'))) {
00894:
00895: yyRepetition1 = yyIndex;
00896: yyRepeated1 = true;
00897: continue;
00898: }
00899: }
00900:
00901: // Nested alternative 2.
00902:
00903: yyC = character(yyChoice1);
00904: if ('-' == yyC) {
00905: yyIndex = yyChoice1 + 1;
00906:
00907: yyRepetition1 = yyIndex;
00908: yyRepeated1 = true;
00909: continue;
00910: }
00911: break;
00912: }
00913:
00914: if (yyRepeated1) {
00915:
00916: yyValue = difference(yyStart, yyRepetition1);
00917:
00918: return new SemanticValue(yyValue, yyRepetition1, yyError);
00919: }
00920:
00921: // Done.
00922: yyError = yyError.select("file name expected", yyStart);
00923: return yyError;
00924: }
00925:
00926: // =========================================================================
00927:
00928: /**
00929: * Parse nonterminal xtc.lang.jeannie.Debugger.C2jCommand.
00930: *
00931: * @param yyStart The index.
00932: * @return The result.
00933: * @throws IOException Signals an I/O error.
00934: */
00935: private Result pC2jCommand(final int yyStart) throws IOException {
00936: Result yyResult;
00937: Node yyValue;
00938: ParseError yyError = ParseError.DUMMY;
00939:
00940: // Alternative 1.
00941:
00942: yyResult = pJavaIdentifier$Word(yyStart);
00943: yyError = yyResult.select(yyError);
00944: if (yyResult.hasValue("c2j")) {
00945:
00946: yyValue = GNode.create("C2jCommand", false);
00947: yyValue.setLocation(location(yyStart));
00948:
00949: return yyResult.createValue(yyValue, yyError);
00950: }
00951:
00952: // Done.
00953: yyError = yyError.select("c2j command expected", yyStart);
00954: return yyError;
00955: }
00956:
00957: // =========================================================================
00958:
00959: /**
00960: * Parse nonterminal xtc.lang.jeannie.Debugger.ContinueCommand.
00961: *
00962: * @param yyStart The index.
00963: * @return The result.
00964: * @throws IOException Signals an I/O error.
00965: */
00966: private Result pContinueCommand(final int yyStart)
00967: throws IOException {
00968: Result yyResult;
00969: Node yyValue;
00970: ParseError yyError = ParseError.DUMMY;
00971:
00972: // Alternative 1.
00973:
00974: yyResult = pJavaIdentifier$Word(yyStart);
00975: yyError = yyResult.select(yyError);
00976: if (yyResult.hasValue("continue")) {
00977:
00978: yyValue = GNode.create("ContinueCommand", false);
00979: yyValue.setLocation(location(yyStart));
00980:
00981: return yyResult.createValue(yyValue, yyError);
00982: }
00983:
00984: // Done.
00985: yyError = yyError.select("continue command expected", yyStart);
00986: return yyError;
00987: }
00988:
00989: // =========================================================================
00990:
00991: /**
00992: * Parse nonterminal xtc.lang.jeannie.Debugger.DeleteCommand.
00993: *
00994: * @param yyStart The index.
00995: * @return The result.
00996: * @throws IOException Signals an I/O error.
00997: */
00998: private Result pDeleteCommand(final int yyStart) throws IOException {
00999: Result yyResult;
01000: Node yyValue;
01001: ParseError yyError = ParseError.DUMMY;
01002:
01003: // Alternative 1.
01004:
01005: yyResult = pJavaIdentifier$Word(yyStart);
01006: yyError = yyResult.select(yyError);
01007: if (yyResult.hasValue("delete")) {
01008:
01009: yyResult = pIntegerLiteral(yyResult.index);
01010: yyError = yyResult.select(yyError);
01011: if (yyResult.hasValue()) {
01012: final Node v$g$1 = yyResult.semanticValue();
01013:
01014: yyValue = GNode.create("DeleteCommand", v$g$1);
01015: yyValue.setLocation(location(yyStart));
01016:
01017: return yyResult.createValue(yyValue, yyError);
01018: }
01019: }
01020:
01021: // Done.
01022: yyError = yyError.select("delete command expected", yyStart);
01023: return yyError;
01024: }
01025:
01026: // =========================================================================
01027:
01028: /**
01029: * Parse nonterminal xtc.lang.jeannie.Debugger.DownCommand.
01030: *
01031: * @param yyStart The index.
01032: * @return The result.
01033: * @throws IOException Signals an I/O error.
01034: */
01035: private Result pDownCommand(final int yyStart) throws IOException {
01036: Result yyResult;
01037: Node yyValue;
01038: ParseError yyError = ParseError.DUMMY;
01039:
01040: // Alternative 1.
01041:
01042: yyResult = pJavaIdentifier$Word(yyStart);
01043: yyError = yyResult.select(yyError);
01044: if (yyResult.hasValue("down")) {
01045:
01046: yyResult = pIntegerLiteral(yyResult.index);
01047: yyError = yyResult.select(yyError);
01048: if (yyResult.hasValue()) {
01049: final Node v$g$1 = yyResult.semanticValue();
01050:
01051: yyValue = GNode.create("DownCommand", v$g$1);
01052: yyValue.setLocation(location(yyStart));
01053:
01054: return yyResult.createValue(yyValue, yyError);
01055: }
01056: }
01057:
01058: // Done.
01059: yyError = yyError.select("down command expected", yyStart);
01060: return yyError;
01061: }
01062:
01063: // =========================================================================
01064:
01065: /**
01066: * Parse nonterminal xtc.lang.jeannie.Debugger.ExitCommand.
01067: *
01068: * @param yyStart The index.
01069: * @return The result.
01070: * @throws IOException Signals an I/O error.
01071: */
01072: private Result pExitCommand(final int yyStart) throws IOException {
01073: Result yyResult;
01074: Node yyValue;
01075: ParseError yyError = ParseError.DUMMY;
01076:
01077: // Alternative 1.
01078:
01079: yyResult = pJavaIdentifier$Word(yyStart);
01080: yyError = yyResult.select(yyError);
01081: if (yyResult.hasValue("exit")) {
01082:
01083: yyValue = GNode.create("ExitCommand", false);
01084: yyValue.setLocation(location(yyStart));
01085:
01086: return yyResult.createValue(yyValue, yyError);
01087: }
01088:
01089: // Done.
01090: yyError = yyError.select("exit command expected", yyStart);
01091: return yyError;
01092: }
01093:
01094: // =========================================================================
01095:
01096: /**
01097: * Parse nonterminal xtc.lang.jeannie.Debugger.GdbCommand.
01098: *
01099: * @param yyStart The index.
01100: * @return The result.
01101: * @throws IOException Signals an I/O error.
01102: */
01103: private Result pGdbCommand(final int yyStart) throws IOException {
01104: Result yyResult;
01105: Node yyValue;
01106: ParseError yyError = ParseError.DUMMY;
01107:
01108: // Alternative 1.
01109:
01110: yyResult = pJavaIdentifier$Word(yyStart);
01111: yyError = yyResult.select(yyError);
01112: if (yyResult.hasValue("gdb")) {
01113:
01114: yyResult = pRestOfLine(yyResult.index);
01115: yyError = yyResult.select(yyError);
01116: if (yyResult.hasValue()) {
01117: final String v$g$1 = yyResult.semanticValue();
01118:
01119: yyResult = pSpacing(yyResult.index);
01120: yyError = yyResult.select(yyError);
01121: if (yyResult.hasValue()) {
01122:
01123: yyValue = GNode.create("GdbCommand", v$g$1);
01124: yyValue.setLocation(location(yyStart));
01125:
01126: return yyResult.createValue(yyValue, yyError);
01127: }
01128: }
01129: }
01130:
01131: // Done.
01132: yyError = yyError.select("gdb command expected", yyStart);
01133: return yyError;
01134: }
01135:
01136: // =========================================================================
01137:
01138: /**
01139: * Parse nonterminal xtc.lang.jeannie.Debugger.RestOfLine.
01140: *
01141: * @param yyStart The index.
01142: * @return The result.
01143: * @throws IOException Signals an I/O error.
01144: */
01145: private Result pRestOfLine(final int yyStart) throws IOException {
01146: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
01147: if (null == yyColumn.chunk1)
01148: yyColumn.chunk1 = new Chunk1();
01149: if (null == yyColumn.chunk1.fRestOfLine)
01150: yyColumn.chunk1.fRestOfLine = pRestOfLine$1(yyStart);
01151: return yyColumn.chunk1.fRestOfLine;
01152: }
01153:
01154: /** Actually parse xtc.lang.jeannie.Debugger.RestOfLine. */
01155: private Result pRestOfLine$1(final int yyStart) throws IOException {
01156: int yyC;
01157: int yyIndex;
01158: Result yyResult;
01159: String yyValue;
01160: ParseError yyError = ParseError.DUMMY;
01161:
01162: // Alternative 1.
01163:
01164: yyC = character(yyStart);
01165: if (-1 != yyC) {
01166: yyIndex = yyStart + 1;
01167:
01168: switch (yyC) {
01169: case '\n':
01170: case '\r':
01171: /* No match. */
01172: break;
01173:
01174: default: {
01175: yyResult = pRestOfLine(yyIndex);
01176: yyError = yyResult.select(yyError);
01177: if (yyResult.hasValue()) {
01178:
01179: yyValue = difference(yyStart, yyResult.index);
01180:
01181: return yyResult.createValue(yyValue, yyError);
01182: }
01183: }
01184: }
01185: }
01186:
01187: // Alternative 2.
01188:
01189: yyValue = "";
01190:
01191: return new SemanticValue(yyValue, yyStart, yyError);
01192: }
01193:
01194: // =========================================================================
01195:
01196: /**
01197: * Parse nonterminal xtc.lang.jeannie.Debugger.HelpCommand.
01198: *
01199: * @param yyStart The index.
01200: * @return The result.
01201: * @throws IOException Signals an I/O error.
01202: */
01203: private Result pHelpCommand(final int yyStart) throws IOException {
01204: Result yyResult;
01205: Node yyValue;
01206: ParseError yyError = ParseError.DUMMY;
01207:
01208: // Alternative 1.
01209:
01210: yyResult = pJavaIdentifier$Word(yyStart);
01211: yyError = yyResult.select(yyError);
01212: if (yyResult.hasValue("help")) {
01213:
01214: yyValue = GNode.create("HelpCommand", false);
01215: yyValue.setLocation(location(yyStart));
01216:
01217: return yyResult.createValue(yyValue, yyError);
01218: }
01219:
01220: // Done.
01221: yyError = yyError.select("help command expected", yyStart);
01222: return yyError;
01223: }
01224:
01225: // =========================================================================
01226:
01227: /**
01228: * Parse nonterminal xtc.lang.jeannie.Debugger.InfoBreakCommand.
01229: *
01230: * @param yyStart The index.
01231: * @return The result.
01232: * @throws IOException Signals an I/O error.
01233: */
01234: private Result pInfoBreakCommand(final int yyStart)
01235: throws IOException {
01236: Result yyResult;
01237: int yyBase;
01238: Node yyValue;
01239: ParseError yyError = ParseError.DUMMY;
01240:
01241: // Alternative 1.
01242:
01243: yyResult = pJavaIdentifier$Word(yyStart);
01244: yyError = yyResult.select(yyError);
01245: if (yyResult.hasValue("info")) {
01246:
01247: yyBase = yyResult.index;
01248: yyResult = pJavaIdentifier$Word(yyBase);
01249: yyError = yyResult.select(yyError);
01250: if (yyResult.hasValue("break")) {
01251:
01252: yyValue = GNode.create("InfoBreakCommand", false);
01253: yyValue.setLocation(location(yyStart));
01254:
01255: return yyResult.createValue(yyValue, yyError);
01256: } else {
01257: yyError = yyError.select("\"break\" expected", yyBase);
01258: }
01259: }
01260:
01261: // Done.
01262: yyError = yyError
01263: .select("info break command expected", yyStart);
01264: return yyError;
01265: }
01266:
01267: // =========================================================================
01268:
01269: /**
01270: * Parse nonterminal xtc.lang.jeannie.Debugger.InfoWatchCommand.
01271: *
01272: * @param yyStart The index.
01273: * @return The result.
01274: * @throws IOException Signals an I/O error.
01275: */
01276: private Result pInfoWatchCommand(final int yyStart)
01277: throws IOException {
01278: Result yyResult;
01279: int yyBase;
01280: Node yyValue;
01281: ParseError yyError = ParseError.DUMMY;
01282:
01283: // Alternative 1.
01284:
01285: yyResult = pJavaIdentifier$Word(yyStart);
01286: yyError = yyResult.select(yyError);
01287: if (yyResult.hasValue("info")) {
01288:
01289: yyBase = yyResult.index;
01290: yyResult = pJavaIdentifier$Word(yyBase);
01291: yyError = yyResult.select(yyError);
01292: if (yyResult.hasValue("watch")) {
01293:
01294: yyValue = GNode.create("InfoWatchCommand", false);
01295: yyValue.setLocation(location(yyStart));
01296:
01297: return yyResult.createValue(yyValue, yyError);
01298: } else {
01299: yyError = yyError.select("\"watch\" expected", yyBase);
01300: }
01301: }
01302:
01303: // Done.
01304: yyError = yyError
01305: .select("info watch command expected", yyStart);
01306: return yyError;
01307: }
01308:
01309: // =========================================================================
01310:
01311: /**
01312: * Parse nonterminal xtc.lang.jeannie.Debugger.InitJCommand.
01313: *
01314: * @param yyStart The index.
01315: * @return The result.
01316: * @throws IOException Signals an I/O error.
01317: */
01318: private Result pInitJCommand(final int yyStart) throws IOException {
01319: Result yyResult;
01320: Node yyValue;
01321: ParseError yyError = ParseError.DUMMY;
01322:
01323: // Alternative 1.
01324:
01325: yyResult = pJavaIdentifier$Word(yyStart);
01326: yyError = yyResult.select(yyError);
01327: if (yyResult.hasValue("initj")) {
01328:
01329: yyValue = GNode.create("InitJCommand", false);
01330: yyValue.setLocation(location(yyStart));
01331:
01332: return yyResult.createValue(yyValue, yyError);
01333: }
01334:
01335: // Done.
01336: yyError = yyError.select("init j command expected", yyStart);
01337: return yyError;
01338: }
01339:
01340: // =========================================================================
01341:
01342: /**
01343: * Parse nonterminal xtc.lang.jeannie.Debugger.J2cCommand.
01344: *
01345: * @param yyStart The index.
01346: * @return The result.
01347: * @throws IOException Signals an I/O error.
01348: */
01349: private Result pJ2cCommand(final int yyStart) throws IOException {
01350: Result yyResult;
01351: Node yyValue;
01352: ParseError yyError = ParseError.DUMMY;
01353:
01354: // Alternative 1.
01355:
01356: yyResult = pJavaIdentifier$Word(yyStart);
01357: yyError = yyResult.select(yyError);
01358: if (yyResult.hasValue("j2c")) {
01359:
01360: yyValue = GNode.create("J2cCommand", false);
01361: yyValue.setLocation(location(yyStart));
01362:
01363: return yyResult.createValue(yyValue, yyError);
01364: }
01365:
01366: // Done.
01367: yyError = yyError.select("j2c command expected", yyStart);
01368: return yyError;
01369: }
01370:
01371: // =========================================================================
01372:
01373: /**
01374: * Parse nonterminal xtc.lang.jeannie.Debugger.JdbCommand.
01375: *
01376: * @param yyStart The index.
01377: * @return The result.
01378: * @throws IOException Signals an I/O error.
01379: */
01380: private Result pJdbCommand(final int yyStart) throws IOException {
01381: Result yyResult;
01382: Node yyValue;
01383: ParseError yyError = ParseError.DUMMY;
01384:
01385: // Alternative 1.
01386:
01387: yyResult = pJavaIdentifier$Word(yyStart);
01388: yyError = yyResult.select(yyError);
01389: if (yyResult.hasValue("jdb")) {
01390:
01391: yyResult = pRestOfLine(yyResult.index);
01392: yyError = yyResult.select(yyError);
01393: if (yyResult.hasValue()) {
01394: final String v$g$1 = yyResult.semanticValue();
01395:
01396: yyResult = pSpacing(yyResult.index);
01397: yyError = yyResult.select(yyError);
01398: if (yyResult.hasValue()) {
01399:
01400: yyValue = GNode.create("JdbCommand", v$g$1);
01401: yyValue.setLocation(location(yyStart));
01402:
01403: return yyResult.createValue(yyValue, yyError);
01404: }
01405: }
01406: }
01407:
01408: // Done.
01409: yyError = yyError.select("jdb command expected", yyStart);
01410: return yyError;
01411: }
01412:
01413: // =========================================================================
01414:
01415: /**
01416: * Parse nonterminal xtc.lang.jeannie.Debugger.JRetCommand.
01417: *
01418: * @param yyStart The index.
01419: * @return The result.
01420: * @throws IOException Signals an I/O error.
01421: */
01422: private Result pJRetCommand(final int yyStart) throws IOException {
01423: Result yyResult;
01424: Node yyValue;
01425: ParseError yyError = ParseError.DUMMY;
01426:
01427: // Alternative 1.
01428:
01429: yyResult = pJavaIdentifier$Word(yyStart);
01430: yyError = yyResult.select(yyError);
01431: if (yyResult.hasValue("jret")) {
01432:
01433: yyValue = GNode.create("JRetCommand", false);
01434: yyValue.setLocation(location(yyStart));
01435:
01436: return yyResult.createValue(yyValue, yyError);
01437: }
01438:
01439: // Done.
01440: yyError = yyError.select("j ret command expected", yyStart);
01441: return yyError;
01442: }
01443:
01444: // =========================================================================
01445:
01446: /**
01447: * Parse nonterminal xtc.lang.jeannie.Debugger.ListCommand.
01448: *
01449: * @param yyStart The index.
01450: * @return The result.
01451: * @throws IOException Signals an I/O error.
01452: */
01453: private Result pListCommand(final int yyStart) throws IOException {
01454: Result yyResult;
01455: Node yyValue;
01456: ParseError yyError = ParseError.DUMMY;
01457:
01458: // Alternative 1.
01459:
01460: yyResult = pJavaIdentifier$Word(yyStart);
01461: yyError = yyResult.select(yyError);
01462: if (yyResult.hasValue("list")) {
01463:
01464: yyValue = GNode.create("ListCommand", false);
01465: yyValue.setLocation(location(yyStart));
01466:
01467: return yyResult.createValue(yyValue, yyError);
01468: }
01469:
01470: // Done.
01471: yyError = yyError.select("list command expected", yyStart);
01472: return yyError;
01473: }
01474:
01475: // =========================================================================
01476:
01477: /**
01478: * Parse nonterminal xtc.lang.jeannie.Debugger.LocalsCommand.
01479: *
01480: * @param yyStart The index.
01481: * @return The result.
01482: * @throws IOException Signals an I/O error.
01483: */
01484: private Result pLocalsCommand(final int yyStart) throws IOException {
01485: Result yyResult;
01486: Node yyValue;
01487: ParseError yyError = ParseError.DUMMY;
01488:
01489: // Alternative 1.
01490:
01491: yyResult = pJavaIdentifier$Word(yyStart);
01492: yyError = yyResult.select(yyError);
01493: if (yyResult.hasValue("locals")) {
01494:
01495: yyValue = GNode.create("LocalsCommand", false);
01496: yyValue.setLocation(location(yyStart));
01497:
01498: return yyResult.createValue(yyValue, yyError);
01499: }
01500:
01501: // Done.
01502: yyError = yyError.select("locals command expected", yyStart);
01503: return yyError;
01504: }
01505:
01506: // =========================================================================
01507:
01508: /**
01509: * Parse nonterminal xtc.lang.jeannie.Debugger.NextCommand.
01510: *
01511: * @param yyStart The index.
01512: * @return The result.
01513: * @throws IOException Signals an I/O error.
01514: */
01515: private Result pNextCommand(final int yyStart) throws IOException {
01516: Result yyResult;
01517: Node yyValue;
01518: ParseError yyError = ParseError.DUMMY;
01519:
01520: // Alternative 1.
01521:
01522: yyResult = pJavaIdentifier$Word(yyStart);
01523: yyError = yyResult.select(yyError);
01524: if (yyResult.hasValue("next")) {
01525:
01526: yyValue = GNode.create("NextCommand", false);
01527: yyValue.setLocation(location(yyStart));
01528:
01529: return yyResult.createValue(yyValue, yyError);
01530: }
01531:
01532: // Done.
01533: yyError = yyError.select("next command expected", yyStart);
01534: return yyError;
01535: }
01536:
01537: // =========================================================================
01538:
01539: /**
01540: * Parse nonterminal xtc.lang.jeannie.Debugger.RunCommand.
01541: *
01542: * @param yyStart The index.
01543: * @return The result.
01544: * @throws IOException Signals an I/O error.
01545: */
01546: private Result pRunCommand(final int yyStart) throws IOException {
01547: Result yyResult;
01548: Node yyValue;
01549: ParseError yyError = ParseError.DUMMY;
01550:
01551: // Alternative 1.
01552:
01553: yyResult = pJavaIdentifier$Word(yyStart);
01554: yyError = yyResult.select(yyError);
01555: if (yyResult.hasValue("run")) {
01556:
01557: yyValue = GNode.create("RunCommand", false);
01558: yyValue.setLocation(location(yyStart));
01559:
01560: return yyResult.createValue(yyValue, yyError);
01561: }
01562:
01563: // Done.
01564: yyError = yyError.select("run command expected", yyStart);
01565: return yyError;
01566: }
01567:
01568: // =========================================================================
01569:
01570: /**
01571: * Parse nonterminal xtc.lang.jeannie.Debugger.PrintCExpressionCommand.
01572: *
01573: * @param yyStart The index.
01574: * @return The result.
01575: * @throws IOException Signals an I/O error.
01576: */
01577: private Result pPrintCExpressionCommand(final int yyStart)
01578: throws IOException {
01579:
01580: Result yyResult;
01581: int yyBase;
01582: Node yyValue;
01583: ParseError yyError = ParseError.DUMMY;
01584:
01585: // Alternative 1.
01586:
01587: yyResult = pSpacing(yyStart);
01588: yyError = yyResult.select(yyError);
01589: if (yyResult.hasValue()) {
01590:
01591: yyBase = yyResult.index;
01592: yyResult = pJavaIdentifier$Word(yyBase);
01593: yyError = yyResult.select(yyError);
01594: if (yyResult.hasValue("print")) {
01595:
01596: yyResult = pDebuggerC$CommaExpression(yyResult.index);
01597: yyError = yyResult.select(yyError);
01598: if (yyResult.hasValue()) {
01599: final Node v$g$1 = yyResult.semanticValue();
01600:
01601: yyValue = GNode.create("PrintCExpressionCommand",
01602: v$g$1);
01603: yyValue.setLocation(location(yyStart));
01604:
01605: return yyResult.createValue(yyValue, yyError);
01606: }
01607: } else {
01608: yyError = yyError.select("\"print\" expected", yyBase);
01609: }
01610: }
01611:
01612: // Done.
01613: return yyError;
01614: }
01615:
01616: // =========================================================================
01617:
01618: /**
01619: * Parse nonterminal xtc.lang.jeannie.Debugger.PrintJavaExpressionCommand.
01620: *
01621: * @param yyStart The index.
01622: * @return The result.
01623: * @throws IOException Signals an I/O error.
01624: */
01625: private Result pPrintJavaExpressionCommand(final int yyStart)
01626: throws IOException {
01627:
01628: Result yyResult;
01629: int yyBase;
01630: Node yyValue;
01631: ParseError yyError = ParseError.DUMMY;
01632:
01633: // Alternative 1.
01634:
01635: yyResult = pSpacing(yyStart);
01636: yyError = yyResult.select(yyError);
01637: if (yyResult.hasValue()) {
01638:
01639: yyBase = yyResult.index;
01640: yyResult = pJavaIdentifier$Word(yyBase);
01641: yyError = yyResult.select(yyError);
01642: if (yyResult.hasValue("print")) {
01643:
01644: yyResult = pDebuggerJava$Expression(yyResult.index);
01645: yyError = yyResult.select(yyError);
01646: if (yyResult.hasValue()) {
01647: final Node v$g$1 = yyResult.semanticValue();
01648:
01649: yyValue = GNode.create(
01650: "PrintJavaExpressionCommand", v$g$1);
01651: yyValue.setLocation(location(yyStart));
01652:
01653: return yyResult.createValue(yyValue, yyError);
01654: }
01655: } else {
01656: yyError = yyError.select("\"print\" expected", yyBase);
01657: }
01658: }
01659:
01660: // Done.
01661: return yyError;
01662: }
01663:
01664: // =========================================================================
01665:
01666: /**
01667: * Parse nonterminal xtc.lang.jeannie.Debugger.StatCommand.
01668: *
01669: * @param yyStart The index.
01670: * @return The result.
01671: * @throws IOException Signals an I/O error.
01672: */
01673: private Result pStatCommand(final int yyStart) throws IOException {
01674: Result yyResult;
01675: Node yyValue;
01676: ParseError yyError = ParseError.DUMMY;
01677:
01678: // Alternative 1.
01679:
01680: yyResult = pJavaIdentifier$Word(yyStart);
01681: yyError = yyResult.select(yyError);
01682: if (yyResult.hasValue("stat")) {
01683:
01684: yyValue = GNode.create("StatCommand", false);
01685: yyValue.setLocation(location(yyStart));
01686:
01687: return yyResult.createValue(yyValue, yyError);
01688: }
01689:
01690: // Done.
01691: yyError = yyError.select("stat command expected", yyStart);
01692: return yyError;
01693: }
01694:
01695: // =========================================================================
01696:
01697: /**
01698: * Parse nonterminal xtc.lang.jeannie.Debugger.StepCommand.
01699: *
01700: * @param yyStart The index.
01701: * @return The result.
01702: * @throws IOException Signals an I/O error.
01703: */
01704: private Result pStepCommand(final int yyStart) throws IOException {
01705: Result yyResult;
01706: Node yyValue;
01707: ParseError yyError = ParseError.DUMMY;
01708:
01709: // Alternative 1.
01710:
01711: yyResult = pJavaIdentifier$Word(yyStart);
01712: yyError = yyResult.select(yyError);
01713: if (yyResult.hasValue("step")) {
01714:
01715: yyValue = GNode.create("StepCommand", false);
01716: yyValue.setLocation(location(yyStart));
01717:
01718: return yyResult.createValue(yyValue, yyError);
01719: }
01720:
01721: // Done.
01722: yyError = yyError.select("step command expected", yyStart);
01723: return yyError;
01724: }
01725:
01726: // =========================================================================
01727:
01728: /**
01729: * Parse nonterminal xtc.lang.jeannie.Debugger.UpCommand.
01730: *
01731: * @param yyStart The index.
01732: * @return The result.
01733: * @throws IOException Signals an I/O error.
01734: */
01735: private Result pUpCommand(final int yyStart) throws IOException {
01736: Result yyResult;
01737: Node yyValue;
01738: ParseError yyError = ParseError.DUMMY;
01739:
01740: // Alternative 1.
01741:
01742: yyResult = pJavaIdentifier$Word(yyStart);
01743: yyError = yyResult.select(yyError);
01744: if (yyResult.hasValue("up")) {
01745:
01746: yyResult = pIntegerLiteral(yyResult.index);
01747: yyError = yyResult.select(yyError);
01748: if (yyResult.hasValue()) {
01749: final Node v$g$1 = yyResult.semanticValue();
01750:
01751: yyValue = GNode.create("UpCommand", v$g$1);
01752: yyValue.setLocation(location(yyStart));
01753:
01754: return yyResult.createValue(yyValue, yyError);
01755: }
01756: }
01757:
01758: // Done.
01759: yyError = yyError.select("up command expected", yyStart);
01760: return yyError;
01761: }
01762:
01763: // =========================================================================
01764:
01765: /**
01766: * Parse nonterminal xtc.lang.jeannie.Debugger.WatchCExpressionCommand.
01767: *
01768: * @param yyStart The index.
01769: * @return The result.
01770: * @throws IOException Signals an I/O error.
01771: */
01772: private Result pWatchCExpressionCommand(final int yyStart)
01773: throws IOException {
01774:
01775: Result yyResult;
01776: int yyBase;
01777: Node yyValue;
01778: ParseError yyError = ParseError.DUMMY;
01779:
01780: // Alternative 1.
01781:
01782: yyResult = pSpacing(yyStart);
01783: yyError = yyResult.select(yyError);
01784: if (yyResult.hasValue()) {
01785:
01786: yyBase = yyResult.index;
01787: yyResult = pJavaIdentifier$Word(yyBase);
01788: yyError = yyResult.select(yyError);
01789: if (yyResult.hasValue("watch")) {
01790:
01791: yyResult = pDebuggerC$CommaExpression(yyResult.index);
01792: yyError = yyResult.select(yyError);
01793: if (yyResult.hasValue()) {
01794: final Node v$g$1 = yyResult.semanticValue();
01795:
01796: yyValue = GNode.create("WatchCExpressionCommand",
01797: v$g$1);
01798: yyValue.setLocation(location(yyStart));
01799:
01800: return yyResult.createValue(yyValue, yyError);
01801: }
01802: } else {
01803: yyError = yyError.select("\"watch\" expected", yyBase);
01804: }
01805: }
01806:
01807: // Done.
01808: return yyError;
01809: }
01810:
01811: // =========================================================================
01812:
01813: /**
01814: * Parse nonterminal xtc.lang.jeannie.Debugger.WatchJavaFieldCommand.
01815: *
01816: * @param yyStart The index.
01817: * @return The result.
01818: * @throws IOException Signals an I/O error.
01819: */
01820: private Result pWatchJavaFieldCommand(final int yyStart)
01821: throws IOException {
01822:
01823: Result yyResult;
01824: int yyBase;
01825: int yyOption1;
01826: String yyOpValue1;
01827: Node yyValue;
01828: ParseError yyError = ParseError.DUMMY;
01829:
01830: // Alternative 1.
01831:
01832: yyResult = pSpacing(yyStart);
01833: yyError = yyResult.select(yyError);
01834: if (yyResult.hasValue()) {
01835:
01836: yyBase = yyResult.index;
01837: yyResult = pJavaIdentifier$Word(yyBase);
01838: yyError = yyResult.select(yyError);
01839: if (yyResult.hasValue("watch")) {
01840:
01841: yyOption1 = yyResult.index;
01842: yyOpValue1 = null;
01843:
01844: yyResult = pWatchKind(yyOption1);
01845: yyError = yyResult.select(yyError);
01846: if (yyResult.hasValue()) {
01847: final String v$el$1 = yyResult.semanticValue();
01848:
01849: yyOption1 = yyResult.index;
01850: yyOpValue1 = v$el$1;
01851: }
01852: { // Start scope for v$g$1.
01853: final String v$g$1 = yyOpValue1;
01854:
01855: yyResult = pQualifiedIdentifier(yyOption1);
01856: yyError = yyResult.select(yyError);
01857: if (yyResult.hasValue()) {
01858: final Node v$g$2 = yyResult.semanticValue();
01859:
01860: yyValue = GNode.create("WatchJavaFieldCommand",
01861: v$g$1, v$g$2);
01862: yyValue.setLocation(location(yyStart));
01863:
01864: return yyResult.createValue(yyValue, yyError);
01865: }
01866: } // End scope for v$g$1.
01867: } else {
01868: yyError = yyError.select("\"watch\" expected", yyBase);
01869: }
01870: }
01871:
01872: // Done.
01873: return yyError;
01874: }
01875:
01876: // =========================================================================
01877:
01878: /**
01879: * Parse nonterminal xtc.lang.jeannie.Debugger.WatchKind.
01880: *
01881: * @param yyStart The index.
01882: * @return The result.
01883: * @throws IOException Signals an I/O error.
01884: */
01885: private Result pWatchKind(final int yyStart) throws IOException {
01886: Result yyResult;
01887: String yyValue;
01888: ParseError yyError = ParseError.DUMMY;
01889:
01890: // Alternative 1.
01891:
01892: yyResult = pWatchKind$$Choice1(yyStart);
01893: yyError = yyResult.select(yyError);
01894: if (yyResult.hasValue()) {
01895: yyValue = yyResult.semanticValue();
01896:
01897: yyResult = pSpacing(yyResult.index);
01898: yyError = yyResult.select(yyError);
01899: if (yyResult.hasValue()) {
01900:
01901: return yyResult.createValue(yyValue, yyError);
01902: }
01903: }
01904:
01905: // Done.
01906: return yyError;
01907: }
01908:
01909: // =========================================================================
01910:
01911: /**
01912: * Parse synthetic nonterminal xtc.lang.jeannie.Debugger.WatchKind$$Choice1.
01913: *
01914: * @param yyStart The index.
01915: * @return The result.
01916: * @throws IOException Signals an I/O error.
01917: */
01918: private Result pWatchKind$$Choice1(final int yyStart)
01919: throws IOException {
01920: int yyC;
01921: int yyIndex;
01922: String yyValue;
01923: ParseError yyError = ParseError.DUMMY;
01924:
01925: // Alternative 1.
01926:
01927: yyC = character(yyStart);
01928: if ('a' == yyC) {
01929: yyIndex = yyStart + 1;
01930:
01931: yyC = character(yyIndex);
01932: if ('c' == yyC) {
01933: yyIndex = yyIndex + 1;
01934:
01935: yyC = character(yyIndex);
01936: if ('c' == yyC) {
01937: yyIndex = yyIndex + 1;
01938:
01939: yyC = character(yyIndex);
01940: if ('e' == yyC) {
01941: yyIndex = yyIndex + 1;
01942:
01943: yyC = character(yyIndex);
01944: if ('s' == yyC) {
01945: yyIndex = yyIndex + 1;
01946:
01947: yyC = character(yyIndex);
01948: if ('s' == yyC) {
01949: yyIndex = yyIndex + 1;
01950: yyValue = "access";
01951:
01952: return new SemanticValue(yyValue,
01953: yyIndex, yyError);
01954: }
01955: }
01956: }
01957: }
01958: }
01959: }
01960:
01961: // Alternative 2.
01962:
01963: yyC = character(yyStart);
01964: if ('a' == yyC) {
01965: yyIndex = yyStart + 1;
01966:
01967: yyC = character(yyIndex);
01968: if ('l' == yyC) {
01969: yyIndex = yyIndex + 1;
01970:
01971: yyC = character(yyIndex);
01972: if ('l' == yyC) {
01973: yyIndex = yyIndex + 1;
01974: yyValue = "all";
01975:
01976: return new SemanticValue(yyValue, yyIndex, yyError);
01977: }
01978: }
01979: }
01980:
01981: // Done.
01982: yyError = yyError.select("watch kind expected", yyStart);
01983: return yyError;
01984: }
01985:
01986: // =========================================================================
01987:
01988: /**
01989: * Parse nonterminal xtc.lang.jeannie.Debugger.WhereCommand.
01990: *
01991: * @param yyStart The index.
01992: * @return The result.
01993: * @throws IOException Signals an I/O error.
01994: */
01995: private Result pWhereCommand(final int yyStart) throws IOException {
01996: Result yyResult;
01997: Node yyValue;
01998: ParseError yyError = ParseError.DUMMY;
01999:
02000: // Alternative 1.
02001:
02002: yyResult = pJavaIdentifier$Word(yyStart);
02003: yyError = yyResult.select(yyError);
02004: if (yyResult.hasValue("where")) {
02005:
02006: yyValue = GNode.create("WhereCommand", false);
02007: yyValue.setLocation(location(yyStart));
02008:
02009: return yyResult.createValue(yyValue, yyError);
02010: }
02011:
02012: // Done.
02013: yyError = yyError.select("where command expected", yyStart);
02014: return yyError;
02015: }
02016:
02017: // =========================================================================
02018:
02019: /**
02020: * Parse nonterminal xtc.lang.CConstant.Constant.
02021: *
02022: * @param yyStart The index.
02023: * @return The result.
02024: * @throws IOException Signals an I/O error.
02025: */
02026: private Result pConstant(final int yyStart) throws IOException {
02027: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
02028: if (null == yyColumn.chunk1)
02029: yyColumn.chunk1 = new Chunk1();
02030: if (null == yyColumn.chunk1.fConstant)
02031: yyColumn.chunk1.fConstant = pConstant$1(yyStart);
02032: return yyColumn.chunk1.fConstant;
02033: }
02034:
02035: /** Actually parse xtc.lang.CConstant.Constant. */
02036: private Result pConstant$1(final int yyStart) throws IOException {
02037: Result yyResult;
02038: Node yyValue;
02039: ParseError yyError = ParseError.DUMMY;
02040:
02041: // Alternative 1.
02042:
02043: yyResult = pFloatingConstant(yyStart);
02044: yyError = yyResult.select(yyError);
02045: if (yyResult.hasValue()) {
02046: yyValue = yyResult.semanticValue();
02047:
02048: yyResult = pSpacing(yyResult.index);
02049: yyError = yyResult.select(yyError);
02050: if (yyResult.hasValue()) {
02051:
02052: return yyResult.createValue(yyValue, yyError);
02053: }
02054: }
02055:
02056: // Alternative 2.
02057:
02058: yyResult = pIntegerConstant(yyStart);
02059: yyError = yyResult.select(yyError);
02060: if (yyResult.hasValue()) {
02061: yyValue = yyResult.semanticValue();
02062:
02063: yyResult = pSpacing(yyResult.index);
02064: yyError = yyResult.select(yyError);
02065: if (yyResult.hasValue()) {
02066:
02067: return yyResult.createValue(yyValue, yyError);
02068: }
02069: }
02070:
02071: // Alternative 3.
02072:
02073: yyResult = pCConstant$CharacterConstant(yyStart);
02074: yyError = yyResult.select(yyError);
02075: if (yyResult.hasValue()) {
02076: yyValue = yyResult.semanticValue();
02077:
02078: return yyResult.createValue(yyValue, yyError);
02079: }
02080:
02081: // Alternative 4.
02082:
02083: yyResult = pCConstant$StringConstant(yyStart);
02084: yyError = yyResult.select(yyError);
02085: if (yyResult.hasValue()) {
02086: yyValue = yyResult.semanticValue();
02087:
02088: return yyResult.createValue(yyValue, yyError);
02089: }
02090:
02091: // Done.
02092: return yyError;
02093: }
02094:
02095: // =========================================================================
02096:
02097: /**
02098: * Parse nonterminal xtc.lang.CConstant.IntegerConstant.
02099: *
02100: * @param yyStart The index.
02101: * @return The result.
02102: * @throws IOException Signals an I/O error.
02103: */
02104: private Result pIntegerConstant(final int yyStart)
02105: throws IOException {
02106: Result yyResult;
02107: Node yyValue;
02108: ParseError yyError = ParseError.DUMMY;
02109:
02110: // Alternative <Hex>.
02111:
02112: yyResult = pHexConstant(yyStart);
02113: yyError = yyResult.select(yyError);
02114: if (yyResult.hasValue()) {
02115: final String v$g$1 = yyResult.semanticValue();
02116:
02117: yyValue = GNode.create("IntegerConstant", v$g$1);
02118: yyValue.setLocation(location(yyStart));
02119:
02120: return yyResult.createValue(yyValue, yyError);
02121: }
02122:
02123: // Alternative <Octal>.
02124:
02125: yyResult = pOctalConstant(yyStart);
02126: yyError = yyResult.select(yyError);
02127: if (yyResult.hasValue()) {
02128: final String v$g$2 = yyResult.semanticValue();
02129:
02130: yyValue = GNode.create("IntegerConstant", v$g$2);
02131: yyValue.setLocation(location(yyStart));
02132:
02133: return yyResult.createValue(yyValue, yyError);
02134: }
02135:
02136: // Alternative <Decimal>.
02137:
02138: yyResult = pDecimalConstant(yyStart);
02139: yyError = yyResult.select(yyError);
02140: if (yyResult.hasValue()) {
02141: final String v$g$3 = yyResult.semanticValue();
02142:
02143: yyValue = GNode.create("IntegerConstant", v$g$3);
02144: yyValue.setLocation(location(yyStart));
02145:
02146: return yyResult.createValue(yyValue, yyError);
02147: }
02148:
02149: // Done.
02150: return yyError;
02151: }
02152:
02153: // =========================================================================
02154:
02155: /**
02156: * Parse nonterminal xtc.lang.CConstant.DecimalConstant.
02157: *
02158: * @param yyStart The index.
02159: * @return The result.
02160: * @throws IOException Signals an I/O error.
02161: */
02162: private Result pDecimalConstant(final int yyStart)
02163: throws IOException {
02164: int yyC;
02165: int yyIndex;
02166: Result yyResult;
02167: int yyRepetition1;
02168: int yyOption1;
02169: String yyValue;
02170: ParseError yyError = ParseError.DUMMY;
02171:
02172: // Alternative 1.
02173:
02174: yyC = character(yyStart);
02175: if (-1 != yyC) {
02176: yyIndex = yyStart + 1;
02177:
02178: switch (yyC) {
02179: case '1':
02180: case '2':
02181: case '3':
02182: case '4':
02183: case '5':
02184: case '6':
02185: case '7':
02186: case '8':
02187: case '9': {
02188: yyRepetition1 = yyIndex;
02189: while (true) {
02190:
02191: yyC = character(yyRepetition1);
02192: if (-1 != yyC) {
02193: yyIndex = yyRepetition1 + 1;
02194:
02195: switch (yyC) {
02196: case '0':
02197: case '1':
02198: case '2':
02199: case '3':
02200: case '4':
02201: case '5':
02202: case '6':
02203: case '7':
02204: case '8':
02205: case '9': {
02206: yyRepetition1 = yyIndex;
02207: continue;
02208: }
02209:
02210: default:
02211: /* No match. */
02212: }
02213: }
02214: break;
02215: }
02216:
02217: yyOption1 = yyRepetition1;
02218:
02219: yyResult = pIntegerSuffix(yyOption1);
02220: yyError = yyResult.select(yyError);
02221: if (yyResult.hasValue()) {
02222:
02223: yyOption1 = yyResult.index;
02224: }
02225:
02226: yyValue = difference(yyStart, yyOption1);
02227:
02228: return new SemanticValue(yyValue, yyOption1, yyError);
02229: }
02230:
02231: default:
02232: /* No match. */
02233: }
02234: }
02235:
02236: // Done.
02237: yyError = yyError.select("decimal constant expected", yyStart);
02238: return yyError;
02239: }
02240:
02241: // =========================================================================
02242:
02243: /**
02244: * Parse nonterminal xtc.lang.CConstant.HexConstant.
02245: *
02246: * @param yyStart The index.
02247: * @return The result.
02248: * @throws IOException Signals an I/O error.
02249: */
02250: private Result pHexConstant(final int yyStart) throws IOException {
02251: int yyC;
02252: int yyIndex;
02253: Result yyResult;
02254: int yyRepetition1;
02255: boolean yyRepeated1;
02256: int yyOption1;
02257: String yyValue;
02258: ParseError yyError = ParseError.DUMMY;
02259:
02260: // Alternative 1.
02261:
02262: yyResult = pHexPrefix(yyStart);
02263: yyError = yyResult.select(yyError);
02264: if (yyResult.hasValue()) {
02265:
02266: yyRepetition1 = yyResult.index;
02267: yyRepeated1 = false;
02268: while (true) {
02269:
02270: yyC = character(yyRepetition1);
02271: if (-1 != yyC) {
02272: yyIndex = yyRepetition1 + 1;
02273:
02274: switch (yyC) {
02275: case '0':
02276: case '1':
02277: case '2':
02278: case '3':
02279: case '4':
02280: case '5':
02281: case '6':
02282: case '7':
02283: case '8':
02284: case '9':
02285: case 'A':
02286: case 'B':
02287: case 'C':
02288: case 'D':
02289: case 'E':
02290: case 'F':
02291: case 'a':
02292: case 'b':
02293: case 'c':
02294: case 'd':
02295: case 'e':
02296: case 'f': {
02297: yyRepetition1 = yyIndex;
02298: yyRepeated1 = true;
02299: continue;
02300: }
02301:
02302: default:
02303: /* No match. */
02304: }
02305: }
02306: break;
02307: }
02308:
02309: if (yyRepeated1) {
02310:
02311: yyOption1 = yyRepetition1;
02312:
02313: yyResult = pIntegerSuffix(yyOption1);
02314: yyError = yyResult.select(yyError);
02315: if (yyResult.hasValue()) {
02316:
02317: yyOption1 = yyResult.index;
02318: }
02319:
02320: yyValue = difference(yyStart, yyOption1);
02321:
02322: return new SemanticValue(yyValue, yyOption1, yyError);
02323: }
02324: }
02325:
02326: // Done.
02327: yyError = yyError.select("hex constant expected", yyStart);
02328: return yyError;
02329: }
02330:
02331: // =========================================================================
02332:
02333: /**
02334: * Parse nonterminal xtc.lang.CConstant.HexPrefix.
02335: *
02336: * @param yyStart The index.
02337: * @return The result.
02338: * @throws IOException Signals an I/O error.
02339: */
02340: private Result pHexPrefix(final int yyStart) throws IOException {
02341: int yyC;
02342: int yyIndex;
02343: Void yyValue;
02344: ParseError yyError = ParseError.DUMMY;
02345:
02346: // Alternative 1.
02347:
02348: yyC = character(yyStart);
02349: if ('0' == yyC) {
02350: yyIndex = yyStart + 1;
02351:
02352: yyC = character(yyIndex);
02353: if (-1 != yyC) {
02354: yyIndex = yyIndex + 1;
02355:
02356: switch (yyC) {
02357: case 'X':
02358: case 'x': {
02359: yyValue = null;
02360:
02361: return new SemanticValue(yyValue, yyIndex, yyError);
02362: }
02363:
02364: default:
02365: /* No match. */
02366: }
02367: }
02368: }
02369:
02370: // Done.
02371: yyError = yyError.select("hex prefix expected", yyStart);
02372: return yyError;
02373: }
02374:
02375: // =========================================================================
02376:
02377: /**
02378: * Parse nonterminal xtc.lang.CConstant.OctalConstant.
02379: *
02380: * @param yyStart The index.
02381: * @return The result.
02382: * @throws IOException Signals an I/O error.
02383: */
02384: private Result pOctalConstant(final int yyStart) throws IOException {
02385: int yyC;
02386: int yyIndex;
02387: Result yyResult;
02388: int yyRepetition1;
02389: int yyOption1;
02390: String yyValue;
02391: ParseError yyError = ParseError.DUMMY;
02392:
02393: // Alternative 1.
02394:
02395: yyC = character(yyStart);
02396: if ('0' == yyC) {
02397: yyIndex = yyStart + 1;
02398:
02399: yyRepetition1 = yyIndex;
02400: while (true) {
02401:
02402: yyC = character(yyRepetition1);
02403: if (-1 != yyC) {
02404: yyIndex = yyRepetition1 + 1;
02405:
02406: switch (yyC) {
02407: case '0':
02408: case '1':
02409: case '2':
02410: case '3':
02411: case '4':
02412: case '5':
02413: case '6':
02414: case '7': {
02415: yyRepetition1 = yyIndex;
02416: continue;
02417: }
02418:
02419: default:
02420: /* No match. */
02421: }
02422: }
02423: break;
02424: }
02425:
02426: yyOption1 = yyRepetition1;
02427:
02428: yyResult = pIntegerSuffix(yyOption1);
02429: yyError = yyResult.select(yyError);
02430: if (yyResult.hasValue()) {
02431:
02432: yyOption1 = yyResult.index;
02433: }
02434:
02435: yyValue = difference(yyStart, yyOption1);
02436:
02437: return new SemanticValue(yyValue, yyOption1, yyError);
02438: }
02439:
02440: // Done.
02441: yyError = yyError.select("octal constant expected", yyStart);
02442: return yyError;
02443: }
02444:
02445: // =========================================================================
02446:
02447: /**
02448: * Parse nonterminal xtc.lang.CConstant.IntegerSuffix.
02449: *
02450: * @param yyStart The index.
02451: * @return The result.
02452: * @throws IOException Signals an I/O error.
02453: */
02454: private Result pIntegerSuffix(final int yyStart) throws IOException {
02455: int yyC;
02456: int yyIndex;
02457: Result yyResult;
02458: Void yyValue;
02459: ParseError yyError = ParseError.DUMMY;
02460:
02461: // Alternative 1.
02462:
02463: yyResult = pLongLongSuffix(yyStart);
02464: yyError = yyResult.select(yyError);
02465: if (yyResult.hasValue()) {
02466:
02467: final int yyChoice1 = yyResult.index;
02468:
02469: // Nested alternative 1.
02470:
02471: yyC = character(yyChoice1);
02472: if (-1 != yyC) {
02473: yyIndex = yyChoice1 + 1;
02474:
02475: switch (yyC) {
02476: case 'U':
02477: case 'u': {
02478: yyValue = null;
02479:
02480: return new SemanticValue(yyValue, yyIndex, yyError);
02481: }
02482:
02483: default:
02484: /* No match. */
02485: }
02486: }
02487:
02488: // Nested alternative 2.
02489:
02490: yyValue = null;
02491:
02492: return new SemanticValue(yyValue, yyChoice1, yyError);
02493: }
02494:
02495: // Alternative 2.
02496:
02497: yyC = character(yyStart);
02498: if (-1 != yyC) {
02499: yyIndex = yyStart + 1;
02500:
02501: switch (yyC) {
02502: case 'L':
02503: case 'l': {
02504: final int yyChoice1 = yyIndex;
02505:
02506: // Nested alternative 1.
02507:
02508: yyC = character(yyChoice1);
02509: if (-1 != yyC) {
02510: yyIndex = yyChoice1 + 1;
02511:
02512: switch (yyC) {
02513: case 'U':
02514: case 'u': {
02515: yyValue = null;
02516:
02517: return new SemanticValue(yyValue, yyIndex,
02518: yyError);
02519: }
02520:
02521: default:
02522: /* No match. */
02523: }
02524: }
02525:
02526: // Nested alternative 2.
02527:
02528: yyValue = null;
02529:
02530: return new SemanticValue(yyValue, yyChoice1, yyError);
02531: }
02532:
02533: case 'U':
02534: case 'u': {
02535: final int yyChoice1 = yyIndex;
02536:
02537: // Nested alternative 1.
02538:
02539: yyC = character(yyChoice1);
02540: if (-1 != yyC) {
02541: yyIndex = yyChoice1 + 1;
02542:
02543: switch (yyC) {
02544: case 'l': {
02545: yyC = character(yyIndex);
02546: if (-1 != yyC) {
02547: yyIndex = yyIndex + 1;
02548: if ('l' == yyC) {
02549:
02550: yyValue = null;
02551:
02552: return new SemanticValue(yyValue,
02553: yyIndex, yyError);
02554: }
02555: }
02556: }
02557: break;
02558:
02559: case 'L': {
02560: yyC = character(yyIndex);
02561: if (-1 != yyC) {
02562: yyIndex = yyIndex + 1;
02563: if ('L' == yyC) {
02564:
02565: yyValue = null;
02566:
02567: return new SemanticValue(yyValue,
02568: yyIndex, yyError);
02569: }
02570: }
02571: }
02572: break;
02573:
02574: default:
02575: /* No match. */
02576: }
02577: }
02578:
02579: // Nested alternative 2.
02580:
02581: yyC = character(yyChoice1);
02582: if (-1 != yyC) {
02583: yyIndex = yyChoice1 + 1;
02584:
02585: switch (yyC) {
02586: case 'L':
02587: case 'l': {
02588: yyValue = null;
02589:
02590: return new SemanticValue(yyValue, yyIndex,
02591: yyError);
02592: }
02593:
02594: default:
02595: /* No match. */
02596: }
02597: }
02598:
02599: // Nested alternative 3.
02600:
02601: yyValue = null;
02602:
02603: return new SemanticValue(yyValue, yyChoice1, yyError);
02604: }
02605:
02606: default:
02607: /* No match. */
02608: }
02609: }
02610:
02611: // Done.
02612: yyError = yyError.select("integer suffix expected", yyStart);
02613: return yyError;
02614: }
02615:
02616: // =========================================================================
02617:
02618: /**
02619: * Parse nonterminal xtc.lang.CConstant.LongLongSuffix.
02620: *
02621: * @param yyStart The index.
02622: * @return The result.
02623: * @throws IOException Signals an I/O error.
02624: */
02625: private Result pLongLongSuffix(final int yyStart)
02626: throws IOException {
02627: int yyC;
02628: int yyIndex;
02629: Void yyValue;
02630: ParseError yyError = ParseError.DUMMY;
02631:
02632: // Alternative 1.
02633:
02634: yyC = character(yyStart);
02635: if (-1 != yyC) {
02636: yyIndex = yyStart + 1;
02637:
02638: switch (yyC) {
02639: case 'l': {
02640: yyC = character(yyIndex);
02641: if (-1 != yyC) {
02642: yyIndex = yyIndex + 1;
02643: if ('l' == yyC) {
02644:
02645: yyValue = null;
02646:
02647: return new SemanticValue(yyValue, yyIndex,
02648: yyError);
02649: }
02650: }
02651: }
02652: break;
02653:
02654: case 'L': {
02655: yyC = character(yyIndex);
02656: if (-1 != yyC) {
02657: yyIndex = yyIndex + 1;
02658: if ('L' == yyC) {
02659:
02660: yyValue = null;
02661:
02662: return new SemanticValue(yyValue, yyIndex,
02663: yyError);
02664: }
02665: }
02666: }
02667: break;
02668:
02669: default:
02670: /* No match. */
02671: }
02672: }
02673:
02674: // Done.
02675: yyError = yyError.select("long long suffix expected", yyStart);
02676: return yyError;
02677: }
02678:
02679: // =========================================================================
02680:
02681: /**
02682: * Parse nonterminal xtc.lang.CConstant.FloatingConstant.
02683: *
02684: * @param yyStart The index.
02685: * @return The result.
02686: * @throws IOException Signals an I/O error.
02687: */
02688: private Result pFloatingConstant(final int yyStart)
02689: throws IOException {
02690: Result yyResult;
02691: Node yyValue;
02692: ParseError yyError = ParseError.DUMMY;
02693:
02694: // Alternative <Decimal>.
02695:
02696: yyResult = pDecimalFloatingConstant(yyStart);
02697: yyError = yyResult.select(yyError);
02698: if (yyResult.hasValue()) {
02699: final String v$g$1 = yyResult.semanticValue();
02700:
02701: yyValue = GNode.create("FloatingConstant", v$g$1);
02702: yyValue.setLocation(location(yyStart));
02703:
02704: return yyResult.createValue(yyValue, yyError);
02705: }
02706:
02707: // Alternative <Hex>.
02708:
02709: yyResult = pHexFloatingConstant(yyStart);
02710: yyError = yyResult.select(yyError);
02711: if (yyResult.hasValue()) {
02712: final String v$g$2 = yyResult.semanticValue();
02713:
02714: yyValue = GNode.create("FloatingConstant", v$g$2);
02715: yyValue.setLocation(location(yyStart));
02716:
02717: return yyResult.createValue(yyValue, yyError);
02718: }
02719:
02720: // Done.
02721: return yyError;
02722: }
02723:
02724: // =========================================================================
02725:
02726: /**
02727: * Parse nonterminal xtc.lang.CConstant.DecimalFloatingConstant.
02728: *
02729: * @param yyStart The index.
02730: * @return The result.
02731: * @throws IOException Signals an I/O error.
02732: */
02733: private Result pDecimalFloatingConstant(final int yyStart)
02734: throws IOException {
02735:
02736: int yyC;
02737: int yyIndex;
02738: Result yyResult;
02739: int yyRepetition1;
02740: boolean yyRepeated1;
02741: int yyOption1;
02742: String yyValue;
02743: ParseError yyError = ParseError.DUMMY;
02744:
02745: // Alternative 1.
02746:
02747: yyRepetition1 = yyStart;
02748: yyRepeated1 = false;
02749: while (true) {
02750:
02751: yyC = character(yyRepetition1);
02752: if (-1 != yyC) {
02753: yyIndex = yyRepetition1 + 1;
02754:
02755: switch (yyC) {
02756: case '0':
02757: case '1':
02758: case '2':
02759: case '3':
02760: case '4':
02761: case '5':
02762: case '6':
02763: case '7':
02764: case '8':
02765: case '9': {
02766: yyRepetition1 = yyIndex;
02767: yyRepeated1 = true;
02768: continue;
02769: }
02770:
02771: default:
02772: /* No match. */
02773: }
02774: }
02775: break;
02776: }
02777:
02778: if (yyRepeated1) {
02779:
02780: yyC = character(yyRepetition1);
02781: if ('.' == yyC) {
02782: yyIndex = yyRepetition1 + 1;
02783:
02784: yyRepetition1 = yyIndex;
02785: while (true) {
02786:
02787: yyC = character(yyRepetition1);
02788: if (-1 != yyC) {
02789: yyIndex = yyRepetition1 + 1;
02790:
02791: switch (yyC) {
02792: case '0':
02793: case '1':
02794: case '2':
02795: case '3':
02796: case '4':
02797: case '5':
02798: case '6':
02799: case '7':
02800: case '8':
02801: case '9': {
02802: yyRepetition1 = yyIndex;
02803: continue;
02804: }
02805:
02806: default:
02807: /* No match. */
02808: }
02809: }
02810: break;
02811: }
02812:
02813: yyOption1 = yyRepetition1;
02814:
02815: yyResult = pCConstant$Exponent(yyOption1);
02816: yyError = yyResult.select(yyError);
02817: if (yyResult.hasValue()) {
02818:
02819: yyOption1 = yyResult.index;
02820: }
02821:
02822: yyC = character(yyOption1);
02823: if (-1 != yyC) {
02824: yyIndex = yyOption1 + 1;
02825:
02826: switch (yyC) {
02827: case 'F':
02828: case 'L':
02829: case 'f':
02830: case 'l': {
02831: yyOption1 = yyIndex;
02832: }
02833:
02834: default:
02835: /* No match. */
02836: }
02837: }
02838:
02839: yyValue = difference(yyStart, yyOption1);
02840:
02841: return new SemanticValue(yyValue, yyOption1, yyError);
02842: }
02843: }
02844:
02845: // Alternative 2.
02846:
02847: yyC = character(yyStart);
02848: if ('.' == yyC) {
02849: yyIndex = yyStart + 1;
02850:
02851: yyRepetition1 = yyIndex;
02852: yyRepeated1 = false;
02853: while (true) {
02854:
02855: yyC = character(yyRepetition1);
02856: if (-1 != yyC) {
02857: yyIndex = yyRepetition1 + 1;
02858:
02859: switch (yyC) {
02860: case '0':
02861: case '1':
02862: case '2':
02863: case '3':
02864: case '4':
02865: case '5':
02866: case '6':
02867: case '7':
02868: case '8':
02869: case '9': {
02870: yyRepetition1 = yyIndex;
02871: yyRepeated1 = true;
02872: continue;
02873: }
02874:
02875: default:
02876: /* No match. */
02877: }
02878: }
02879: break;
02880: }
02881:
02882: if (yyRepeated1) {
02883:
02884: yyOption1 = yyRepetition1;
02885:
02886: yyResult = pCConstant$Exponent(yyOption1);
02887: yyError = yyResult.select(yyError);
02888: if (yyResult.hasValue()) {
02889:
02890: yyOption1 = yyResult.index;
02891: }
02892:
02893: yyC = character(yyOption1);
02894: if (-1 != yyC) {
02895: yyIndex = yyOption1 + 1;
02896:
02897: switch (yyC) {
02898: case 'F':
02899: case 'L':
02900: case 'f':
02901: case 'l': {
02902: yyOption1 = yyIndex;
02903: }
02904:
02905: default:
02906: /* No match. */
02907: }
02908: }
02909:
02910: yyValue = difference(yyStart, yyOption1);
02911:
02912: return new SemanticValue(yyValue, yyOption1, yyError);
02913: }
02914: }
02915:
02916: // Alternative 3.
02917:
02918: yyRepetition1 = yyStart;
02919: yyRepeated1 = false;
02920: while (true) {
02921:
02922: yyC = character(yyRepetition1);
02923: if (-1 != yyC) {
02924: yyIndex = yyRepetition1 + 1;
02925:
02926: switch (yyC) {
02927: case '0':
02928: case '1':
02929: case '2':
02930: case '3':
02931: case '4':
02932: case '5':
02933: case '6':
02934: case '7':
02935: case '8':
02936: case '9': {
02937: yyRepetition1 = yyIndex;
02938: yyRepeated1 = true;
02939: continue;
02940: }
02941:
02942: default:
02943: /* No match. */
02944: }
02945: }
02946: break;
02947: }
02948:
02949: if (yyRepeated1) {
02950:
02951: yyResult = pCConstant$Exponent(yyRepetition1);
02952: yyError = yyResult.select(yyError);
02953: if (yyResult.hasValue()) {
02954:
02955: yyOption1 = yyResult.index;
02956:
02957: yyC = character(yyOption1);
02958: if (-1 != yyC) {
02959: yyIndex = yyOption1 + 1;
02960:
02961: switch (yyC) {
02962: case 'F':
02963: case 'L':
02964: case 'f':
02965: case 'l': {
02966: yyOption1 = yyIndex;
02967: }
02968:
02969: default:
02970: /* No match. */
02971: }
02972: }
02973:
02974: yyValue = difference(yyStart, yyOption1);
02975:
02976: return new SemanticValue(yyValue, yyOption1, yyError);
02977: }
02978: }
02979:
02980: // Done.
02981: yyError = yyError.select("decimal floating constant expected",
02982: yyStart);
02983: return yyError;
02984: }
02985:
02986: // =========================================================================
02987:
02988: /**
02989: * Parse nonterminal xtc.lang.CConstant.HexFloatingConstant.
02990: *
02991: * @param yyStart The index.
02992: * @return The result.
02993: * @throws IOException Signals an I/O error.
02994: */
02995: private Result pHexFloatingConstant(final int yyStart)
02996: throws IOException {
02997: int yyC;
02998: int yyIndex;
02999: Result yyResult;
03000: int yyRepetition1;
03001: boolean yyRepeated1;
03002: int yyOption1;
03003: String yyValue;
03004: ParseError yyError = ParseError.DUMMY;
03005:
03006: // Alternative 1.
03007:
03008: yyResult = pHexPrefix(yyStart);
03009: yyError = yyResult.select(yyError);
03010: if (yyResult.hasValue()) {
03011:
03012: final int yyChoice1 = yyResult.index;
03013:
03014: // Nested alternative 1.
03015:
03016: yyRepetition1 = yyChoice1;
03017: yyRepeated1 = false;
03018: while (true) {
03019:
03020: yyC = character(yyRepetition1);
03021: if (-1 != yyC) {
03022: yyIndex = yyRepetition1 + 1;
03023:
03024: switch (yyC) {
03025: case '0':
03026: case '1':
03027: case '2':
03028: case '3':
03029: case '4':
03030: case '5':
03031: case '6':
03032: case '7':
03033: case '8':
03034: case '9':
03035: case 'A':
03036: case 'B':
03037: case 'C':
03038: case 'D':
03039: case 'E':
03040: case 'F':
03041: case 'a':
03042: case 'b':
03043: case 'c':
03044: case 'd':
03045: case 'e':
03046: case 'f': {
03047: yyRepetition1 = yyIndex;
03048: yyRepeated1 = true;
03049: continue;
03050: }
03051:
03052: default:
03053: /* No match. */
03054: }
03055: }
03056: break;
03057: }
03058:
03059: if (yyRepeated1) {
03060:
03061: yyC = character(yyRepetition1);
03062: if ('.' == yyC) {
03063: yyIndex = yyRepetition1 + 1;
03064:
03065: yyRepetition1 = yyIndex;
03066: while (true) {
03067:
03068: yyC = character(yyRepetition1);
03069: if (-1 != yyC) {
03070: yyIndex = yyRepetition1 + 1;
03071:
03072: switch (yyC) {
03073: case '0':
03074: case '1':
03075: case '2':
03076: case '3':
03077: case '4':
03078: case '5':
03079: case '6':
03080: case '7':
03081: case '8':
03082: case '9':
03083: case 'A':
03084: case 'B':
03085: case 'C':
03086: case 'D':
03087: case 'E':
03088: case 'F':
03089: case 'a':
03090: case 'b':
03091: case 'c':
03092: case 'd':
03093: case 'e':
03094: case 'f': {
03095: yyRepetition1 = yyIndex;
03096: continue;
03097: }
03098:
03099: default:
03100: /* No match. */
03101: }
03102: }
03103: break;
03104: }
03105:
03106: yyResult = pBinaryExponent(yyRepetition1);
03107: yyError = yyResult.select(yyError);
03108: if (yyResult.hasValue()) {
03109:
03110: yyOption1 = yyResult.index;
03111:
03112: yyC = character(yyOption1);
03113: if (-1 != yyC) {
03114: yyIndex = yyOption1 + 1;
03115:
03116: switch (yyC) {
03117: case 'F':
03118: case 'L':
03119: case 'f':
03120: case 'l': {
03121: yyOption1 = yyIndex;
03122: }
03123:
03124: default:
03125: /* No match. */
03126: }
03127: }
03128:
03129: yyValue = difference(yyStart, yyOption1);
03130:
03131: return new SemanticValue(yyValue, yyOption1,
03132: yyError);
03133: }
03134: }
03135: }
03136:
03137: // Nested alternative 2.
03138:
03139: yyC = character(yyChoice1);
03140: if ('.' == yyC) {
03141: yyIndex = yyChoice1 + 1;
03142:
03143: yyRepetition1 = yyIndex;
03144: yyRepeated1 = false;
03145: while (true) {
03146:
03147: yyC = character(yyRepetition1);
03148: if (-1 != yyC) {
03149: yyIndex = yyRepetition1 + 1;
03150:
03151: switch (yyC) {
03152: case '0':
03153: case '1':
03154: case '2':
03155: case '3':
03156: case '4':
03157: case '5':
03158: case '6':
03159: case '7':
03160: case '8':
03161: case '9':
03162: case 'A':
03163: case 'B':
03164: case 'C':
03165: case 'D':
03166: case 'E':
03167: case 'F':
03168: case 'a':
03169: case 'b':
03170: case 'c':
03171: case 'd':
03172: case 'e':
03173: case 'f': {
03174: yyRepetition1 = yyIndex;
03175: yyRepeated1 = true;
03176: continue;
03177: }
03178:
03179: default:
03180: /* No match. */
03181: }
03182: }
03183: break;
03184: }
03185:
03186: if (yyRepeated1) {
03187:
03188: yyResult = pBinaryExponent(yyRepetition1);
03189: yyError = yyResult.select(yyError);
03190: if (yyResult.hasValue()) {
03191:
03192: yyOption1 = yyResult.index;
03193:
03194: yyC = character(yyOption1);
03195: if (-1 != yyC) {
03196: yyIndex = yyOption1 + 1;
03197:
03198: switch (yyC) {
03199: case 'F':
03200: case 'L':
03201: case 'f':
03202: case 'l': {
03203: yyOption1 = yyIndex;
03204: }
03205:
03206: default:
03207: /* No match. */
03208: }
03209: }
03210:
03211: yyValue = difference(yyStart, yyOption1);
03212:
03213: return new SemanticValue(yyValue, yyOption1,
03214: yyError);
03215: }
03216: }
03217: }
03218:
03219: // Nested alternative 3.
03220:
03221: yyRepetition1 = yyChoice1;
03222: yyRepeated1 = false;
03223: while (true) {
03224:
03225: yyC = character(yyRepetition1);
03226: if (-1 != yyC) {
03227: yyIndex = yyRepetition1 + 1;
03228:
03229: switch (yyC) {
03230: case '0':
03231: case '1':
03232: case '2':
03233: case '3':
03234: case '4':
03235: case '5':
03236: case '6':
03237: case '7':
03238: case '8':
03239: case '9':
03240: case 'A':
03241: case 'B':
03242: case 'C':
03243: case 'D':
03244: case 'E':
03245: case 'F':
03246: case 'a':
03247: case 'b':
03248: case 'c':
03249: case 'd':
03250: case 'e':
03251: case 'f': {
03252: yyRepetition1 = yyIndex;
03253: yyRepeated1 = true;
03254: continue;
03255: }
03256:
03257: default:
03258: /* No match. */
03259: }
03260: }
03261: break;
03262: }
03263:
03264: if (yyRepeated1) {
03265:
03266: yyResult = pBinaryExponent(yyRepetition1);
03267: yyError = yyResult.select(yyError);
03268: if (yyResult.hasValue()) {
03269:
03270: yyOption1 = yyResult.index;
03271:
03272: yyC = character(yyOption1);
03273: if (-1 != yyC) {
03274: yyIndex = yyOption1 + 1;
03275:
03276: switch (yyC) {
03277: case 'F':
03278: case 'L':
03279: case 'f':
03280: case 'l': {
03281: yyOption1 = yyIndex;
03282: }
03283:
03284: default:
03285: /* No match. */
03286: }
03287: }
03288:
03289: yyValue = difference(yyStart, yyOption1);
03290:
03291: return new SemanticValue(yyValue, yyOption1,
03292: yyError);
03293: }
03294: }
03295: }
03296:
03297: // Done.
03298: yyError = yyError.select("hex floating constant expected",
03299: yyStart);
03300: return yyError;
03301: }
03302:
03303: // =========================================================================
03304:
03305: /**
03306: * Parse nonterminal xtc.lang.CConstant.Exponent.
03307: *
03308: * @param yyStart The index.
03309: * @return The result.
03310: * @throws IOException Signals an I/O error.
03311: */
03312: private Result pCConstant$Exponent(final int yyStart)
03313: throws IOException {
03314: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
03315: if (null == yyColumn.chunk1)
03316: yyColumn.chunk1 = new Chunk1();
03317: if (null == yyColumn.chunk1.fCConstant$Exponent)
03318: yyColumn.chunk1.fCConstant$Exponent = pCConstant$Exponent$1(yyStart);
03319: return yyColumn.chunk1.fCConstant$Exponent;
03320: }
03321:
03322: /** Actually parse xtc.lang.CConstant.Exponent. */
03323: private Result pCConstant$Exponent$1(final int yyStart)
03324: throws IOException {
03325: int yyC;
03326: int yyIndex;
03327: Result yyResult;
03328: int yyOption1;
03329: Void yyValue;
03330: ParseError yyError = ParseError.DUMMY;
03331:
03332: // Alternative 1.
03333:
03334: yyC = character(yyStart);
03335: if (-1 != yyC) {
03336: yyIndex = yyStart + 1;
03337:
03338: switch (yyC) {
03339: case 'E':
03340: case 'e': {
03341: yyOption1 = yyIndex;
03342:
03343: yyC = character(yyOption1);
03344: if (-1 != yyC) {
03345: yyIndex = yyOption1 + 1;
03346:
03347: switch (yyC) {
03348: case '+':
03349: case '-': {
03350: yyOption1 = yyIndex;
03351: }
03352:
03353: default:
03354: /* No match. */
03355: }
03356: }
03357:
03358: yyResult = p$$Shared27(yyOption1);
03359: yyError = yyResult.select(yyError);
03360: if (yyResult.hasValue()) {
03361:
03362: yyValue = null;
03363:
03364: return yyResult.createValue(yyValue, yyError);
03365: }
03366: }
03367: break;
03368:
03369: default:
03370: /* No match. */
03371: }
03372: }
03373:
03374: // Done.
03375: yyError = yyError.select("exponent expected", yyStart);
03376: return yyError;
03377: }
03378:
03379: // =========================================================================
03380:
03381: /**
03382: * Parse synthetic nonterminal xtc.lang.jeannie.Debugger.$$Shared27.
03383: * This nonterminal represents the duplicate productions
03384: * CConstant.Exponent$$Plus1
03385: * and xtc.lang.jeannie.Debugger.BinaryExponent$$Plus1.
03386: *
03387: * @param yyStart The index.
03388: * @return The result.
03389: * @throws IOException Signals an I/O error.
03390: */
03391: private Result p$$Shared27(final int yyStart) throws IOException {
03392: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
03393: if (null == yyColumn.chunk1)
03394: yyColumn.chunk1 = new Chunk1();
03395: if (null == yyColumn.chunk1.f$$Shared27)
03396: yyColumn.chunk1.f$$Shared27 = p$$Shared27$1(yyStart);
03397: return yyColumn.chunk1.f$$Shared27;
03398: }
03399:
03400: /** Actually parse xtc.lang.jeannie.Debugger.$$Shared27. */
03401: private Result p$$Shared27$1(final int yyStart) throws IOException {
03402: int yyC;
03403: int yyIndex;
03404: Result yyResult;
03405: Void yyValue;
03406: ParseError yyError = ParseError.DUMMY;
03407:
03408: // Alternative 1.
03409:
03410: yyC = character(yyStart);
03411: if (-1 != yyC) {
03412: yyIndex = yyStart + 1;
03413:
03414: switch (yyC) {
03415: case '0':
03416: case '1':
03417: case '2':
03418: case '3':
03419: case '4':
03420: case '5':
03421: case '6':
03422: case '7':
03423: case '8':
03424: case '9': {
03425: final int yyChoice1 = yyIndex;
03426:
03427: // Nested alternative 1.
03428:
03429: yyResult = p$$Shared27(yyChoice1);
03430: yyError = yyResult.select(yyError);
03431: if (yyResult.hasValue()) {
03432:
03433: yyValue = null;
03434:
03435: return yyResult.createValue(yyValue, yyError);
03436: }
03437:
03438: // Nested alternative 2.
03439:
03440: yyValue = null;
03441:
03442: return new SemanticValue(yyValue, yyChoice1, yyError);
03443: }
03444:
03445: default:
03446: /* No match. */
03447: }
03448: }
03449:
03450: // Done.
03451: yyError = yyError.select(" expected", yyStart);
03452: return yyError;
03453: }
03454:
03455: // =========================================================================
03456:
03457: /**
03458: * Parse nonterminal xtc.lang.CConstant.BinaryExponent.
03459: *
03460: * @param yyStart The index.
03461: * @return The result.
03462: * @throws IOException Signals an I/O error.
03463: */
03464: private Result pBinaryExponent(final int yyStart)
03465: throws IOException {
03466: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
03467: if (null == yyColumn.chunk1)
03468: yyColumn.chunk1 = new Chunk1();
03469: if (null == yyColumn.chunk1.fBinaryExponent)
03470: yyColumn.chunk1.fBinaryExponent = pBinaryExponent$1(yyStart);
03471: return yyColumn.chunk1.fBinaryExponent;
03472: }
03473:
03474: /** Actually parse xtc.lang.CConstant.BinaryExponent. */
03475: private Result pBinaryExponent$1(final int yyStart)
03476: throws IOException {
03477: int yyC;
03478: int yyIndex;
03479: Result yyResult;
03480: int yyOption1;
03481: Void yyValue;
03482: ParseError yyError = ParseError.DUMMY;
03483:
03484: // Alternative 1.
03485:
03486: yyC = character(yyStart);
03487: if (-1 != yyC) {
03488: yyIndex = yyStart + 1;
03489:
03490: switch (yyC) {
03491: case 'P':
03492: case 'p': {
03493: yyOption1 = yyIndex;
03494:
03495: yyC = character(yyOption1);
03496: if (-1 != yyC) {
03497: yyIndex = yyOption1 + 1;
03498:
03499: switch (yyC) {
03500: case '+':
03501: case '-': {
03502: yyOption1 = yyIndex;
03503: }
03504:
03505: default:
03506: /* No match. */
03507: }
03508: }
03509:
03510: yyResult = p$$Shared27(yyOption1);
03511: yyError = yyResult.select(yyError);
03512: if (yyResult.hasValue()) {
03513:
03514: yyValue = null;
03515:
03516: return yyResult.createValue(yyValue, yyError);
03517: }
03518: }
03519: break;
03520:
03521: default:
03522: /* No match. */
03523: }
03524: }
03525:
03526: // Done.
03527: yyError = yyError.select("binary exponent expected", yyStart);
03528: return yyError;
03529: }
03530:
03531: // =========================================================================
03532:
03533: /**
03534: * Parse nonterminal xtc.lang.CConstant.CharacterConstant.
03535: *
03536: * @param yyStart The index.
03537: * @return The result.
03538: * @throws IOException Signals an I/O error.
03539: */
03540: private Result pCConstant$CharacterConstant(final int yyStart)
03541: throws IOException {
03542:
03543: Result yyResult;
03544: Node yyValue;
03545: ParseError yyError = ParseError.DUMMY;
03546:
03547: // Alternative 1.
03548:
03549: yyResult = pWideCharacterLiteral(yyStart);
03550: yyError = yyResult.select(yyError);
03551: if (yyResult.hasValue()) {
03552: final String v$g$1 = yyResult.semanticValue();
03553:
03554: yyResult = pSpacing(yyResult.index);
03555: yyError = yyResult.select(yyError);
03556: if (yyResult.hasValue()) {
03557:
03558: yyValue = GNode.create("CharacterConstant", v$g$1);
03559: yyValue.setLocation(location(yyStart));
03560:
03561: return yyResult.createValue(yyValue, yyError);
03562: }
03563: }
03564:
03565: // Alternative 2.
03566:
03567: yyResult = pCConstant$CharacterLiteral(yyStart);
03568: yyError = yyResult.select(yyError);
03569: if (yyResult.hasValue()) {
03570: final String v$g$2 = yyResult.semanticValue();
03571:
03572: yyResult = pSpacing(yyResult.index);
03573: yyError = yyResult.select(yyError);
03574: if (yyResult.hasValue()) {
03575:
03576: yyValue = GNode.create("CharacterConstant", v$g$2);
03577: yyValue.setLocation(location(yyStart));
03578:
03579: return yyResult.createValue(yyValue, yyError);
03580: }
03581: }
03582:
03583: // Done.
03584: return yyError;
03585: }
03586:
03587: // =========================================================================
03588:
03589: /**
03590: * Parse nonterminal xtc.lang.CConstant.WideCharacterLiteral.
03591: *
03592: * @param yyStart The index.
03593: * @return The result.
03594: * @throws IOException Signals an I/O error.
03595: */
03596: private Result pWideCharacterLiteral(final int yyStart)
03597: throws IOException {
03598: int yyC;
03599: int yyIndex;
03600: Result yyResult;
03601: String yyValue;
03602: ParseError yyError = ParseError.DUMMY;
03603:
03604: // Alternative 1.
03605:
03606: yyC = character(yyStart);
03607: if ('L' == yyC) {
03608: yyIndex = yyStart + 1;
03609:
03610: yyResult = pCConstant$CharacterLiteral(yyIndex);
03611: yyError = yyResult.select(yyError);
03612: if (yyResult.hasValue()) {
03613:
03614: yyValue = difference(yyStart, yyResult.index);
03615:
03616: return yyResult.createValue(yyValue, yyError);
03617: }
03618: }
03619:
03620: // Done.
03621: yyError = yyError.select("wide character literal expected",
03622: yyStart);
03623: return yyError;
03624: }
03625:
03626: // =========================================================================
03627:
03628: /**
03629: * Parse nonterminal xtc.lang.CConstant.CharacterLiteral.
03630: *
03631: * @param yyStart The index.
03632: * @return The result.
03633: * @throws IOException Signals an I/O error.
03634: */
03635: private Result pCConstant$CharacterLiteral(final int yyStart)
03636: throws IOException {
03637:
03638: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
03639: if (null == yyColumn.chunk1)
03640: yyColumn.chunk1 = new Chunk1();
03641: if (null == yyColumn.chunk1.fCConstant$CharacterLiteral)
03642: yyColumn.chunk1.fCConstant$CharacterLiteral = pCConstant$CharacterLiteral$1(yyStart);
03643: return yyColumn.chunk1.fCConstant$CharacterLiteral;
03644: }
03645:
03646: /** Actually parse xtc.lang.CConstant.CharacterLiteral. */
03647: private Result pCConstant$CharacterLiteral$1(final int yyStart)
03648: throws IOException {
03649:
03650: int yyC;
03651: int yyIndex;
03652: Result yyResult;
03653: String yyValue;
03654: ParseError yyError = ParseError.DUMMY;
03655:
03656: // Alternative 1.
03657:
03658: yyC = character(yyStart);
03659: if ('\'' == yyC) {
03660: yyIndex = yyStart + 1;
03661:
03662: yyResult = pCConstant$CharacterLiteral$$Plus1(yyIndex);
03663: yyError = yyResult.select(yyError);
03664: if (yyResult.hasValue()) {
03665:
03666: yyC = character(yyResult.index);
03667: if ('\'' == yyC) {
03668: yyIndex = yyResult.index + 1;
03669:
03670: yyValue = difference(yyStart, yyIndex);
03671:
03672: return new SemanticValue(yyValue, yyIndex, yyError);
03673: }
03674: }
03675: }
03676:
03677: // Done.
03678: yyError = yyError.select("character literal expected", yyStart);
03679: return yyError;
03680: }
03681:
03682: // =========================================================================
03683:
03684: /**
03685: * Parse synthetic nonterminal CConstant.CharacterLiteral$$Plus1.
03686: *
03687: * @param yyStart The index.
03688: * @return The result.
03689: * @throws IOException Signals an I/O error.
03690: */
03691: private Result pCConstant$CharacterLiteral$$Plus1(final int yyStart)
03692: throws IOException {
03693:
03694: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
03695: if (null == yyColumn.chunk1)
03696: yyColumn.chunk1 = new Chunk1();
03697: if (null == yyColumn.chunk1.fCConstant$CharacterLiteral$$Plus1)
03698: yyColumn.chunk1.fCConstant$CharacterLiteral$$Plus1 = pCConstant$CharacterLiteral$$Plus1$1(yyStart);
03699: return yyColumn.chunk1.fCConstant$CharacterLiteral$$Plus1;
03700: }
03701:
03702: /** Actually parse CConstant.CharacterLiteral$$Plus1. */
03703: private Result pCConstant$CharacterLiteral$$Plus1$1(
03704: final int yyStart) throws IOException {
03705:
03706: int yyC;
03707: int yyIndex;
03708: Result yyResult;
03709: Void yyValue;
03710: ParseError yyError = ParseError.DUMMY;
03711:
03712: // Alternative 1.
03713:
03714: yyResult = pEscapeCharacter(yyStart);
03715: yyError = yyResult.select(yyError);
03716: if (yyResult.hasValue()) {
03717:
03718: yyResult = pCConstant$CharacterLiteral$$Plus1(yyResult.index);
03719: yyError = yyResult.select(yyError);
03720: if (yyResult.hasValue()) {
03721:
03722: yyValue = null;
03723:
03724: return yyResult.createValue(yyValue, yyError);
03725: }
03726: }
03727:
03728: // Alternative 2.
03729:
03730: yyC = character(yyStart);
03731: if (-1 != yyC) {
03732: yyIndex = yyStart + 1;
03733:
03734: switch (yyC) {
03735: case '\n':
03736: case '\r':
03737: case '\'':
03738: case '\\':
03739: /* No match. */
03740: break;
03741:
03742: default: {
03743: yyResult = pCConstant$CharacterLiteral$$Plus1(yyIndex);
03744: yyError = yyResult.select(yyError);
03745: if (yyResult.hasValue()) {
03746:
03747: yyValue = null;
03748:
03749: return yyResult.createValue(yyValue, yyError);
03750: }
03751: }
03752: }
03753: }
03754:
03755: // Alternative 3.
03756:
03757: yyC = character(yyStart);
03758: if (-1 != yyC) {
03759: yyIndex = yyStart + 1;
03760:
03761: switch (yyC) {
03762: case '\\': {
03763: final int yyChoice1 = yyIndex;
03764:
03765: // Nested alternative 1.
03766:
03767: yyResult = pEscapeCode(yyChoice1);
03768: yyError = yyResult.select(yyError);
03769: if (yyResult.hasValue()) {
03770:
03771: yyValue = null;
03772:
03773: return yyResult.createValue(yyValue, yyError);
03774: }
03775:
03776: // Nested alternative 2.
03777:
03778: yyC = character(yyChoice1);
03779: if (-1 != yyC) {
03780: yyIndex = yyChoice1 + 1;
03781:
03782: switch (yyC) {
03783: case 'u': {
03784: yyResult = pHexQuad(yyIndex);
03785: yyError = yyResult.select(yyError);
03786: if (yyResult.hasValue()) {
03787:
03788: yyValue = null;
03789:
03790: return yyResult.createValue(yyValue,
03791: yyError);
03792: }
03793: }
03794: break;
03795:
03796: case 'U': {
03797: yyResult = pHexQuad(yyIndex);
03798: yyError = yyResult.select(yyError);
03799: if (yyResult.hasValue()) {
03800:
03801: yyResult = pHexQuad(yyResult.index);
03802: yyError = yyResult.select(yyError);
03803: if (yyResult.hasValue()) {
03804:
03805: yyValue = null;
03806:
03807: return yyResult.createValue(yyValue,
03808: yyError);
03809: }
03810: }
03811: }
03812: break;
03813:
03814: default:
03815: /* No match. */
03816: }
03817: }
03818: }
03819: break;
03820:
03821: default:
03822: /* No match. */
03823: }
03824: }
03825:
03826: // Alternative 4.
03827:
03828: yyC = character(yyStart);
03829: if (-1 != yyC) {
03830: yyIndex = yyStart + 1;
03831:
03832: switch (yyC) {
03833: case '\n':
03834: case '\r':
03835: case '\'':
03836: case '\\':
03837: /* No match. */
03838: break;
03839:
03840: default: {
03841: yyValue = null;
03842:
03843: return new SemanticValue(yyValue, yyIndex, yyError);
03844: }
03845: }
03846: }
03847:
03848: // Done.
03849: yyError = yyError.select("character literal expected", yyStart);
03850: return yyError;
03851: }
03852:
03853: // =========================================================================
03854:
03855: /**
03856: * Parse nonterminal xtc.lang.CConstant.StringConstant.
03857: *
03858: * @param yyStart The index.
03859: * @return The result.
03860: * @throws IOException Signals an I/O error.
03861: */
03862: private Result pCConstant$StringConstant(final int yyStart)
03863: throws IOException {
03864:
03865: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
03866: if (null == yyColumn.chunk1)
03867: yyColumn.chunk1 = new Chunk1();
03868: if (null == yyColumn.chunk1.fCConstant$StringConstant)
03869: yyColumn.chunk1.fCConstant$StringConstant = pCConstant$StringConstant$1(yyStart);
03870: return yyColumn.chunk1.fCConstant$StringConstant;
03871: }
03872:
03873: /** Actually parse xtc.lang.CConstant.StringConstant. */
03874: private Result pCConstant$StringConstant$1(final int yyStart)
03875: throws IOException {
03876:
03877: Result yyResult;
03878: Node yyValue;
03879: ParseError yyError = ParseError.DUMMY;
03880:
03881: // Alternative 1.
03882:
03883: yyResult = pCConstant$StringConstant$$Plus1(yyStart);
03884: yyError = yyResult.select(yyError);
03885: if (yyResult.hasValue()) {
03886: final Pair<String> v$g$1 = yyResult.semanticValue();
03887:
03888: yyValue = GNode.createFromPair("StringConstant", v$g$1);
03889: yyValue.setLocation(location(yyStart));
03890:
03891: return yyResult.createValue(yyValue, yyError);
03892: }
03893:
03894: // Done.
03895: return yyError;
03896: }
03897:
03898: // =========================================================================
03899:
03900: /**
03901: * Parse synthetic nonterminal CConstant.StringConstant$$Choice1.
03902: *
03903: * @param yyStart The index.
03904: * @return The result.
03905: * @throws IOException Signals an I/O error.
03906: */
03907: private Result pCConstant$StringConstant$$Choice1(final int yyStart)
03908: throws IOException {
03909:
03910: Result yyResult;
03911: String yyValue;
03912: ParseError yyError = ParseError.DUMMY;
03913:
03914: // Alternative 1.
03915:
03916: yyResult = pWideStringLiteral(yyStart);
03917: yyError = yyResult.select(yyError);
03918: if (yyResult.hasValue()) {
03919: yyValue = yyResult.semanticValue();
03920:
03921: yyResult = pSpacing(yyResult.index);
03922: yyError = yyResult.select(yyError);
03923: if (yyResult.hasValue()) {
03924:
03925: return yyResult.createValue(yyValue, yyError);
03926: }
03927: }
03928:
03929: // Alternative 2.
03930:
03931: yyResult = pCConstant$StringLiteral(yyStart);
03932: yyError = yyResult.select(yyError);
03933: if (yyResult.hasValue()) {
03934: yyValue = yyResult.semanticValue();
03935:
03936: yyResult = pSpacing(yyResult.index);
03937: yyError = yyResult.select(yyError);
03938: if (yyResult.hasValue()) {
03939:
03940: return yyResult.createValue(yyValue, yyError);
03941: }
03942: }
03943:
03944: // Done.
03945: return yyError;
03946: }
03947:
03948: // =========================================================================
03949:
03950: /**
03951: * Parse synthetic nonterminal CConstant.StringConstant$$Plus1.
03952: *
03953: * @param yyStart The index.
03954: * @return The result.
03955: * @throws IOException Signals an I/O error.
03956: */
03957: private Result pCConstant$StringConstant$$Plus1(final int yyStart)
03958: throws IOException {
03959:
03960: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
03961: if (null == yyColumn.chunk2)
03962: yyColumn.chunk2 = new Chunk2();
03963: if (null == yyColumn.chunk2.fCConstant$StringConstant$$Plus1)
03964: yyColumn.chunk2.fCConstant$StringConstant$$Plus1 = pCConstant$StringConstant$$Plus1$1(yyStart);
03965: return yyColumn.chunk2.fCConstant$StringConstant$$Plus1;
03966: }
03967:
03968: /** Actually parse CConstant.StringConstant$$Plus1. */
03969: private Result pCConstant$StringConstant$$Plus1$1(final int yyStart)
03970: throws IOException {
03971:
03972: Result yyResult;
03973: Pair<String> yyValue;
03974: ParseError yyError = ParseError.DUMMY;
03975:
03976: // Alternative 1.
03977:
03978: yyResult = pCConstant$StringConstant$$Choice1(yyStart);
03979: yyError = yyResult.select(yyError);
03980: if (yyResult.hasValue()) {
03981: final String v$el$1 = yyResult.semanticValue();
03982:
03983: final int yyChoice1 = yyResult.index;
03984:
03985: // Nested alternative 1.
03986:
03987: yyResult = pCConstant$StringConstant$$Plus1(yyChoice1);
03988: yyError = yyResult.select(yyError);
03989: if (yyResult.hasValue()) {
03990: final Pair<String> v$4 = yyResult.semanticValue();
03991:
03992: yyValue = new Pair<String>(v$el$1, v$4);
03993:
03994: return yyResult.createValue(yyValue, yyError);
03995: }
03996:
03997: // Nested alternative 2.
03998:
03999: yyValue = new Pair<String>(v$el$1);
04000:
04001: return new SemanticValue(yyValue, yyChoice1, yyError);
04002: }
04003:
04004: // Done.
04005: return yyError;
04006: }
04007:
04008: // =========================================================================
04009:
04010: /**
04011: * Parse nonterminal xtc.lang.CConstant.WideStringLiteral.
04012: *
04013: * @param yyStart The index.
04014: * @return The result.
04015: * @throws IOException Signals an I/O error.
04016: */
04017: private Result pWideStringLiteral(final int yyStart)
04018: throws IOException {
04019: int yyC;
04020: int yyIndex;
04021: Result yyResult;
04022: String yyValue;
04023: ParseError yyError = ParseError.DUMMY;
04024:
04025: // Alternative 1.
04026:
04027: yyC = character(yyStart);
04028: if ('L' == yyC) {
04029: yyIndex = yyStart + 1;
04030:
04031: yyResult = pCConstant$StringLiteral(yyIndex);
04032: yyError = yyResult.select(yyError);
04033: if (yyResult.hasValue()) {
04034:
04035: yyValue = difference(yyStart, yyResult.index);
04036:
04037: return yyResult.createValue(yyValue, yyError);
04038: }
04039: }
04040:
04041: // Done.
04042: yyError = yyError.select("wide string literal expected",
04043: yyStart);
04044: return yyError;
04045: }
04046:
04047: // =========================================================================
04048:
04049: /**
04050: * Parse nonterminal xtc.lang.CConstant.StringLiteral.
04051: *
04052: * @param yyStart The index.
04053: * @return The result.
04054: * @throws IOException Signals an I/O error.
04055: */
04056: private Result pCConstant$StringLiteral(final int yyStart)
04057: throws IOException {
04058:
04059: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
04060: if (null == yyColumn.chunk2)
04061: yyColumn.chunk2 = new Chunk2();
04062: if (null == yyColumn.chunk2.fCConstant$StringLiteral)
04063: yyColumn.chunk2.fCConstant$StringLiteral = pCConstant$StringLiteral$1(yyStart);
04064: return yyColumn.chunk2.fCConstant$StringLiteral;
04065: }
04066:
04067: /** Actually parse xtc.lang.CConstant.StringLiteral. */
04068: private Result pCConstant$StringLiteral$1(final int yyStart)
04069: throws IOException {
04070:
04071: int yyC;
04072: int yyIndex;
04073: Result yyResult;
04074: String yyValue;
04075: ParseError yyError = ParseError.DUMMY;
04076:
04077: // Alternative 1.
04078:
04079: yyC = character(yyStart);
04080: if ('\"' == yyC) {
04081: yyIndex = yyStart + 1;
04082:
04083: yyResult = pCConstant$StringLiteral$$Star1(yyIndex);
04084: yyError = yyResult.select(yyError);
04085: if (yyResult.hasValue()) {
04086:
04087: yyC = character(yyResult.index);
04088: if ('\"' == yyC) {
04089: yyIndex = yyResult.index + 1;
04090:
04091: yyValue = difference(yyStart, yyIndex);
04092:
04093: return new SemanticValue(yyValue, yyIndex, yyError);
04094: }
04095: }
04096: }
04097:
04098: // Done.
04099: yyError = yyError.select("string literal expected", yyStart);
04100: return yyError;
04101: }
04102:
04103: // =========================================================================
04104:
04105: /**
04106: * Parse synthetic nonterminal CConstant.StringLiteral$$Star1.
04107: *
04108: * @param yyStart The index.
04109: * @return The result.
04110: * @throws IOException Signals an I/O error.
04111: */
04112: private Result pCConstant$StringLiteral$$Star1(final int yyStart)
04113: throws IOException {
04114:
04115: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
04116: if (null == yyColumn.chunk2)
04117: yyColumn.chunk2 = new Chunk2();
04118: if (null == yyColumn.chunk2.fCConstant$StringLiteral$$Star1)
04119: yyColumn.chunk2.fCConstant$StringLiteral$$Star1 = pCConstant$StringLiteral$$Star1$1(yyStart);
04120: return yyColumn.chunk2.fCConstant$StringLiteral$$Star1;
04121: }
04122:
04123: /** Actually parse CConstant.StringLiteral$$Star1. */
04124: private Result pCConstant$StringLiteral$$Star1$1(final int yyStart)
04125: throws IOException {
04126:
04127: int yyC;
04128: int yyIndex;
04129: Result yyResult;
04130: Void yyValue;
04131: ParseError yyError = ParseError.DUMMY;
04132:
04133: // Alternative 1.
04134:
04135: yyResult = pEscapeCharacter(yyStart);
04136: yyError = yyResult.select(yyError);
04137: if (yyResult.hasValue()) {
04138:
04139: yyResult = pCConstant$StringLiteral$$Star1(yyResult.index);
04140: yyError = yyResult.select(yyError);
04141: if (yyResult.hasValue()) {
04142:
04143: yyValue = null;
04144:
04145: return yyResult.createValue(yyValue, yyError);
04146: }
04147: }
04148:
04149: // Alternative 2.
04150:
04151: yyC = character(yyStart);
04152: if (-1 != yyC) {
04153: yyIndex = yyStart + 1;
04154:
04155: switch (yyC) {
04156: case '\n':
04157: case '\r':
04158: case '\"':
04159: case '\\':
04160: /* No match. */
04161: break;
04162:
04163: default: {
04164: yyResult = pCConstant$StringLiteral$$Star1(yyIndex);
04165: yyError = yyResult.select(yyError);
04166: if (yyResult.hasValue()) {
04167:
04168: yyValue = null;
04169:
04170: return yyResult.createValue(yyValue, yyError);
04171: }
04172: }
04173: }
04174: }
04175:
04176: // Alternative 3.
04177:
04178: yyValue = null;
04179:
04180: return new SemanticValue(yyValue, yyStart, yyError);
04181: }
04182:
04183: // =========================================================================
04184:
04185: /**
04186: * Parse nonterminal xtc.lang.CConstant.EscapeCharacter.
04187: *
04188: * @param yyStart The index.
04189: * @return The result.
04190: * @throws IOException Signals an I/O error.
04191: */
04192: private Result pEscapeCharacter(final int yyStart)
04193: throws IOException {
04194: int yyC;
04195: int yyIndex;
04196: Result yyResult;
04197: Void yyValue;
04198: ParseError yyError = ParseError.DUMMY;
04199:
04200: // Alternative 1.
04201:
04202: yyC = character(yyStart);
04203: if (-1 != yyC) {
04204: yyIndex = yyStart + 1;
04205: if ('\\' == yyC) {
04206:
04207: final int yyChoice1 = yyIndex;
04208:
04209: // Nested alternative 1.
04210:
04211: yyResult = pEscapeCode(yyChoice1);
04212: yyError = yyResult.select(yyError);
04213: if (yyResult.hasValue()) {
04214:
04215: yyValue = null;
04216:
04217: return yyResult.createValue(yyValue, yyError);
04218: }
04219:
04220: // Nested alternative 2.
04221:
04222: yyC = character(yyChoice1);
04223: if (-1 != yyC) {
04224: yyIndex = yyChoice1 + 1;
04225:
04226: switch (yyC) {
04227: case 'u': {
04228: yyResult = pHexQuad(yyIndex);
04229: yyError = yyResult.select(yyError);
04230: if (yyResult.hasValue()) {
04231:
04232: yyValue = null;
04233:
04234: return yyResult.createValue(yyValue,
04235: yyError);
04236: }
04237: }
04238: break;
04239:
04240: case 'U': {
04241: yyResult = pHexQuad(yyIndex);
04242: yyError = yyResult.select(yyError);
04243: if (yyResult.hasValue()) {
04244:
04245: yyResult = pHexQuad(yyResult.index);
04246: yyError = yyResult.select(yyError);
04247: if (yyResult.hasValue()) {
04248:
04249: yyValue = null;
04250:
04251: return yyResult.createValue(yyValue,
04252: yyError);
04253: }
04254: }
04255: }
04256: break;
04257:
04258: default:
04259: /* No match. */
04260: }
04261: }
04262: }
04263: }
04264:
04265: // Done.
04266: yyError = yyError.select("escape character expected", yyStart);
04267: return yyError;
04268: }
04269:
04270: // =========================================================================
04271:
04272: /**
04273: * Parse nonterminal xtc.lang.CConstant.EscapeCode.
04274: *
04275: * @param yyStart The index.
04276: * @return The result.
04277: * @throws IOException Signals an I/O error.
04278: */
04279: private Result pEscapeCode(final int yyStart) throws IOException {
04280: int yyC;
04281: int yyIndex;
04282: int yyRepetition1;
04283: boolean yyRepeated1;
04284: Void yyValue;
04285: ParseError yyError = ParseError.DUMMY;
04286:
04287: // Alternative 1.
04288:
04289: yyC = character(yyStart);
04290: if (-1 != yyC) {
04291: yyIndex = yyStart + 1;
04292:
04293: switch (yyC) {
04294: case '\"':
04295: case '\'':
04296: case '?':
04297: case '\\':
04298: case 'a':
04299: case 'b':
04300: case 'f':
04301: case 'n':
04302: case 'r':
04303: case 't':
04304: case 'v': {
04305: yyValue = null;
04306:
04307: return new SemanticValue(yyValue, yyIndex, yyError);
04308: }
04309:
04310: case '0':
04311: case '1':
04312: case '2':
04313: case '3':
04314: case '4':
04315: case '5':
04316: case '6':
04317: case '7': {
04318: final int yyChoice1 = yyIndex;
04319:
04320: // Nested alternative 1.
04321:
04322: yyC = character(yyChoice1);
04323: if (-1 != yyC) {
04324: yyIndex = yyChoice1 + 1;
04325:
04326: switch (yyC) {
04327: case '0':
04328: case '1':
04329: case '2':
04330: case '3':
04331: case '4':
04332: case '5':
04333: case '6':
04334: case '7': {
04335: final int yyChoice2 = yyIndex;
04336:
04337: // Nested alternative 1.
04338:
04339: yyC = character(yyChoice2);
04340: if (-1 != yyC) {
04341: yyIndex = yyChoice2 + 1;
04342:
04343: switch (yyC) {
04344: case '0':
04345: case '1':
04346: case '2':
04347: case '3':
04348: case '4':
04349: case '5':
04350: case '6':
04351: case '7': {
04352: yyValue = null;
04353:
04354: return new SemanticValue(yyValue,
04355: yyIndex, yyError);
04356: }
04357:
04358: default:
04359: /* No match. */
04360: }
04361: }
04362:
04363: // Nested alternative 2.
04364:
04365: yyValue = null;
04366:
04367: return new SemanticValue(yyValue, yyChoice2,
04368: yyError);
04369: }
04370:
04371: default:
04372: /* No match. */
04373: }
04374: }
04375:
04376: // Nested alternative 2.
04377:
04378: yyValue = null;
04379:
04380: return new SemanticValue(yyValue, yyChoice1, yyError);
04381: }
04382:
04383: case 'x': {
04384: yyRepetition1 = yyIndex;
04385: yyRepeated1 = false;
04386: while (true) {
04387:
04388: yyC = character(yyRepetition1);
04389: if (-1 != yyC) {
04390: yyIndex = yyRepetition1 + 1;
04391:
04392: switch (yyC) {
04393: case '0':
04394: case '1':
04395: case '2':
04396: case '3':
04397: case '4':
04398: case '5':
04399: case '6':
04400: case '7':
04401: case '8':
04402: case '9':
04403: case 'A':
04404: case 'B':
04405: case 'C':
04406: case 'D':
04407: case 'E':
04408: case 'F':
04409: case 'a':
04410: case 'b':
04411: case 'c':
04412: case 'd':
04413: case 'e':
04414: case 'f': {
04415: yyRepetition1 = yyIndex;
04416: yyRepeated1 = true;
04417: continue;
04418: }
04419:
04420: default:
04421: /* No match. */
04422: }
04423: }
04424: break;
04425: }
04426:
04427: if (yyRepeated1) {
04428:
04429: yyValue = null;
04430:
04431: return new SemanticValue(yyValue, yyRepetition1,
04432: yyError);
04433: }
04434: }
04435: break;
04436:
04437: default:
04438: /* No match. */
04439: }
04440: }
04441:
04442: // Done.
04443: yyError = yyError.select("escape code expected", yyStart);
04444: return yyError;
04445: }
04446:
04447: // =========================================================================
04448:
04449: /**
04450: * Parse nonterminal xtc.lang.CConstant.HexQuad.
04451: *
04452: * @param yyStart The index.
04453: * @return The result.
04454: * @throws IOException Signals an I/O error.
04455: */
04456: private Result pHexQuad(final int yyStart) throws IOException {
04457: int yyC;
04458: int yyIndex;
04459: Void yyValue;
04460: ParseError yyError = ParseError.DUMMY;
04461:
04462: // Alternative 1.
04463:
04464: yyC = character(yyStart);
04465: if (-1 != yyC) {
04466: yyIndex = yyStart + 1;
04467:
04468: switch (yyC) {
04469: case '0':
04470: case '1':
04471: case '2':
04472: case '3':
04473: case '4':
04474: case '5':
04475: case '6':
04476: case '7':
04477: case '8':
04478: case '9':
04479: case 'A':
04480: case 'B':
04481: case 'C':
04482: case 'D':
04483: case 'E':
04484: case 'F':
04485: case 'a':
04486: case 'b':
04487: case 'c':
04488: case 'd':
04489: case 'e':
04490: case 'f': {
04491: yyC = character(yyIndex);
04492: if (-1 != yyC) {
04493: yyIndex = yyIndex + 1;
04494:
04495: switch (yyC) {
04496: case '0':
04497: case '1':
04498: case '2':
04499: case '3':
04500: case '4':
04501: case '5':
04502: case '6':
04503: case '7':
04504: case '8':
04505: case '9':
04506: case 'A':
04507: case 'B':
04508: case 'C':
04509: case 'D':
04510: case 'E':
04511: case 'F':
04512: case 'a':
04513: case 'b':
04514: case 'c':
04515: case 'd':
04516: case 'e':
04517: case 'f': {
04518: yyC = character(yyIndex);
04519: if (-1 != yyC) {
04520: yyIndex = yyIndex + 1;
04521:
04522: switch (yyC) {
04523: case '0':
04524: case '1':
04525: case '2':
04526: case '3':
04527: case '4':
04528: case '5':
04529: case '6':
04530: case '7':
04531: case '8':
04532: case '9':
04533: case 'A':
04534: case 'B':
04535: case 'C':
04536: case 'D':
04537: case 'E':
04538: case 'F':
04539: case 'a':
04540: case 'b':
04541: case 'c':
04542: case 'd':
04543: case 'e':
04544: case 'f': {
04545: yyC = character(yyIndex);
04546: if (-1 != yyC) {
04547: yyIndex = yyIndex + 1;
04548:
04549: switch (yyC) {
04550: case '0':
04551: case '1':
04552: case '2':
04553: case '3':
04554: case '4':
04555: case '5':
04556: case '6':
04557: case '7':
04558: case '8':
04559: case '9':
04560: case 'A':
04561: case 'B':
04562: case 'C':
04563: case 'D':
04564: case 'E':
04565: case 'F':
04566: case 'a':
04567: case 'b':
04568: case 'c':
04569: case 'd':
04570: case 'e':
04571: case 'f': {
04572: yyValue = null;
04573:
04574: return new SemanticValue(
04575: yyValue, yyIndex,
04576: yyError);
04577: }
04578:
04579: default:
04580: /* No match. */
04581: }
04582: }
04583: }
04584: break;
04585:
04586: default:
04587: /* No match. */
04588: }
04589: }
04590: }
04591: break;
04592:
04593: default:
04594: /* No match. */
04595: }
04596: }
04597: }
04598: break;
04599:
04600: default:
04601: /* No match. */
04602: }
04603: }
04604:
04605: // Done.
04606: yyError = yyError.select("hex quad expected", yyStart);
04607: return yyError;
04608: }
04609:
04610: // =========================================================================
04611:
04612: /**
04613: * Parse nonterminal xtc.lang.CSpacing.Spacing.
04614: *
04615: * @param yyStart The index.
04616: * @return The result.
04617: * @throws IOException Signals an I/O error.
04618: */
04619: private Result pSpacing(final int yyStart) throws IOException {
04620: int yyC;
04621: int yyIndex;
04622: Result yyResult;
04623: Result yyPredResult;
04624: boolean yyPredMatched;
04625: int yyBase;
04626: int yyRepetition1;
04627: int yyRepetition2;
04628: Void yyValue;
04629: ParseError yyError = ParseError.DUMMY;
04630:
04631: // Alternative 1.
04632:
04633: yyRepetition1 = yyStart;
04634: while (true) {
04635:
04636: final int yyChoice1 = yyRepetition1;
04637:
04638: // Nested alternative 1.
04639:
04640: yyC = character(yyChoice1);
04641: if (-1 != yyC) {
04642: yyIndex = yyChoice1 + 1;
04643:
04644: switch (yyC) {
04645: case ' ': {
04646: yyRepetition1 = yyIndex;
04647: continue;
04648: }
04649:
04650: case '\t': {
04651: yyRepetition1 = yyIndex;
04652: continue;
04653: }
04654:
04655: case '\f': {
04656: yyRepetition1 = yyIndex;
04657: continue;
04658: }
04659:
04660: case '/': {
04661: yyC = character(yyIndex);
04662: if (-1 != yyC) {
04663: yyIndex = yyIndex + 1;
04664:
04665: switch (yyC) {
04666: case '*': {
04667: yyRepetition2 = yyIndex;
04668: while (true) {
04669:
04670: final int yyChoice2 = yyRepetition2;
04671:
04672: // Nested alternative 1.
04673:
04674: yyC = character(yyChoice2);
04675: if (-1 != yyC) {
04676: yyIndex = yyChoice2 + 1;
04677:
04678: switch (yyC) {
04679: case '*': {
04680: yyPredMatched = false;
04681:
04682: yyC = character(yyIndex);
04683: if ('/' == yyC) {
04684:
04685: yyPredMatched = true;
04686: }
04687:
04688: if (!yyPredMatched) {
04689:
04690: yyRepetition2 = yyIndex;
04691: continue;
04692: } else {
04693: yyError = yyError.select(
04694: "spacing expected",
04695: yyStart);
04696: }
04697: }
04698: break;
04699:
04700: default: {
04701: yyRepetition2 = yyIndex;
04702: continue;
04703: }
04704: }
04705: }
04706: break;
04707: }
04708:
04709: yyBase = yyRepetition2;
04710: yyC = character(yyBase);
04711: if ('*' == yyC) {
04712: yyIndex = yyRepetition2 + 1;
04713:
04714: yyC = character(yyIndex);
04715: if ('/' == yyC) {
04716: yyIndex = yyIndex + 1;
04717:
04718: yyRepetition1 = yyIndex;
04719: continue;
04720: } else {
04721: yyError = yyError.select(
04722: "\"*/\" expected", yyBase);
04723: }
04724: } else {
04725: yyError = yyError.select(
04726: "\"*/\" expected", yyBase);
04727: }
04728: }
04729: break;
04730:
04731: case '/': {
04732: yyRepetition2 = yyIndex;
04733: while (true) {
04734:
04735: yyC = character(yyRepetition2);
04736: if (-1 != yyC) {
04737: yyIndex = yyRepetition2 + 1;
04738:
04739: switch (yyC) {
04740: case '\n':
04741: case '\r':
04742: /* No match. */
04743: break;
04744:
04745: default: {
04746: yyRepetition2 = yyIndex;
04747: continue;
04748: }
04749: }
04750: }
04751: break;
04752: }
04753:
04754: yyPredResult = pLineTerminator(yyRepetition2);
04755: yyError = yyPredResult.select(yyError);
04756: if (yyPredResult.hasValue()) {
04757:
04758: yyRepetition1 = yyRepetition2;
04759: continue;
04760: }
04761: }
04762: break;
04763:
04764: default:
04765: /* No match. */
04766: }
04767: }
04768: }
04769: break;
04770:
04771: case '\r': {
04772: final int yyChoice2 = yyIndex;
04773:
04774: // Nested alternative 1.
04775:
04776: yyC = character(yyChoice2);
04777: if ('\n' == yyC) {
04778: yyIndex = yyChoice2 + 1;
04779:
04780: yyResult = pDirective(yyIndex);
04781: yyError = yyResult.select(yyError);
04782: if (yyResult.hasValue()) {
04783:
04784: yyRepetition1 = yyResult.index;
04785: continue;
04786: }
04787: }
04788:
04789: // Nested alternative 2.
04790:
04791: yyResult = pDirective(yyChoice2);
04792: yyError = yyResult.select(yyError);
04793: if (yyResult.hasValue()) {
04794:
04795: yyRepetition1 = yyResult.index;
04796: continue;
04797: }
04798: }
04799: break;
04800:
04801: case '\n': {
04802: yyResult = pDirective(yyIndex);
04803: yyError = yyResult.select(yyError);
04804: if (yyResult.hasValue()) {
04805:
04806: yyRepetition1 = yyResult.index;
04807: continue;
04808: }
04809: }
04810: break;
04811:
04812: default:
04813: /* No match. */
04814: }
04815: }
04816: break;
04817: }
04818:
04819: yyValue = null;
04820:
04821: return new SemanticValue(yyValue, yyRepetition1, yyError);
04822: }
04823:
04824: // =========================================================================
04825:
04826: /**
04827: * Parse nonterminal xtc.lang.CSpacing.Space.
04828: *
04829: * @param yyStart The index.
04830: * @return The result.
04831: * @throws IOException Signals an I/O error.
04832: */
04833: private Result pSpace(final int yyStart) throws IOException {
04834: int yyC;
04835: int yyIndex;
04836: Void yyValue;
04837: ParseError yyError = ParseError.DUMMY;
04838:
04839: // Alternative 1.
04840:
04841: yyC = character(yyStart);
04842: if (-1 != yyC) {
04843: yyIndex = yyStart + 1;
04844:
04845: switch (yyC) {
04846: case ' ': {
04847: yyValue = null;
04848:
04849: return new SemanticValue(yyValue, yyIndex, yyError);
04850: }
04851:
04852: case '\t': {
04853: yyValue = null;
04854:
04855: return new SemanticValue(yyValue, yyIndex, yyError);
04856: }
04857:
04858: case '\f': {
04859: yyValue = null;
04860:
04861: return new SemanticValue(yyValue, yyIndex, yyError);
04862: }
04863:
04864: default:
04865: /* No match. */
04866: }
04867: }
04868:
04869: // Done.
04870: yyError = yyError.select("space expected", yyStart);
04871: return yyError;
04872: }
04873:
04874: // =========================================================================
04875:
04876: /**
04877: * Parse nonterminal xtc.lang.CSpacing.LineTerminator.
04878: *
04879: * @param yyStart The index.
04880: * @return The result.
04881: * @throws IOException Signals an I/O error.
04882: */
04883: private Result pLineTerminator(final int yyStart)
04884: throws IOException {
04885: int yyC;
04886: int yyIndex;
04887: Void yyValue;
04888: ParseError yyError = ParseError.DUMMY;
04889:
04890: // Alternative 1.
04891:
04892: yyC = character(yyStart);
04893: if (-1 != yyC) {
04894: yyIndex = yyStart + 1;
04895:
04896: switch (yyC) {
04897: case '\r': {
04898: final int yyChoice1 = yyIndex;
04899:
04900: // Nested alternative 1.
04901:
04902: yyC = character(yyChoice1);
04903: if ('\n' == yyC) {
04904: yyIndex = yyChoice1 + 1;
04905:
04906: yyValue = null;
04907:
04908: return new SemanticValue(yyValue, yyIndex, yyError);
04909: }
04910:
04911: // Nested alternative 2.
04912:
04913: yyValue = null;
04914:
04915: return new SemanticValue(yyValue, yyChoice1, yyError);
04916: }
04917:
04918: case '\n': {
04919: yyValue = null;
04920:
04921: return new SemanticValue(yyValue, yyIndex, yyError);
04922: }
04923:
04924: default:
04925: /* No match. */
04926: }
04927: }
04928:
04929: // Done.
04930: yyError = yyError.select("line terminator expected", yyStart);
04931: return yyError;
04932: }
04933:
04934: // =========================================================================
04935:
04936: /**
04937: * Parse nonterminal xtc.lang.CSpacing.Directive.
04938: *
04939: * @param yyStart The index.
04940: * @return The result.
04941: * @throws IOException Signals an I/O error.
04942: */
04943: private Result pDirective(final int yyStart) throws IOException {
04944: int yyC;
04945: int yyIndex;
04946: Result yyResult;
04947: Result yyPredResult;
04948: int yyBase;
04949: int yyRepetition1;
04950: boolean yyRepeated1;
04951: int yyOption1;
04952: String yyOpValue1;
04953: Void yyValue;
04954: ParseError yyError = ParseError.DUMMY;
04955:
04956: // Alternative 1.
04957:
04958: yyC = character(yyStart);
04959: if ('#' == yyC) {
04960: yyIndex = yyStart + 1;
04961:
04962: final int yyChoice1 = yyIndex;
04963:
04964: // Nested alternative 1.
04965:
04966: yyC = character(yyChoice1);
04967: if (' ' == yyC) {
04968: yyIndex = yyChoice1 + 1;
04969:
04970: yyResult = pLineNumber(yyIndex);
04971: yyError = yyResult.select(yyError);
04972: if (yyResult.hasValue()) {
04973: final String line = yyResult.semanticValue();
04974:
04975: yyC = character(yyResult.index);
04976: if (' ' == yyC) {
04977: yyIndex = yyResult.index + 1;
04978:
04979: yyC = character(yyIndex);
04980: if ('\"' == yyC) {
04981: yyIndex = yyIndex + 1;
04982:
04983: yyResult = pCSpacing$FileName(yyIndex);
04984: yyError = yyResult.select(yyError);
04985: if (yyResult.hasValue()) {
04986: final String file = yyResult
04987: .semanticValue();
04988:
04989: yyC = character(yyResult.index);
04990: if ('\"' == yyC) {
04991: yyIndex = yyResult.index + 1;
04992:
04993: yyOption1 = yyIndex;
04994: yyOpValue1 = null;
04995:
04996: yyBase = yyOption1;
04997: yyC = character(yyBase);
04998: if (' ' == yyC) {
04999: yyIndex = yyOption1 + 1;
05000:
05001: yyC = character(yyIndex);
05002: if ('1' == yyC) {
05003: yyIndex = yyIndex + 1;
05004: final String v$el$1 = " 1";
05005:
05006: yyOption1 = yyIndex;
05007: yyOpValue1 = v$el$1;
05008: } else {
05009: yyError = yyError.select(
05010: "\" 1\" expected",
05011: yyBase);
05012: }
05013: } else {
05014: yyError = yyError.select(
05015: "\" 1\" expected",
05016: yyBase);
05017: }
05018: { // Start scope for f1.
05019: final String f1 = yyOpValue1;
05020:
05021: yyOpValue1 = null;
05022:
05023: yyBase = yyOption1;
05024: yyC = character(yyBase);
05025: if (' ' == yyC) {
05026: yyIndex = yyOption1 + 1;
05027:
05028: yyC = character(yyIndex);
05029: if ('2' == yyC) {
05030: yyIndex = yyIndex + 1;
05031: final String v$el$2 = " 2";
05032:
05033: yyOption1 = yyIndex;
05034: yyOpValue1 = v$el$2;
05035: } else {
05036: yyError = yyError
05037: .select(
05038: "\" 2\" expected",
05039: yyBase);
05040: }
05041: } else {
05042: yyError = yyError.select(
05043: "\" 2\" expected",
05044: yyBase);
05045: }
05046: { // Start scope for f2.
05047: final String f2 = yyOpValue1;
05048:
05049: yyOpValue1 = null;
05050:
05051: yyBase = yyOption1;
05052: yyC = character(yyBase);
05053: if (' ' == yyC) {
05054: yyIndex = yyOption1 + 1;
05055:
05056: yyC = character(yyIndex);
05057: if ('3' == yyC) {
05058: yyIndex = yyIndex + 1;
05059: final String v$el$3 = " 3";
05060:
05061: yyOption1 = yyIndex;
05062: yyOpValue1 = v$el$3;
05063: } else {
05064: yyError = yyError
05065: .select(
05066: "\" 3\" expected",
05067: yyBase);
05068: }
05069: } else {
05070: yyError = yyError
05071: .select(
05072: "\" 3\" expected",
05073: yyBase);
05074: }
05075: { // Start scope for f3.
05076: final String f3 = yyOpValue1;
05077:
05078: yyOpValue1 = null;
05079:
05080: yyBase = yyOption1;
05081: yyC = character(yyBase);
05082: if (' ' == yyC) {
05083: yyIndex = yyOption1 + 1;
05084:
05085: yyC = character(yyIndex);
05086: if ('4' == yyC) {
05087: yyIndex = yyIndex + 1;
05088: final String v$el$4 = " 4";
05089:
05090: yyOption1 = yyIndex;
05091: yyOpValue1 = v$el$4;
05092: } else {
05093: yyError = yyError
05094: .select(
05095: "\" 4\" expected",
05096: yyBase);
05097: }
05098: } else {
05099: yyError = yyError
05100: .select(
05101: "\" 4\" expected",
05102: yyBase);
05103: }
05104: { // Start scope for f4.
05105: final String f4 = yyOpValue1;
05106:
05107: yyPredResult = pLineTerminator(yyOption1);
05108: yyError = yyPredResult
05109: .select(yyError);
05110: if (yyPredResult
05111: .hasValue()) {
05112:
05113: final int lineNo = Integer
05114: .parseInt(line);
05115: if (RELOCATE)
05116: setLocation(
05117: yyStart,
05118: file,
05119: lineNo - 1,
05120: FIRST_COLUMN);
05121: yyState
05122: .lineMarker(
05123: file,
05124: lineNo,
05125: f1,
05126: f2,
05127: f3,
05128: f4,
05129: location(yyStart));
05130:
05131: yyValue = null;
05132:
05133: return new SemanticValue(
05134: yyValue,
05135: yyOption1,
05136: yyError);
05137: }
05138: } // End scope for f4.
05139: } // End scope for f3.
05140: } // End scope for f2.
05141: } // End scope for f1.
05142: }
05143: }
05144: }
05145: }
05146: }
05147: }
05148:
05149: // Nested alternative 2.
05150:
05151: yyRepetition1 = yyChoice1;
05152: while (true) {
05153:
05154: yyResult = pSpace(yyRepetition1);
05155: yyError = yyResult.select(yyError);
05156: if (yyResult.hasValue()) {
05157:
05158: yyRepetition1 = yyResult.index;
05159: continue;
05160: }
05161: break;
05162: }
05163: { // Start scope for nested choice.
05164:
05165: final int yyChoice2 = yyRepetition1;
05166:
05167: // Nested alternative 1.
05168:
05169: yyC = character(yyChoice2);
05170: if (-1 != yyC) {
05171: yyIndex = yyChoice2 + 1;
05172:
05173: switch (yyC) {
05174: case 'p': {
05175: yyC = character(yyIndex);
05176: if (-1 != yyC) {
05177: yyIndex = yyIndex + 1;
05178: if ('r' == yyC) {
05179:
05180: yyC = character(yyIndex);
05181: if (-1 != yyC) {
05182: yyIndex = yyIndex + 1;
05183: if ('a' == yyC) {
05184:
05185: yyC = character(yyIndex);
05186: if (-1 != yyC) {
05187: yyIndex = yyIndex + 1;
05188: if ('g' == yyC) {
05189:
05190: yyC = character(yyIndex);
05191: if (-1 != yyC) {
05192: yyIndex = yyIndex + 1;
05193: if ('m' == yyC) {
05194:
05195: yyC = character(yyIndex);
05196: if (-1 != yyC) {
05197: yyIndex = yyIndex + 1;
05198: if ('a' == yyC) {
05199:
05200: yyC = character(yyIndex);
05201: if (-1 != yyC) {
05202: yyIndex = yyIndex + 1;
05203: if (' ' == yyC) {
05204:
05205: yyResult = pPragma(yyIndex);
05206: yyError = yyResult
05207: .select(yyError);
05208: if (yyResult
05209: .hasValue()) {
05210: final String pragma = yyResult
05211: .semanticValue();
05212:
05213: yyPredResult = pLineTerminator(yyResult.index);
05214: yyError = yyPredResult
05215: .select(yyError);
05216: if (yyPredResult
05217: .hasValue()) {
05218:
05219: yyState
05220: .pragma(
05221: pragma,
05222: location(yyStart));
05223:
05224: yyValue = null;
05225:
05226: return yyResult
05227: .createValue(
05228: yyValue,
05229: yyError);
05230: }
05231: }
05232: }
05233: }
05234: }
05235: }
05236: }
05237: }
05238: }
05239: }
05240: }
05241: }
05242: }
05243: }
05244: }
05245: break;
05246:
05247: case 'i': {
05248: yyC = character(yyIndex);
05249: if (-1 != yyC) {
05250: yyIndex = yyIndex + 1;
05251: if ('d' == yyC) {
05252:
05253: yyC = character(yyIndex);
05254: if (-1 != yyC) {
05255: yyIndex = yyIndex + 1;
05256: if ('e' == yyC) {
05257:
05258: yyC = character(yyIndex);
05259: if (-1 != yyC) {
05260: yyIndex = yyIndex + 1;
05261: if ('n' == yyC) {
05262:
05263: yyC = character(yyIndex);
05264: if (-1 != yyC) {
05265: yyIndex = yyIndex + 1;
05266: if ('t' == yyC) {
05267:
05268: yyRepetition1 = yyIndex;
05269: yyRepeated1 = false;
05270: while (true) {
05271:
05272: yyResult = pSpace(yyRepetition1);
05273: yyError = yyResult
05274: .select(yyError);
05275: if (yyResult
05276: .hasValue()) {
05277:
05278: yyRepetition1 = yyResult.index;
05279: yyRepeated1 = true;
05280: continue;
05281: }
05282: break;
05283: }
05284:
05285: if (yyRepeated1) {
05286:
05287: yyC = character(yyRepetition1);
05288: if ('\"' == yyC) {
05289: yyIndex = yyRepetition1 + 1;
05290:
05291: yyResult = pCSpacing$FileName(yyIndex);
05292: yyError = yyResult
05293: .select(yyError);
05294: if (yyResult
05295: .hasValue()) {
05296: final String s = yyResult
05297: .semanticValue();
05298:
05299: yyC = character(yyResult.index);
05300: if ('\"' == yyC) {
05301: yyIndex = yyResult.index + 1;
05302:
05303: yyPredResult = pLineTerminator(yyIndex);
05304: yyError = yyPredResult
05305: .select(yyError);
05306: if (yyPredResult
05307: .hasValue()) {
05308:
05309: yyState
05310: .ident(
05311: s,
05312: location(yyStart));
05313:
05314: yyValue = null;
05315:
05316: return new SemanticValue(
05317: yyValue,
05318: yyIndex,
05319: yyError);
05320: }
05321: }
05322: }
05323: }
05324: }
05325: }
05326: }
05327: }
05328: }
05329: }
05330: }
05331: }
05332: }
05333: }
05334: break;
05335:
05336: default:
05337: /* No match. */
05338: }
05339: }
05340: } // End scope for nested choice.
05341: }
05342:
05343: // Alternative 2.
05344:
05345: yyValue = null;
05346:
05347: return new SemanticValue(yyValue, yyStart, yyError);
05348: }
05349:
05350: // =========================================================================
05351:
05352: /**
05353: * Parse nonterminal xtc.lang.CSpacing.LineNumber.
05354: *
05355: * @param yyStart The index.
05356: * @return The result.
05357: * @throws IOException Signals an I/O error.
05358: */
05359: private Result pLineNumber(final int yyStart) throws IOException {
05360: int yyC;
05361: int yyIndex;
05362: int yyRepetition1;
05363: String yyValue;
05364: ParseError yyError = ParseError.DUMMY;
05365:
05366: // Alternative 1.
05367:
05368: yyC = character(yyStart);
05369: if (-1 != yyC) {
05370: yyIndex = yyStart + 1;
05371:
05372: switch (yyC) {
05373: case '1':
05374: case '2':
05375: case '3':
05376: case '4':
05377: case '5':
05378: case '6':
05379: case '7':
05380: case '8':
05381: case '9': {
05382: yyRepetition1 = yyIndex;
05383: while (true) {
05384:
05385: yyC = character(yyRepetition1);
05386: if (-1 != yyC) {
05387: yyIndex = yyRepetition1 + 1;
05388:
05389: switch (yyC) {
05390: case '0':
05391: case '1':
05392: case '2':
05393: case '3':
05394: case '4':
05395: case '5':
05396: case '6':
05397: case '7':
05398: case '8':
05399: case '9': {
05400: yyRepetition1 = yyIndex;
05401: continue;
05402: }
05403:
05404: default:
05405: /* No match. */
05406: }
05407: }
05408: break;
05409: }
05410:
05411: yyValue = difference(yyStart, yyRepetition1);
05412:
05413: return new SemanticValue(yyValue, yyRepetition1,
05414: yyError);
05415: }
05416:
05417: default:
05418: /* No match. */
05419: }
05420: }
05421:
05422: // Done.
05423: yyError = yyError.select("line number expected", yyStart);
05424: return yyError;
05425: }
05426:
05427: // =========================================================================
05428:
05429: /**
05430: * Parse nonterminal xtc.lang.CSpacing.FileName.
05431: *
05432: * @param yyStart The index.
05433: * @return The result.
05434: * @throws IOException Signals an I/O error.
05435: */
05436: private Result pCSpacing$FileName(final int yyStart)
05437: throws IOException {
05438: int yyC;
05439: int yyIndex;
05440: int yyRepetition1;
05441: String yyValue;
05442: ParseError yyError = ParseError.DUMMY;
05443:
05444: // Alternative 1.
05445:
05446: yyRepetition1 = yyStart;
05447: while (true) {
05448:
05449: final int yyChoice1 = yyRepetition1;
05450:
05451: // Nested alternative 1.
05452:
05453: yyC = character(yyChoice1);
05454: if (-1 != yyC) {
05455: yyIndex = yyChoice1 + 1;
05456:
05457: switch (yyC) {
05458: case '\\': {
05459: yyC = character(yyIndex);
05460: if (-1 != yyC) {
05461: yyIndex = yyIndex + 1;
05462:
05463: yyRepetition1 = yyIndex;
05464: continue;
05465: }
05466: }
05467: break;
05468:
05469: default:
05470: /* No match. */
05471: }
05472: }
05473:
05474: // Nested alternative 2.
05475:
05476: yyC = character(yyChoice1);
05477: if (-1 != yyC) {
05478: yyIndex = yyChoice1 + 1;
05479:
05480: switch (yyC) {
05481: case '\"':
05482: case '\\':
05483: /* No match. */
05484: break;
05485:
05486: default: {
05487: yyRepetition1 = yyIndex;
05488: continue;
05489: }
05490: }
05491: }
05492: break;
05493: }
05494:
05495: yyValue = difference(yyStart, yyRepetition1);
05496:
05497: return new SemanticValue(yyValue, yyRepetition1, yyError);
05498: }
05499:
05500: // =========================================================================
05501:
05502: /**
05503: * Parse nonterminal xtc.lang.CSpacing.Pragma.
05504: *
05505: * @param yyStart The index.
05506: * @return The result.
05507: * @throws IOException Signals an I/O error.
05508: */
05509: private Result pPragma(final int yyStart) throws IOException {
05510: int yyC;
05511: int yyIndex;
05512: int yyRepetition1;
05513: String yyValue;
05514: ParseError yyError = ParseError.DUMMY;
05515:
05516: // Alternative 1.
05517:
05518: yyRepetition1 = yyStart;
05519: while (true) {
05520:
05521: yyC = character(yyRepetition1);
05522: if (-1 != yyC) {
05523: yyIndex = yyRepetition1 + 1;
05524:
05525: switch (yyC) {
05526: case '\n':
05527: case '\r':
05528: /* No match. */
05529: break;
05530:
05531: default: {
05532: yyRepetition1 = yyIndex;
05533: continue;
05534: }
05535: }
05536: }
05537: break;
05538: }
05539:
05540: yyValue = difference(yyStart, yyRepetition1);
05541:
05542: return new SemanticValue(yyValue, yyRepetition1, yyError);
05543: }
05544:
05545: // =========================================================================
05546:
05547: /**
05548: * Parse nonterminal xtc.lang.jeannie.JeannieSymbol.Symbol.
05549: *
05550: * @param yyStart The index.
05551: * @return The result.
05552: * @throws IOException Signals an I/O error.
05553: */
05554: private Result pSymbol(final int yyStart) throws IOException {
05555: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
05556: if (null == yyColumn.chunk2)
05557: yyColumn.chunk2 = new Chunk2();
05558: if (null == yyColumn.chunk2.fSymbol)
05559: yyColumn.chunk2.fSymbol = pSymbol$1(yyStart);
05560: return yyColumn.chunk2.fSymbol;
05561: }
05562:
05563: /** Actually parse xtc.lang.jeannie.JeannieSymbol.Symbol. */
05564: private Result pSymbol$1(final int yyStart) throws IOException {
05565: Result yyResult;
05566: String yyValue;
05567: ParseError yyError = ParseError.DUMMY;
05568:
05569: // Alternative 1.
05570:
05571: yyResult = pSymbolCharacters(yyStart);
05572: yyError = yyResult.select(yyError);
05573: if (yyResult.hasValue()) {
05574: yyValue = yyResult.semanticValue();
05575:
05576: yyResult = pSpacing(yyResult.index);
05577: yyError = yyResult.select(yyError);
05578: if (yyResult.hasValue()) {
05579:
05580: return yyResult.createValue(yyValue, yyError);
05581: }
05582: }
05583:
05584: // Done.
05585: return yyError;
05586: }
05587:
05588: // =========================================================================
05589:
05590: /**
05591: * Parse nonterminal xtc.lang.jeannie.JeannieSymbol.SymbolCharacters.
05592: *
05593: * @param yyStart The index.
05594: * @return The result.
05595: * @throws IOException Signals an I/O error.
05596: */
05597: private Result pSymbolCharacters(final int yyStart)
05598: throws IOException {
05599: int yyC;
05600: int yyIndex;
05601: String yyValue;
05602: ParseError yyError = ParseError.DUMMY;
05603:
05604: // Alternative 1.
05605:
05606: yyC = character(yyStart);
05607: if (-1 != yyC) {
05608: yyIndex = yyStart + 1;
05609:
05610: switch (yyC) {
05611: case '>': {
05612: final int yyChoice1 = yyIndex;
05613:
05614: // Nested alternative 1.
05615:
05616: yyC = character(yyChoice1);
05617: if (-1 != yyC) {
05618: yyIndex = yyChoice1 + 1;
05619:
05620: switch (yyC) {
05621: case '>': {
05622: final int yyChoice2 = yyIndex;
05623:
05624: // Nested alternative 1.
05625:
05626: yyC = character(yyChoice2);
05627: if (-1 != yyC) {
05628: yyIndex = yyChoice2 + 1;
05629:
05630: switch (yyC) {
05631: case '>': {
05632: final int yyChoice3 = yyIndex;
05633:
05634: // Nested alternative 1.
05635:
05636: yyC = character(yyChoice3);
05637: if (-1 != yyC) {
05638: yyIndex = yyChoice3 + 1;
05639: if ('=' == yyC) {
05640:
05641: yyValue = ">>>=";
05642:
05643: return new SemanticValue(
05644: yyValue, yyIndex,
05645: yyError);
05646: }
05647: }
05648:
05649: // Nested alternative 2.
05650:
05651: yyValue = ">>>";
05652:
05653: return new SemanticValue(yyValue,
05654: yyChoice3, yyError);
05655: }
05656:
05657: case '=': {
05658: yyValue = ">>=";
05659:
05660: return new SemanticValue(yyValue,
05661: yyIndex, yyError);
05662: }
05663:
05664: default:
05665: /* No match. */
05666: }
05667: }
05668:
05669: // Nested alternative 2.
05670:
05671: yyValue = ">>";
05672:
05673: return new SemanticValue(yyValue, yyChoice2,
05674: yyError);
05675: }
05676:
05677: case '=': {
05678: yyValue = ">=";
05679:
05680: return new SemanticValue(yyValue, yyIndex,
05681: yyError);
05682: }
05683:
05684: default:
05685: /* No match. */
05686: }
05687: }
05688:
05689: // Nested alternative 2.
05690:
05691: yyValue = ">";
05692:
05693: return new SemanticValue(yyValue, yyChoice1, yyError);
05694: }
05695:
05696: case '<': {
05697: final int yyChoice1 = yyIndex;
05698:
05699: // Nested alternative 1.
05700:
05701: yyC = character(yyChoice1);
05702: if (-1 != yyC) {
05703: yyIndex = yyChoice1 + 1;
05704:
05705: switch (yyC) {
05706: case '<': {
05707: final int yyChoice2 = yyIndex;
05708:
05709: // Nested alternative 1.
05710:
05711: yyC = character(yyChoice2);
05712: if (-1 != yyC) {
05713: yyIndex = yyChoice2 + 1;
05714: if ('=' == yyC) {
05715:
05716: yyValue = "<<=";
05717:
05718: return new SemanticValue(yyValue,
05719: yyIndex, yyError);
05720: }
05721: }
05722:
05723: // Nested alternative 2.
05724:
05725: yyValue = "<<";
05726:
05727: return new SemanticValue(yyValue, yyChoice2,
05728: yyError);
05729: }
05730:
05731: case '=': {
05732: yyValue = "<=";
05733:
05734: return new SemanticValue(yyValue, yyIndex,
05735: yyError);
05736: }
05737:
05738: default:
05739: /* No match. */
05740: }
05741: }
05742:
05743: // Nested alternative 2.
05744:
05745: yyValue = "<";
05746:
05747: return new SemanticValue(yyValue, yyChoice1, yyError);
05748: }
05749:
05750: case '.': {
05751: final int yyChoice1 = yyIndex;
05752:
05753: // Nested alternative 1.
05754:
05755: yyC = character(yyChoice1);
05756: if (-1 != yyC) {
05757: yyIndex = yyChoice1 + 1;
05758: if ('.' == yyC) {
05759:
05760: yyC = character(yyIndex);
05761: if (-1 != yyC) {
05762: yyIndex = yyIndex + 1;
05763: if ('.' == yyC) {
05764:
05765: yyValue = "...";
05766:
05767: return new SemanticValue(yyValue,
05768: yyIndex, yyError);
05769: }
05770: }
05771: }
05772: }
05773:
05774: // Nested alternative 2.
05775:
05776: yyValue = ".";
05777:
05778: return new SemanticValue(yyValue, yyChoice1, yyError);
05779: }
05780:
05781: case '+': {
05782: final int yyChoice1 = yyIndex;
05783:
05784: // Nested alternative 1.
05785:
05786: yyC = character(yyChoice1);
05787: if (-1 != yyC) {
05788: yyIndex = yyChoice1 + 1;
05789:
05790: switch (yyC) {
05791: case '=': {
05792: yyValue = "+=";
05793:
05794: return new SemanticValue(yyValue, yyIndex,
05795: yyError);
05796: }
05797:
05798: case '+': {
05799: yyValue = "++";
05800:
05801: return new SemanticValue(yyValue, yyIndex,
05802: yyError);
05803: }
05804:
05805: default:
05806: /* No match. */
05807: }
05808: }
05809:
05810: // Nested alternative 2.
05811:
05812: yyValue = "+";
05813:
05814: return new SemanticValue(yyValue, yyChoice1, yyError);
05815: }
05816:
05817: case '-': {
05818: final int yyChoice1 = yyIndex;
05819:
05820: // Nested alternative 1.
05821:
05822: yyC = character(yyChoice1);
05823: if (-1 != yyC) {
05824: yyIndex = yyChoice1 + 1;
05825:
05826: switch (yyC) {
05827: case '=': {
05828: yyValue = "-=";
05829:
05830: return new SemanticValue(yyValue, yyIndex,
05831: yyError);
05832: }
05833:
05834: case '-': {
05835: yyValue = "--";
05836:
05837: return new SemanticValue(yyValue, yyIndex,
05838: yyError);
05839: }
05840:
05841: case '>': {
05842: yyValue = "->";
05843:
05844: return new SemanticValue(yyValue, yyIndex,
05845: yyError);
05846: }
05847:
05848: default:
05849: /* No match. */
05850: }
05851: }
05852:
05853: // Nested alternative 2.
05854:
05855: yyValue = "-";
05856:
05857: return new SemanticValue(yyValue, yyChoice1, yyError);
05858: }
05859:
05860: case '*': {
05861: final int yyChoice1 = yyIndex;
05862:
05863: // Nested alternative 1.
05864:
05865: yyC = character(yyChoice1);
05866: if (-1 != yyC) {
05867: yyIndex = yyChoice1 + 1;
05868: if ('=' == yyC) {
05869:
05870: yyValue = "*=";
05871:
05872: return new SemanticValue(yyValue, yyIndex,
05873: yyError);
05874: }
05875: }
05876:
05877: // Nested alternative 2.
05878:
05879: yyValue = "*";
05880:
05881: return new SemanticValue(yyValue, yyChoice1, yyError);
05882: }
05883:
05884: case '/': {
05885: final int yyChoice1 = yyIndex;
05886:
05887: // Nested alternative 1.
05888:
05889: yyC = character(yyChoice1);
05890: if (-1 != yyC) {
05891: yyIndex = yyChoice1 + 1;
05892: if ('=' == yyC) {
05893:
05894: yyValue = "/=";
05895:
05896: return new SemanticValue(yyValue, yyIndex,
05897: yyError);
05898: }
05899: }
05900:
05901: // Nested alternative 2.
05902:
05903: yyValue = "/";
05904:
05905: return new SemanticValue(yyValue, yyChoice1, yyError);
05906: }
05907:
05908: case '%': {
05909: final int yyChoice1 = yyIndex;
05910:
05911: // Nested alternative 1.
05912:
05913: yyC = character(yyChoice1);
05914: if (-1 != yyC) {
05915: yyIndex = yyChoice1 + 1;
05916: if ('=' == yyC) {
05917:
05918: yyValue = "%=";
05919:
05920: return new SemanticValue(yyValue, yyIndex,
05921: yyError);
05922: }
05923: }
05924:
05925: // Nested alternative 2.
05926:
05927: yyValue = "%";
05928:
05929: return new SemanticValue(yyValue, yyChoice1, yyError);
05930: }
05931:
05932: case '&': {
05933: final int yyChoice1 = yyIndex;
05934:
05935: // Nested alternative 1.
05936:
05937: yyC = character(yyChoice1);
05938: if (-1 != yyC) {
05939: yyIndex = yyChoice1 + 1;
05940:
05941: switch (yyC) {
05942: case '=': {
05943: yyValue = "&=";
05944:
05945: return new SemanticValue(yyValue, yyIndex,
05946: yyError);
05947: }
05948:
05949: case '&': {
05950: yyValue = "&&";
05951:
05952: return new SemanticValue(yyValue, yyIndex,
05953: yyError);
05954: }
05955:
05956: default:
05957: /* No match. */
05958: }
05959: }
05960:
05961: // Nested alternative 2.
05962:
05963: yyValue = "&";
05964:
05965: return new SemanticValue(yyValue, yyChoice1, yyError);
05966: }
05967:
05968: case '^': {
05969: final int yyChoice1 = yyIndex;
05970:
05971: // Nested alternative 1.
05972:
05973: yyC = character(yyChoice1);
05974: if (-1 != yyC) {
05975: yyIndex = yyChoice1 + 1;
05976: if ('=' == yyC) {
05977:
05978: yyValue = "^=";
05979:
05980: return new SemanticValue(yyValue, yyIndex,
05981: yyError);
05982: }
05983: }
05984:
05985: // Nested alternative 2.
05986:
05987: yyValue = "^";
05988:
05989: return new SemanticValue(yyValue, yyChoice1, yyError);
05990: }
05991:
05992: case '|': {
05993: final int yyChoice1 = yyIndex;
05994:
05995: // Nested alternative 1.
05996:
05997: yyC = character(yyChoice1);
05998: if (-1 != yyC) {
05999: yyIndex = yyChoice1 + 1;
06000:
06001: switch (yyC) {
06002: case '=': {
06003: yyValue = "|=";
06004:
06005: return new SemanticValue(yyValue, yyIndex,
06006: yyError);
06007: }
06008:
06009: case '|': {
06010: yyValue = "||";
06011:
06012: return new SemanticValue(yyValue, yyIndex,
06013: yyError);
06014: }
06015:
06016: default:
06017: /* No match. */
06018: }
06019: }
06020:
06021: // Nested alternative 2.
06022:
06023: yyValue = "|";
06024:
06025: return new SemanticValue(yyValue, yyChoice1, yyError);
06026: }
06027:
06028: case '=': {
06029: final int yyChoice1 = yyIndex;
06030:
06031: // Nested alternative 1.
06032:
06033: yyC = character(yyChoice1);
06034: if (-1 != yyC) {
06035: yyIndex = yyChoice1 + 1;
06036: if ('=' == yyC) {
06037:
06038: yyValue = "==";
06039:
06040: return new SemanticValue(yyValue, yyIndex,
06041: yyError);
06042: }
06043: }
06044:
06045: // Nested alternative 2.
06046:
06047: yyValue = "=";
06048:
06049: return new SemanticValue(yyValue, yyChoice1, yyError);
06050: }
06051:
06052: case '!': {
06053: final int yyChoice1 = yyIndex;
06054:
06055: // Nested alternative 1.
06056:
06057: yyC = character(yyChoice1);
06058: if (-1 != yyC) {
06059: yyIndex = yyChoice1 + 1;
06060: if ('=' == yyC) {
06061:
06062: yyValue = "!=";
06063:
06064: return new SemanticValue(yyValue, yyIndex,
06065: yyError);
06066: }
06067: }
06068:
06069: // Nested alternative 2.
06070:
06071: yyValue = "!";
06072:
06073: return new SemanticValue(yyValue, yyChoice1, yyError);
06074: }
06075:
06076: case ';': {
06077: yyValue = ";";
06078:
06079: return new SemanticValue(yyValue, yyIndex, yyError);
06080: }
06081:
06082: case ':': {
06083: yyValue = ":";
06084:
06085: return new SemanticValue(yyValue, yyIndex, yyError);
06086: }
06087:
06088: case ',': {
06089: yyValue = ",";
06090:
06091: return new SemanticValue(yyValue, yyIndex, yyError);
06092: }
06093:
06094: case '{': {
06095: yyValue = "{";
06096:
06097: return new SemanticValue(yyValue, yyIndex, yyError);
06098: }
06099:
06100: case '}': {
06101: yyValue = "}";
06102:
06103: return new SemanticValue(yyValue, yyIndex, yyError);
06104: }
06105:
06106: case '(': {
06107: yyValue = "(";
06108:
06109: return new SemanticValue(yyValue, yyIndex, yyError);
06110: }
06111:
06112: case ')': {
06113: yyValue = ")";
06114:
06115: return new SemanticValue(yyValue, yyIndex, yyError);
06116: }
06117:
06118: case '[': {
06119: yyValue = "[";
06120:
06121: return new SemanticValue(yyValue, yyIndex, yyError);
06122: }
06123:
06124: case ']': {
06125: yyValue = "]";
06126:
06127: return new SemanticValue(yyValue, yyIndex, yyError);
06128: }
06129:
06130: case '`': {
06131: yyValue = "`";
06132:
06133: return new SemanticValue(yyValue, yyIndex, yyError);
06134: }
06135:
06136: case '~': {
06137: yyValue = "~";
06138:
06139: return new SemanticValue(yyValue, yyIndex, yyError);
06140: }
06141:
06142: case '?': {
06143: yyValue = "?";
06144:
06145: return new SemanticValue(yyValue, yyIndex, yyError);
06146: }
06147:
06148: default:
06149: /* No match. */
06150: }
06151: }
06152:
06153: // Done.
06154: yyError = yyError.select("symbol characters expected", yyStart);
06155: return yyError;
06156: }
06157:
06158: // =========================================================================
06159:
06160: /**
06161: * Parse nonterminal xtc.lang.CIdentifier.Identifier.
06162: *
06163: * @param yyStart The index.
06164: * @return The result.
06165: * @throws IOException Signals an I/O error.
06166: */
06167: private Result pCIdentifier$Identifier(final int yyStart)
06168: throws IOException {
06169:
06170: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
06171: if (null == yyColumn.chunk2)
06172: yyColumn.chunk2 = new Chunk2();
06173: if (null == yyColumn.chunk2.fCIdentifier$Identifier)
06174: yyColumn.chunk2.fCIdentifier$Identifier = pCIdentifier$Identifier$1(yyStart);
06175: return yyColumn.chunk2.fCIdentifier$Identifier;
06176: }
06177:
06178: /** Actually parse xtc.lang.CIdentifier.Identifier. */
06179: private Result pCIdentifier$Identifier$1(final int yyStart)
06180: throws IOException {
06181:
06182: Result yyResult;
06183: String yyValue;
06184: ParseError yyError = ParseError.DUMMY;
06185:
06186: // Alternative 1.
06187:
06188: yyResult = pCIdentifier$Word(yyStart);
06189: yyError = yyResult.select(yyError);
06190: if (yyResult.hasValue()) {
06191: yyValue = yyResult.semanticValue();
06192:
06193: if (!contains(C_KEYWORDS, toText(yyValue))) {
06194:
06195: return yyResult.createValue(yyValue, yyError);
06196: }
06197: }
06198:
06199: // Done.
06200: yyError = yyError.select("identifier expected", yyStart);
06201: return yyError;
06202: }
06203:
06204: // =========================================================================
06205:
06206: /**
06207: * Parse nonterminal xtc.lang.CIdentifier.Keyword.
06208: *
06209: * @param yyStart The index.
06210: * @return The result.
06211: * @throws IOException Signals an I/O error.
06212: */
06213: private Result pKeyword(final int yyStart) throws IOException {
06214: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
06215: if (null == yyColumn.chunk2)
06216: yyColumn.chunk2 = new Chunk2();
06217: if (null == yyColumn.chunk2.fKeyword)
06218: yyColumn.chunk2.fKeyword = pKeyword$1(yyStart);
06219: return yyColumn.chunk2.fKeyword;
06220: }
06221:
06222: /** Actually parse xtc.lang.CIdentifier.Keyword. */
06223: private Result pKeyword$1(final int yyStart) throws IOException {
06224: Result yyResult;
06225: String yyValue;
06226: ParseError yyError = ParseError.DUMMY;
06227:
06228: // Alternative 1.
06229:
06230: yyResult = pCIdentifier$Word(yyStart);
06231: yyError = yyResult.select(yyError);
06232: if (yyResult.hasValue()) {
06233: yyValue = yyResult.semanticValue();
06234:
06235: if (contains(C_KEYWORDS, toText(yyValue))) {
06236:
06237: return yyResult.createValue(yyValue, yyError);
06238: }
06239: }
06240:
06241: // Done.
06242: yyError = yyError.select("keyword expected", yyStart);
06243: return yyError;
06244: }
06245:
06246: // =========================================================================
06247:
06248: /**
06249: * Parse nonterminal xtc.lang.CIdentifier.Word.
06250: *
06251: * @param yyStart The index.
06252: * @return The result.
06253: * @throws IOException Signals an I/O error.
06254: */
06255: private Result pCIdentifier$Word(final int yyStart)
06256: throws IOException {
06257: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
06258: if (null == yyColumn.chunk2)
06259: yyColumn.chunk2 = new Chunk2();
06260: if (null == yyColumn.chunk2.fCIdentifier$Word)
06261: yyColumn.chunk2.fCIdentifier$Word = pCIdentifier$Word$1(yyStart);
06262: return yyColumn.chunk2.fCIdentifier$Word;
06263: }
06264:
06265: /** Actually parse xtc.lang.CIdentifier.Word. */
06266: private Result pCIdentifier$Word$1(final int yyStart)
06267: throws IOException {
06268: Result yyResult;
06269: String yyValue;
06270: ParseError yyError = ParseError.DUMMY;
06271:
06272: // Alternative 1.
06273:
06274: yyResult = pCIdentifier$WordCharacters(yyStart);
06275: yyError = yyResult.select(yyError);
06276: if (yyResult.hasValue()) {
06277: yyValue = yyResult.semanticValue();
06278:
06279: yyResult = pSpacing(yyResult.index);
06280: yyError = yyResult.select(yyError);
06281: if (yyResult.hasValue()) {
06282:
06283: return yyResult.createValue(yyValue, yyError);
06284: }
06285: }
06286:
06287: // Done.
06288: return yyError;
06289: }
06290:
06291: // =========================================================================
06292:
06293: /**
06294: * Parse nonterminal xtc.lang.CIdentifier.WordCharacters.
06295: *
06296: * @param yyStart The index.
06297: * @return The result.
06298: * @throws IOException Signals an I/O error.
06299: */
06300: private Result pCIdentifier$WordCharacters(final int yyStart)
06301: throws IOException {
06302:
06303: int yyC;
06304: int yyIndex;
06305: int yyRepetition1;
06306: String yyValue;
06307: ParseError yyError = ParseError.DUMMY;
06308:
06309: // Alternative 1.
06310:
06311: yyC = character(yyStart);
06312: if (-1 != yyC) {
06313: yyIndex = yyStart + 1;
06314: if ((('A' <= yyC) && (yyC <= 'Z')) || ('_' == yyC)
06315: || (('a' <= yyC) && (yyC <= 'z'))) {
06316:
06317: yyRepetition1 = yyIndex;
06318: while (true) {
06319:
06320: yyC = character(yyRepetition1);
06321: if (-1 != yyC) {
06322: yyIndex = yyRepetition1 + 1;
06323: if ((('0' <= yyC) && (yyC <= '9'))
06324: || (('A' <= yyC) && (yyC <= 'Z'))
06325: || ('_' == yyC)
06326: || (('a' <= yyC) && (yyC <= 'z'))) {
06327:
06328: yyRepetition1 = yyIndex;
06329: continue;
06330: }
06331: }
06332: break;
06333: }
06334:
06335: yyValue = difference(yyStart, yyRepetition1);
06336:
06337: return new SemanticValue(yyValue, yyRepetition1,
06338: yyError);
06339: }
06340: }
06341:
06342: // Done.
06343: yyError = yyError.select("word characters expected", yyStart);
06344: return yyError;
06345: }
06346:
06347: // =========================================================================
06348:
06349: /**
06350: * Parse nonterminal xtc.lang.CContext.TypedefContext.
06351: *
06352: * @param yyStart The index.
06353: * @return The result.
06354: * @throws IOException Signals an I/O error.
06355: */
06356: private Result pTypedefContext(final int yyStart)
06357: throws IOException {
06358: Void yyValue;
06359: ParseError yyError = ParseError.DUMMY;
06360:
06361: // Alternative 1.
06362:
06363: yyState.typedef();
06364:
06365: yyValue = null;
06366:
06367: return new SemanticValue(yyValue, yyStart, yyError);
06368: }
06369:
06370: // =========================================================================
06371:
06372: /**
06373: * Parse nonterminal xtc.lang.CContext.ParameterContext.
06374: *
06375: * @param yyStart The index.
06376: * @return The result.
06377: * @throws IOException Signals an I/O error.
06378: */
06379: private Result pParameterContext(final int yyStart)
06380: throws IOException {
06381: Void yyValue;
06382: ParseError yyError = ParseError.DUMMY;
06383:
06384: // Alternative 1.
06385:
06386: yyState.parameters();
06387:
06388: yyValue = null;
06389:
06390: return new SemanticValue(yyValue, yyStart, yyError);
06391: }
06392:
06393: // =========================================================================
06394:
06395: /**
06396: * Parse nonterminal xtc.lang.CContext.TypeSpecContext.
06397: *
06398: * @param yyStart The index.
06399: * @return The result.
06400: * @throws IOException Signals an I/O error.
06401: */
06402: private Result pTypeSpecContext(final int yyStart)
06403: throws IOException {
06404: Void yyValue;
06405: ParseError yyError = ParseError.DUMMY;
06406:
06407: // Alternative 1.
06408:
06409: yyState.typeSpecifier();
06410:
06411: yyValue = null;
06412:
06413: return new SemanticValue(yyValue, yyStart, yyError);
06414: }
06415:
06416: // =========================================================================
06417:
06418: /**
06419: * Parse nonterminal xtc.lang.CContext.PushScope.
06420: *
06421: * @param yyStart The index.
06422: * @return The result.
06423: * @throws IOException Signals an I/O error.
06424: */
06425: private Result pPushScope(final int yyStart) throws IOException {
06426: Void yyValue;
06427: ParseError yyError = ParseError.DUMMY;
06428:
06429: // Alternative 1.
06430:
06431: yyState.pushScope();
06432:
06433: yyValue = null;
06434:
06435: return new SemanticValue(yyValue, yyStart, yyError);
06436: }
06437:
06438: // =========================================================================
06439:
06440: /**
06441: * Parse nonterminal xtc.lang.CContext.PopScope.
06442: *
06443: * @param yyStart The index.
06444: * @return The result.
06445: * @throws IOException Signals an I/O error.
06446: */
06447: private Result pPopScope(final int yyStart) throws IOException {
06448: Void yyValue;
06449: ParseError yyError = ParseError.DUMMY;
06450:
06451: // Alternative 1.
06452:
06453: yyState.popScope();
06454:
06455: yyValue = null;
06456:
06457: return new SemanticValue(yyValue, yyStart, yyError);
06458: }
06459:
06460: // =========================================================================
06461:
06462: /**
06463: * Parse nonterminal xtc.lang.CContext.EnterStructure.
06464: *
06465: * @param yyStart The index.
06466: * @return The result.
06467: * @throws IOException Signals an I/O error.
06468: */
06469: private Result pEnterStructure(final int yyStart)
06470: throws IOException {
06471: Void yyValue;
06472: ParseError yyError = ParseError.DUMMY;
06473:
06474: // Alternative 1.
06475:
06476: yyState.enterStructure();
06477:
06478: yyValue = null;
06479:
06480: return new SemanticValue(yyValue, yyStart, yyError);
06481: }
06482:
06483: // =========================================================================
06484:
06485: /**
06486: * Parse nonterminal xtc.lang.CContext.ExitStructure.
06487: *
06488: * @param yyStart The index.
06489: * @return The result.
06490: * @throws IOException Signals an I/O error.
06491: */
06492: private Result pExitStructure(final int yyStart) throws IOException {
06493: Void yyValue;
06494: ParseError yyError = ParseError.DUMMY;
06495:
06496: // Alternative 1.
06497:
06498: yyState.exitStructure();
06499:
06500: yyValue = null;
06501:
06502: return new SemanticValue(yyValue, yyStart, yyError);
06503: }
06504:
06505: // =========================================================================
06506:
06507: /**
06508: * Parse nonterminal xtc.lang.JavaType.ResultType.
06509: *
06510: * @param yyStart The index.
06511: * @return The result.
06512: * @throws IOException Signals an I/O error.
06513: */
06514: private Result pResultType(final int yyStart) throws IOException {
06515: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
06516: if (null == yyColumn.chunk2)
06517: yyColumn.chunk2 = new Chunk2();
06518: if (null == yyColumn.chunk2.fResultType)
06519: yyColumn.chunk2.fResultType = pResultType$1(yyStart);
06520: return yyColumn.chunk2.fResultType;
06521: }
06522:
06523: /** Actually parse xtc.lang.JavaType.ResultType. */
06524: private Result pResultType$1(final int yyStart) throws IOException {
06525: Result yyResult;
06526: Node yyValue;
06527: ParseError yyError = ParseError.DUMMY;
06528:
06529: // Alternative <Void>.
06530:
06531: yyResult = pVoidType(yyStart);
06532: yyError = yyResult.select(yyError);
06533: if (yyResult.hasValue()) {
06534: yyValue = yyResult.semanticValue();
06535:
06536: return yyResult.createValue(yyValue, yyError);
06537: }
06538:
06539: // Alternative <Regular>.
06540:
06541: yyResult = pType(yyStart);
06542: yyError = yyResult.select(yyError);
06543: if (yyResult.hasValue()) {
06544: yyValue = yyResult.semanticValue();
06545:
06546: return yyResult.createValue(yyValue, yyError);
06547: }
06548:
06549: // Done.
06550: return yyError;
06551: }
06552:
06553: // =========================================================================
06554:
06555: /**
06556: * Parse nonterminal xtc.lang.JavaType.VoidType.
06557: *
06558: * @param yyStart The index.
06559: * @return The result.
06560: * @throws IOException Signals an I/O error.
06561: */
06562: private Result pVoidType(final int yyStart) throws IOException {
06563: Result yyResult;
06564: Node yyValue;
06565: ParseError yyError = ParseError.DUMMY;
06566:
06567: // Alternative <Void>.
06568:
06569: yyResult = pJavaIdentifier$Word(yyStart);
06570: yyError = yyResult.select(yyError);
06571: if (yyResult.hasValue("void")) {
06572:
06573: yyValue = GNode.create("VoidType", false);
06574: yyValue.setLocation(location(yyStart));
06575:
06576: return yyResult.createValue(yyValue, yyError);
06577: }
06578:
06579: // Done.
06580: yyError = yyError.select("void type expected", yyStart);
06581: return yyError;
06582: }
06583:
06584: // =========================================================================
06585:
06586: /**
06587: * Parse nonterminal xtc.lang.JavaType.Type.
06588: *
06589: * @param yyStart The index.
06590: * @return The result.
06591: * @throws IOException Signals an I/O error.
06592: */
06593: private Result pType(final int yyStart) throws IOException {
06594: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
06595: if (null == yyColumn.chunk2)
06596: yyColumn.chunk2 = new Chunk2();
06597: if (null == yyColumn.chunk2.fType)
06598: yyColumn.chunk2.fType = pType$1(yyStart);
06599: return yyColumn.chunk2.fType;
06600: }
06601:
06602: /** Actually parse xtc.lang.JavaType.Type. */
06603: private Result pType$1(final int yyStart) throws IOException {
06604: Result yyResult;
06605: int yyOption1;
06606: Node yyOpValue1;
06607: Node yyValue;
06608: ParseError yyError = ParseError.DUMMY;
06609:
06610: // Alternative <Type>.
06611:
06612: yyResult = pJavaType$TypeName(yyStart);
06613: yyError = yyResult.select(yyError);
06614: if (yyResult.hasValue()) {
06615: final Node v$g$1 = yyResult.semanticValue();
06616:
06617: yyOption1 = yyResult.index;
06618: yyOpValue1 = null;
06619:
06620: yyResult = pDimensions(yyOption1);
06621: yyError = yyResult.select(yyError);
06622: if (yyResult.hasValue()) {
06623: final Node v$el$1 = yyResult.semanticValue();
06624:
06625: yyOption1 = yyResult.index;
06626: yyOpValue1 = v$el$1;
06627: }
06628: { // Start scope for v$g$2.
06629: final Node v$g$2 = yyOpValue1;
06630:
06631: yyValue = GNode.create("Type", v$g$1, v$g$2);
06632: yyValue.setLocation(location(yyStart));
06633:
06634: return new SemanticValue(yyValue, yyOption1, yyError);
06635: } // End scope for v$g$2.
06636: }
06637:
06638: // Done.
06639: return yyError;
06640: }
06641:
06642: // =========================================================================
06643:
06644: /**
06645: * Parse nonterminal xtc.lang.JavaType.TypeName.
06646: *
06647: * @param yyStart The index.
06648: * @return The result.
06649: * @throws IOException Signals an I/O error.
06650: */
06651: private Result pJavaType$TypeName(final int yyStart)
06652: throws IOException {
06653: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
06654: if (null == yyColumn.chunk2)
06655: yyColumn.chunk2 = new Chunk2();
06656: if (null == yyColumn.chunk2.fJavaType$TypeName)
06657: yyColumn.chunk2.fJavaType$TypeName = pJavaType$TypeName$1(yyStart);
06658: return yyColumn.chunk2.fJavaType$TypeName;
06659: }
06660:
06661: /** Actually parse xtc.lang.JavaType.TypeName. */
06662: private Result pJavaType$TypeName$1(final int yyStart)
06663: throws IOException {
06664: Result yyResult;
06665: Node yyValue;
06666: ParseError yyError = ParseError.DUMMY;
06667:
06668: // Alternative <Basic>.
06669:
06670: yyResult = pPrimitiveType(yyStart);
06671: yyError = yyResult.select(yyError);
06672: if (yyResult.hasValue()) {
06673: yyValue = yyResult.semanticValue();
06674:
06675: return yyResult.createValue(yyValue, yyError);
06676: }
06677:
06678: // Alternative <Class>.
06679:
06680: yyResult = pQualifiedIdentifier(yyStart);
06681: yyError = yyResult.select(yyError);
06682: if (yyResult.hasValue()) {
06683: yyValue = yyResult.semanticValue();
06684:
06685: return yyResult.createValue(yyValue, yyError);
06686: }
06687:
06688: // Done.
06689: return yyError;
06690: }
06691:
06692: // =========================================================================
06693:
06694: /**
06695: * Parse nonterminal xtc.lang.JavaType.PrimitiveType.
06696: *
06697: * @param yyStart The index.
06698: * @return The result.
06699: * @throws IOException Signals an I/O error.
06700: */
06701: private Result pPrimitiveType(final int yyStart) throws IOException {
06702: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
06703: if (null == yyColumn.chunk3)
06704: yyColumn.chunk3 = new Chunk3();
06705: if (null == yyColumn.chunk3.fPrimitiveType)
06706: yyColumn.chunk3.fPrimitiveType = pPrimitiveType$1(yyStart);
06707: return yyColumn.chunk3.fPrimitiveType;
06708: }
06709:
06710: /** Actually parse xtc.lang.JavaType.PrimitiveType. */
06711: private Result pPrimitiveType$1(final int yyStart)
06712: throws IOException {
06713: Result yyResult;
06714: Node yyValue;
06715: ParseError yyError = ParseError.DUMMY;
06716:
06717: // Alternative <Byte>.
06718:
06719: yyResult = pJavaIdentifier$Word(yyStart);
06720: yyError = yyResult.select(yyError);
06721: if (yyResult.hasValue("byte")) {
06722: final String v$g$1 = "byte";
06723:
06724: yyValue = GNode.create("PrimitiveType", v$g$1);
06725: yyValue.setLocation(location(yyStart));
06726:
06727: return yyResult.createValue(yyValue, yyError);
06728: }
06729:
06730: // Alternative <Short>.
06731:
06732: yyResult = pJavaIdentifier$Word(yyStart);
06733: yyError = yyResult.select(yyError);
06734: if (yyResult.hasValue("short")) {
06735: final String v$g$2 = "short";
06736:
06737: yyValue = GNode.create("PrimitiveType", v$g$2);
06738: yyValue.setLocation(location(yyStart));
06739:
06740: return yyResult.createValue(yyValue, yyError);
06741: }
06742:
06743: // Alternative <Char>.
06744:
06745: yyResult = pJavaIdentifier$Word(yyStart);
06746: yyError = yyResult.select(yyError);
06747: if (yyResult.hasValue("char")) {
06748: final String v$g$3 = "char";
06749:
06750: yyValue = GNode.create("PrimitiveType", v$g$3);
06751: yyValue.setLocation(location(yyStart));
06752:
06753: return yyResult.createValue(yyValue, yyError);
06754: }
06755:
06756: // Alternative <Int>.
06757:
06758: yyResult = pJavaIdentifier$Word(yyStart);
06759: yyError = yyResult.select(yyError);
06760: if (yyResult.hasValue("int")) {
06761: final String v$g$4 = "int";
06762:
06763: yyValue = GNode.create("PrimitiveType", v$g$4);
06764: yyValue.setLocation(location(yyStart));
06765:
06766: return yyResult.createValue(yyValue, yyError);
06767: }
06768:
06769: // Alternative <Long>.
06770:
06771: yyResult = pJavaIdentifier$Word(yyStart);
06772: yyError = yyResult.select(yyError);
06773: if (yyResult.hasValue("long")) {
06774: final String v$g$5 = "long";
06775:
06776: yyValue = GNode.create("PrimitiveType", v$g$5);
06777: yyValue.setLocation(location(yyStart));
06778:
06779: return yyResult.createValue(yyValue, yyError);
06780: }
06781:
06782: // Alternative <Float>.
06783:
06784: yyResult = pJavaIdentifier$Word(yyStart);
06785: yyError = yyResult.select(yyError);
06786: if (yyResult.hasValue("float")) {
06787: final String v$g$6 = "float";
06788:
06789: yyValue = GNode.create("PrimitiveType", v$g$6);
06790: yyValue.setLocation(location(yyStart));
06791:
06792: return yyResult.createValue(yyValue, yyError);
06793: }
06794:
06795: // Alternative <Double>.
06796:
06797: yyResult = pJavaIdentifier$Word(yyStart);
06798: yyError = yyResult.select(yyError);
06799: if (yyResult.hasValue("double")) {
06800: final String v$g$7 = "double";
06801:
06802: yyValue = GNode.create("PrimitiveType", v$g$7);
06803: yyValue.setLocation(location(yyStart));
06804:
06805: return yyResult.createValue(yyValue, yyError);
06806: }
06807:
06808: // Alternative <Boolean>.
06809:
06810: yyResult = pJavaIdentifier$Word(yyStart);
06811: yyError = yyResult.select(yyError);
06812: if (yyResult.hasValue("boolean")) {
06813: final String v$g$8 = "boolean";
06814:
06815: yyValue = GNode.create("PrimitiveType", v$g$8);
06816: yyValue.setLocation(location(yyStart));
06817:
06818: return yyResult.createValue(yyValue, yyError);
06819: }
06820:
06821: // Done.
06822: yyError = yyError.select("primitive type expected", yyStart);
06823: return yyError;
06824: }
06825:
06826: // =========================================================================
06827:
06828: /**
06829: * Parse nonterminal xtc.lang.JavaType.Dimensions.
06830: *
06831: * @param yyStart The index.
06832: * @return The result.
06833: * @throws IOException Signals an I/O error.
06834: */
06835: private Result pDimensions(final int yyStart) throws IOException {
06836: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
06837: if (null == yyColumn.chunk3)
06838: yyColumn.chunk3 = new Chunk3();
06839: if (null == yyColumn.chunk3.fDimensions)
06840: yyColumn.chunk3.fDimensions = pDimensions$1(yyStart);
06841: return yyColumn.chunk3.fDimensions;
06842: }
06843:
06844: /** Actually parse xtc.lang.JavaType.Dimensions. */
06845: private Result pDimensions$1(final int yyStart) throws IOException {
06846: Result yyResult;
06847: Node yyValue;
06848: ParseError yyError = ParseError.DUMMY;
06849:
06850: // Alternative 1.
06851:
06852: yyResult = pDimensions$$Plus1(yyStart);
06853: yyError = yyResult.select(yyError);
06854: if (yyResult.hasValue()) {
06855: final Pair<String> v$g$1 = yyResult.semanticValue();
06856:
06857: yyValue = GNode.createFromPair("Dimensions", v$g$1);
06858: yyValue.setLocation(location(yyStart));
06859:
06860: return yyResult.createValue(yyValue, yyError);
06861: }
06862:
06863: // Done.
06864: return yyError;
06865: }
06866:
06867: // =========================================================================
06868:
06869: /**
06870: * Parse synthetic nonterminal xtc.lang.jeannie.Debugger.Dimensions$$Plus1.
06871: *
06872: * @param yyStart The index.
06873: * @return The result.
06874: * @throws IOException Signals an I/O error.
06875: */
06876: private Result pDimensions$$Plus1(final int yyStart)
06877: throws IOException {
06878: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
06879: if (null == yyColumn.chunk3)
06880: yyColumn.chunk3 = new Chunk3();
06881: if (null == yyColumn.chunk3.fDimensions$$Plus1)
06882: yyColumn.chunk3.fDimensions$$Plus1 = pDimensions$$Plus1$1(yyStart);
06883: return yyColumn.chunk3.fDimensions$$Plus1;
06884: }
06885:
06886: /** Actually parse xtc.lang.jeannie.Debugger.Dimensions$$Plus1. */
06887: private Result pDimensions$$Plus1$1(final int yyStart)
06888: throws IOException {
06889: Result yyResult;
06890: int yyBase;
06891: Pair<String> yyValue;
06892: ParseError yyError = ParseError.DUMMY;
06893:
06894: // Alternative 1.
06895:
06896: yyResult = pSymbol(yyStart);
06897: yyError = yyResult.select(yyError);
06898: if (yyResult.hasValue("[")) {
06899: final String v$el$1 = "[";
06900:
06901: yyBase = yyResult.index;
06902: yyResult = pSymbol(yyBase);
06903: yyError = yyResult.select(yyError);
06904: if (yyResult.hasValue("]")) {
06905:
06906: final int yyChoice1 = yyResult.index;
06907:
06908: // Nested alternative 1.
06909:
06910: yyResult = pDimensions$$Plus1(yyChoice1);
06911: yyError = yyResult.select(yyError);
06912: if (yyResult.hasValue()) {
06913: final Pair<String> v$2 = yyResult.semanticValue();
06914:
06915: yyValue = new Pair<String>(v$el$1, v$2);
06916:
06917: return yyResult.createValue(yyValue, yyError);
06918: }
06919:
06920: // Nested alternative 2.
06921:
06922: yyValue = new Pair<String>(v$el$1);
06923:
06924: return new SemanticValue(yyValue, yyChoice1, yyError);
06925: } else {
06926: yyError = yyError.select("\"]\" expected", yyBase);
06927: }
06928: }
06929:
06930: // Done.
06931: yyError = yyError.select("dimensions expected", yyStart);
06932: return yyError;
06933: }
06934:
06935: // =========================================================================
06936:
06937: /**
06938: * Parse nonterminal xtc.lang.JavaConstant.Literal.
06939: *
06940: * @param yyStart The index.
06941: * @return The result.
06942: * @throws IOException Signals an I/O error.
06943: */
06944: private Result pLiteral(final int yyStart) throws IOException {
06945: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
06946: if (null == yyColumn.chunk3)
06947: yyColumn.chunk3 = new Chunk3();
06948: if (null == yyColumn.chunk3.fLiteral)
06949: yyColumn.chunk3.fLiteral = pLiteral$1(yyStart);
06950: return yyColumn.chunk3.fLiteral;
06951: }
06952:
06953: /** Actually parse xtc.lang.JavaConstant.Literal. */
06954: private Result pLiteral$1(final int yyStart) throws IOException {
06955: Result yyResult;
06956: Node yyValue;
06957: ParseError yyError = ParseError.DUMMY;
06958:
06959: // Alternative 1.
06960:
06961: yyResult = pFloatingPointLiteral(yyStart);
06962: yyError = yyResult.select(yyError);
06963: if (yyResult.hasValue()) {
06964: yyValue = yyResult.semanticValue();
06965:
06966: yyResult = pSpacing(yyResult.index);
06967: yyError = yyResult.select(yyError);
06968: if (yyResult.hasValue()) {
06969:
06970: return yyResult.createValue(yyValue, yyError);
06971: }
06972: }
06973:
06974: // Alternative 2.
06975:
06976: yyResult = pIntegerLiteral(yyStart);
06977: yyError = yyResult.select(yyError);
06978: if (yyResult.hasValue()) {
06979: yyValue = yyResult.semanticValue();
06980:
06981: yyResult = pSpacing(yyResult.index);
06982: yyError = yyResult.select(yyError);
06983: if (yyResult.hasValue()) {
06984:
06985: return yyResult.createValue(yyValue, yyError);
06986: }
06987: }
06988:
06989: // Alternative 3.
06990:
06991: yyResult = pJavaConstant$CharacterLiteral(yyStart);
06992: yyError = yyResult.select(yyError);
06993: if (yyResult.hasValue()) {
06994: yyValue = yyResult.semanticValue();
06995:
06996: yyResult = pSpacing(yyResult.index);
06997: yyError = yyResult.select(yyError);
06998: if (yyResult.hasValue()) {
06999:
07000: return yyResult.createValue(yyValue, yyError);
07001: }
07002: }
07003:
07004: // Alternative 4.
07005:
07006: yyResult = pJavaConstant$StringLiteral(yyStart);
07007: yyError = yyResult.select(yyError);
07008: if (yyResult.hasValue()) {
07009: yyValue = yyResult.semanticValue();
07010:
07011: yyResult = pSpacing(yyResult.index);
07012: yyError = yyResult.select(yyError);
07013: if (yyResult.hasValue()) {
07014:
07015: return yyResult.createValue(yyValue, yyError);
07016: }
07017: }
07018:
07019: // Alternative 5.
07020:
07021: yyResult = pJavaIdentifier$Word(yyStart);
07022: yyError = yyResult.select(yyError);
07023: if (yyResult.hasValue("true")) {
07024: final String v$g$1 = "true";
07025:
07026: yyValue = GNode.create("BooleanLiteral", v$g$1);
07027: yyValue.setLocation(location(yyStart));
07028:
07029: return yyResult.createValue(yyValue, yyError);
07030: }
07031:
07032: // Alternative 6.
07033:
07034: yyResult = pJavaIdentifier$Word(yyStart);
07035: yyError = yyResult.select(yyError);
07036: if (yyResult.hasValue("false")) {
07037: final String v$g$2 = "false";
07038:
07039: yyValue = GNode.create("BooleanLiteral", v$g$2);
07040: yyValue.setLocation(location(yyStart));
07041:
07042: return yyResult.createValue(yyValue, yyError);
07043: }
07044:
07045: // Alternative 7.
07046:
07047: yyResult = pJavaIdentifier$Word(yyStart);
07048: yyError = yyResult.select(yyError);
07049: if (yyResult.hasValue("null")) {
07050:
07051: yyValue = GNode.create("NullLiteral", false);
07052: yyValue.setLocation(location(yyStart));
07053:
07054: return yyResult.createValue(yyValue, yyError);
07055: }
07056:
07057: // Done.
07058: yyError = yyError.select("literal expected", yyStart);
07059: return yyError;
07060: }
07061:
07062: // =========================================================================
07063:
07064: /**
07065: * Parse nonterminal xtc.lang.JavaConstant.IntegerLiteral.
07066: *
07067: * @param yyStart The index.
07068: * @return The result.
07069: * @throws IOException Signals an I/O error.
07070: */
07071: private Result pIntegerLiteral(final int yyStart)
07072: throws IOException {
07073: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
07074: if (null == yyColumn.chunk3)
07075: yyColumn.chunk3 = new Chunk3();
07076: if (null == yyColumn.chunk3.fIntegerLiteral)
07077: yyColumn.chunk3.fIntegerLiteral = pIntegerLiteral$1(yyStart);
07078: return yyColumn.chunk3.fIntegerLiteral;
07079: }
07080:
07081: /** Actually parse xtc.lang.JavaConstant.IntegerLiteral. */
07082: private Result pIntegerLiteral$1(final int yyStart)
07083: throws IOException {
07084: Result yyResult;
07085: Node yyValue;
07086: ParseError yyError = ParseError.DUMMY;
07087:
07088: // Alternative <Hex>.
07089:
07090: yyResult = pHexLiteral(yyStart);
07091: yyError = yyResult.select(yyError);
07092: if (yyResult.hasValue()) {
07093: final String v$g$1 = yyResult.semanticValue();
07094:
07095: yyValue = GNode.create("IntegerLiteral", v$g$1);
07096: yyValue.setLocation(location(yyStart));
07097:
07098: return yyResult.createValue(yyValue, yyError);
07099: }
07100:
07101: // Alternative <Octal>.
07102:
07103: yyResult = pOctalLiteral(yyStart);
07104: yyError = yyResult.select(yyError);
07105: if (yyResult.hasValue()) {
07106: final String v$g$2 = yyResult.semanticValue();
07107:
07108: yyValue = GNode.create("IntegerLiteral", v$g$2);
07109: yyValue.setLocation(location(yyStart));
07110:
07111: return yyResult.createValue(yyValue, yyError);
07112: }
07113:
07114: // Alternative <Decimal>.
07115:
07116: yyResult = pDecimalLiteral(yyStart);
07117: yyError = yyResult.select(yyError);
07118: if (yyResult.hasValue()) {
07119: final String v$g$3 = yyResult.semanticValue();
07120:
07121: yyValue = GNode.create("IntegerLiteral", v$g$3);
07122: yyValue.setLocation(location(yyStart));
07123:
07124: return yyResult.createValue(yyValue, yyError);
07125: }
07126:
07127: // Done.
07128: return yyError;
07129: }
07130:
07131: // =========================================================================
07132:
07133: /**
07134: * Parse nonterminal xtc.lang.JavaConstant.HexLiteral.
07135: *
07136: * @param yyStart The index.
07137: * @return The result.
07138: * @throws IOException Signals an I/O error.
07139: */
07140: private Result pHexLiteral(final int yyStart) throws IOException {
07141: int yyC;
07142: int yyIndex;
07143: Result yyResult;
07144: int yyOption1;
07145: String yyValue;
07146: ParseError yyError = ParseError.DUMMY;
07147:
07148: // Alternative 1.
07149:
07150: yyResult = pHexNumeral(yyStart);
07151: yyError = yyResult.select(yyError);
07152: if (yyResult.hasValue()) {
07153:
07154: yyOption1 = yyResult.index;
07155:
07156: yyC = character(yyOption1);
07157: if (-1 != yyC) {
07158: yyIndex = yyOption1 + 1;
07159:
07160: switch (yyC) {
07161: case 'L':
07162: case 'l': {
07163: yyOption1 = yyIndex;
07164: }
07165:
07166: default:
07167: /* No match. */
07168: }
07169: }
07170:
07171: yyValue = difference(yyStart, yyOption1);
07172:
07173: return new SemanticValue(yyValue, yyOption1, yyError);
07174: }
07175:
07176: // Done.
07177: yyError = yyError.select("hex literal expected", yyStart);
07178: return yyError;
07179: }
07180:
07181: // =========================================================================
07182:
07183: /**
07184: * Parse nonterminal xtc.lang.JavaConstant.OctalLiteral.
07185: *
07186: * @param yyStart The index.
07187: * @return The result.
07188: * @throws IOException Signals an I/O error.
07189: */
07190: private Result pOctalLiteral(final int yyStart) throws IOException {
07191: int yyC;
07192: int yyIndex;
07193: Result yyResult;
07194: int yyOption1;
07195: String yyValue;
07196: ParseError yyError = ParseError.DUMMY;
07197:
07198: // Alternative 1.
07199:
07200: yyResult = pOctalNumeral(yyStart);
07201: yyError = yyResult.select(yyError);
07202: if (yyResult.hasValue()) {
07203:
07204: yyOption1 = yyResult.index;
07205:
07206: yyC = character(yyOption1);
07207: if (-1 != yyC) {
07208: yyIndex = yyOption1 + 1;
07209:
07210: switch (yyC) {
07211: case 'L':
07212: case 'l': {
07213: yyOption1 = yyIndex;
07214: }
07215:
07216: default:
07217: /* No match. */
07218: }
07219: }
07220:
07221: yyValue = difference(yyStart, yyOption1);
07222:
07223: return new SemanticValue(yyValue, yyOption1, yyError);
07224: }
07225:
07226: // Done.
07227: yyError = yyError.select("octal literal expected", yyStart);
07228: return yyError;
07229: }
07230:
07231: // =========================================================================
07232:
07233: /**
07234: * Parse nonterminal xtc.lang.JavaConstant.DecimalLiteral.
07235: *
07236: * @param yyStart The index.
07237: * @return The result.
07238: * @throws IOException Signals an I/O error.
07239: */
07240: private Result pDecimalLiteral(final int yyStart)
07241: throws IOException {
07242: int yyC;
07243: int yyIndex;
07244: Result yyResult;
07245: int yyOption1;
07246: String yyValue;
07247: ParseError yyError = ParseError.DUMMY;
07248:
07249: // Alternative 1.
07250:
07251: yyResult = pDecimalNumeral(yyStart);
07252: yyError = yyResult.select(yyError);
07253: if (yyResult.hasValue()) {
07254:
07255: yyOption1 = yyResult.index;
07256:
07257: yyC = character(yyOption1);
07258: if (-1 != yyC) {
07259: yyIndex = yyOption1 + 1;
07260:
07261: switch (yyC) {
07262: case 'L':
07263: case 'l': {
07264: yyOption1 = yyIndex;
07265: }
07266:
07267: default:
07268: /* No match. */
07269: }
07270: }
07271:
07272: yyValue = difference(yyStart, yyOption1);
07273:
07274: return new SemanticValue(yyValue, yyOption1, yyError);
07275: }
07276:
07277: // Done.
07278: yyError = yyError.select("decimal literal expected", yyStart);
07279: return yyError;
07280: }
07281:
07282: // =========================================================================
07283:
07284: /**
07285: * Parse nonterminal xtc.lang.JavaConstant.DecimalNumeral.
07286: *
07287: * @param yyStart The index.
07288: * @return The result.
07289: * @throws IOException Signals an I/O error.
07290: */
07291: private Result pDecimalNumeral(final int yyStart)
07292: throws IOException {
07293: int yyC;
07294: int yyIndex;
07295: int yyRepetition1;
07296: Void yyValue;
07297: ParseError yyError = ParseError.DUMMY;
07298:
07299: // Alternative 1.
07300:
07301: yyC = character(yyStart);
07302: if (-1 != yyC) {
07303: yyIndex = yyStart + 1;
07304:
07305: switch (yyC) {
07306: case '0': {
07307: yyValue = null;
07308:
07309: return new SemanticValue(yyValue, yyIndex, yyError);
07310: }
07311:
07312: case '1':
07313: case '2':
07314: case '3':
07315: case '4':
07316: case '5':
07317: case '6':
07318: case '7':
07319: case '8':
07320: case '9': {
07321: yyRepetition1 = yyIndex;
07322: while (true) {
07323:
07324: yyC = character(yyRepetition1);
07325: if (-1 != yyC) {
07326: yyIndex = yyRepetition1 + 1;
07327:
07328: switch (yyC) {
07329: case '0':
07330: case '1':
07331: case '2':
07332: case '3':
07333: case '4':
07334: case '5':
07335: case '6':
07336: case '7':
07337: case '8':
07338: case '9': {
07339: yyRepetition1 = yyIndex;
07340: continue;
07341: }
07342:
07343: default:
07344: /* No match. */
07345: }
07346: }
07347: break;
07348: }
07349:
07350: yyValue = null;
07351:
07352: return new SemanticValue(yyValue, yyRepetition1,
07353: yyError);
07354: }
07355:
07356: default:
07357: /* No match. */
07358: }
07359: }
07360:
07361: // Done.
07362: yyError = yyError.select("decimal numeral expected", yyStart);
07363: return yyError;
07364: }
07365:
07366: // =========================================================================
07367:
07368: /**
07369: * Parse nonterminal xtc.lang.JavaConstant.HexNumeral.
07370: *
07371: * @param yyStart The index.
07372: * @return The result.
07373: * @throws IOException Signals an I/O error.
07374: */
07375: private Result pHexNumeral(final int yyStart) throws IOException {
07376: int yyC;
07377: int yyIndex;
07378: int yyRepetition1;
07379: boolean yyRepeated1;
07380: Void yyValue;
07381: ParseError yyError = ParseError.DUMMY;
07382:
07383: // Alternative 1.
07384:
07385: yyC = character(yyStart);
07386: if ('0' == yyC) {
07387: yyIndex = yyStart + 1;
07388:
07389: yyC = character(yyIndex);
07390: if (-1 != yyC) {
07391: yyIndex = yyIndex + 1;
07392:
07393: switch (yyC) {
07394: case 'X':
07395: case 'x': {
07396: yyRepetition1 = yyIndex;
07397: yyRepeated1 = false;
07398: while (true) {
07399:
07400: yyC = character(yyRepetition1);
07401: if (-1 != yyC) {
07402: yyIndex = yyRepetition1 + 1;
07403:
07404: switch (yyC) {
07405: case '0':
07406: case '1':
07407: case '2':
07408: case '3':
07409: case '4':
07410: case '5':
07411: case '6':
07412: case '7':
07413: case '8':
07414: case '9':
07415: case 'A':
07416: case 'B':
07417: case 'C':
07418: case 'D':
07419: case 'E':
07420: case 'F':
07421: case 'a':
07422: case 'b':
07423: case 'c':
07424: case 'd':
07425: case 'e':
07426: case 'f': {
07427: yyRepetition1 = yyIndex;
07428: yyRepeated1 = true;
07429: continue;
07430: }
07431:
07432: default:
07433: /* No match. */
07434: }
07435: }
07436: break;
07437: }
07438:
07439: if (yyRepeated1) {
07440:
07441: yyValue = null;
07442:
07443: return new SemanticValue(yyValue,
07444: yyRepetition1, yyError);
07445: }
07446: }
07447: break;
07448:
07449: default:
07450: /* No match. */
07451: }
07452: }
07453: }
07454:
07455: // Done.
07456: yyError = yyError.select("hex numeral expected", yyStart);
07457: return yyError;
07458: }
07459:
07460: // =========================================================================
07461:
07462: /**
07463: * Parse nonterminal xtc.lang.JavaConstant.OctalNumeral.
07464: *
07465: * @param yyStart The index.
07466: * @return The result.
07467: * @throws IOException Signals an I/O error.
07468: */
07469: private Result pOctalNumeral(final int yyStart) throws IOException {
07470: int yyC;
07471: int yyIndex;
07472: int yyRepetition1;
07473: boolean yyRepeated1;
07474: Void yyValue;
07475: ParseError yyError = ParseError.DUMMY;
07476:
07477: // Alternative 1.
07478:
07479: yyC = character(yyStart);
07480: if ('0' == yyC) {
07481: yyIndex = yyStart + 1;
07482:
07483: yyRepetition1 = yyIndex;
07484: yyRepeated1 = false;
07485: while (true) {
07486:
07487: yyC = character(yyRepetition1);
07488: if (-1 != yyC) {
07489: yyIndex = yyRepetition1 + 1;
07490:
07491: switch (yyC) {
07492: case '0':
07493: case '1':
07494: case '2':
07495: case '3':
07496: case '4':
07497: case '5':
07498: case '6':
07499: case '7': {
07500: yyRepetition1 = yyIndex;
07501: yyRepeated1 = true;
07502: continue;
07503: }
07504:
07505: default:
07506: /* No match. */
07507: }
07508: }
07509: break;
07510: }
07511:
07512: if (yyRepeated1) {
07513:
07514: yyValue = null;
07515:
07516: return new SemanticValue(yyValue, yyRepetition1,
07517: yyError);
07518: }
07519: }
07520:
07521: // Done.
07522: yyError = yyError.select("octal numeral expected", yyStart);
07523: return yyError;
07524: }
07525:
07526: // =========================================================================
07527:
07528: /**
07529: * Parse nonterminal xtc.lang.JavaConstant.FloatingPointLiteral.
07530: *
07531: * @param yyStart The index.
07532: * @return The result.
07533: * @throws IOException Signals an I/O error.
07534: */
07535: private Result pFloatingPointLiteral(final int yyStart)
07536: throws IOException {
07537: Result yyResult;
07538: Node yyValue;
07539: ParseError yyError = ParseError.DUMMY;
07540:
07541: // Alternative 1.
07542:
07543: yyResult = pFloatingPointString(yyStart);
07544: yyError = yyResult.select(yyError);
07545: if (yyResult.hasValue()) {
07546: final String v$g$1 = yyResult.semanticValue();
07547:
07548: yyValue = GNode.create("FloatingPointLiteral", v$g$1);
07549: yyValue.setLocation(location(yyStart));
07550:
07551: return yyResult.createValue(yyValue, yyError);
07552: }
07553:
07554: // Done.
07555: return yyError;
07556: }
07557:
07558: // =========================================================================
07559:
07560: /**
07561: * Parse nonterminal xtc.lang.JavaConstant.FloatingPointString.
07562: *
07563: * @param yyStart The index.
07564: * @return The result.
07565: * @throws IOException Signals an I/O error.
07566: */
07567: private Result pFloatingPointString(final int yyStart)
07568: throws IOException {
07569: int yyC;
07570: int yyIndex;
07571: Result yyResult;
07572: int yyRepetition1;
07573: boolean yyRepeated1;
07574: int yyOption1;
07575: String yyValue;
07576: ParseError yyError = ParseError.DUMMY;
07577:
07578: // Alternative 1.
07579:
07580: yyRepetition1 = yyStart;
07581: yyRepeated1 = false;
07582: while (true) {
07583:
07584: yyC = character(yyRepetition1);
07585: if (-1 != yyC) {
07586: yyIndex = yyRepetition1 + 1;
07587:
07588: switch (yyC) {
07589: case '0':
07590: case '1':
07591: case '2':
07592: case '3':
07593: case '4':
07594: case '5':
07595: case '6':
07596: case '7':
07597: case '8':
07598: case '9': {
07599: yyRepetition1 = yyIndex;
07600: yyRepeated1 = true;
07601: continue;
07602: }
07603:
07604: default:
07605: /* No match. */
07606: }
07607: }
07608: break;
07609: }
07610:
07611: if (yyRepeated1) {
07612:
07613: yyC = character(yyRepetition1);
07614: if ('.' == yyC) {
07615: yyIndex = yyRepetition1 + 1;
07616:
07617: yyRepetition1 = yyIndex;
07618: while (true) {
07619:
07620: yyC = character(yyRepetition1);
07621: if (-1 != yyC) {
07622: yyIndex = yyRepetition1 + 1;
07623:
07624: switch (yyC) {
07625: case '0':
07626: case '1':
07627: case '2':
07628: case '3':
07629: case '4':
07630: case '5':
07631: case '6':
07632: case '7':
07633: case '8':
07634: case '9': {
07635: yyRepetition1 = yyIndex;
07636: continue;
07637: }
07638:
07639: default:
07640: /* No match. */
07641: }
07642: }
07643: break;
07644: }
07645:
07646: yyOption1 = yyRepetition1;
07647:
07648: yyResult = pJavaConstant$Exponent(yyOption1);
07649: yyError = yyResult.select(yyError);
07650: if (yyResult.hasValue()) {
07651:
07652: yyOption1 = yyResult.index;
07653: }
07654:
07655: yyC = character(yyOption1);
07656: if (-1 != yyC) {
07657: yyIndex = yyOption1 + 1;
07658:
07659: switch (yyC) {
07660: case 'D':
07661: case 'F':
07662: case 'd':
07663: case 'f': {
07664: yyOption1 = yyIndex;
07665: }
07666:
07667: default:
07668: /* No match. */
07669: }
07670: }
07671:
07672: yyValue = difference(yyStart, yyOption1);
07673:
07674: return new SemanticValue(yyValue, yyOption1, yyError);
07675: }
07676: }
07677:
07678: // Alternative 2.
07679:
07680: yyC = character(yyStart);
07681: if ('.' == yyC) {
07682: yyIndex = yyStart + 1;
07683:
07684: yyRepetition1 = yyIndex;
07685: yyRepeated1 = false;
07686: while (true) {
07687:
07688: yyC = character(yyRepetition1);
07689: if (-1 != yyC) {
07690: yyIndex = yyRepetition1 + 1;
07691:
07692: switch (yyC) {
07693: case '0':
07694: case '1':
07695: case '2':
07696: case '3':
07697: case '4':
07698: case '5':
07699: case '6':
07700: case '7':
07701: case '8':
07702: case '9': {
07703: yyRepetition1 = yyIndex;
07704: yyRepeated1 = true;
07705: continue;
07706: }
07707:
07708: default:
07709: /* No match. */
07710: }
07711: }
07712: break;
07713: }
07714:
07715: if (yyRepeated1) {
07716:
07717: yyOption1 = yyRepetition1;
07718:
07719: yyResult = pJavaConstant$Exponent(yyOption1);
07720: yyError = yyResult.select(yyError);
07721: if (yyResult.hasValue()) {
07722:
07723: yyOption1 = yyResult.index;
07724: }
07725:
07726: yyC = character(yyOption1);
07727: if (-1 != yyC) {
07728: yyIndex = yyOption1 + 1;
07729:
07730: switch (yyC) {
07731: case 'D':
07732: case 'F':
07733: case 'd':
07734: case 'f': {
07735: yyOption1 = yyIndex;
07736: }
07737:
07738: default:
07739: /* No match. */
07740: }
07741: }
07742:
07743: yyValue = difference(yyStart, yyOption1);
07744:
07745: return new SemanticValue(yyValue, yyOption1, yyError);
07746: }
07747: }
07748:
07749: // Alternative 3.
07750:
07751: yyRepetition1 = yyStart;
07752: yyRepeated1 = false;
07753: while (true) {
07754:
07755: yyC = character(yyRepetition1);
07756: if (-1 != yyC) {
07757: yyIndex = yyRepetition1 + 1;
07758:
07759: switch (yyC) {
07760: case '0':
07761: case '1':
07762: case '2':
07763: case '3':
07764: case '4':
07765: case '5':
07766: case '6':
07767: case '7':
07768: case '8':
07769: case '9': {
07770: yyRepetition1 = yyIndex;
07771: yyRepeated1 = true;
07772: continue;
07773: }
07774:
07775: default:
07776: /* No match. */
07777: }
07778: }
07779: break;
07780: }
07781:
07782: if (yyRepeated1) {
07783:
07784: final int yyChoice1 = yyRepetition1;
07785:
07786: // Nested alternative 1.
07787:
07788: yyResult = pJavaConstant$Exponent(yyChoice1);
07789: yyError = yyResult.select(yyError);
07790: if (yyResult.hasValue()) {
07791:
07792: yyOption1 = yyResult.index;
07793:
07794: yyC = character(yyOption1);
07795: if (-1 != yyC) {
07796: yyIndex = yyOption1 + 1;
07797:
07798: switch (yyC) {
07799: case 'D':
07800: case 'F':
07801: case 'd':
07802: case 'f': {
07803: yyOption1 = yyIndex;
07804: }
07805:
07806: default:
07807: /* No match. */
07808: }
07809: }
07810:
07811: yyValue = difference(yyStart, yyOption1);
07812:
07813: return new SemanticValue(yyValue, yyOption1, yyError);
07814: }
07815:
07816: // Nested alternative 2.
07817:
07818: yyOption1 = yyChoice1;
07819:
07820: yyResult = pJavaConstant$Exponent(yyOption1);
07821: yyError = yyResult.select(yyError);
07822: if (yyResult.hasValue()) {
07823:
07824: yyOption1 = yyResult.index;
07825: }
07826:
07827: yyC = character(yyOption1);
07828: if (-1 != yyC) {
07829: yyIndex = yyOption1 + 1;
07830:
07831: switch (yyC) {
07832: case 'D':
07833: case 'F':
07834: case 'd':
07835: case 'f': {
07836: yyValue = difference(yyStart, yyIndex);
07837:
07838: return new SemanticValue(yyValue, yyIndex, yyError);
07839: }
07840:
07841: default:
07842: /* No match. */
07843: }
07844: }
07845: }
07846:
07847: // Done.
07848: yyError = yyError.select("floating point string expected",
07849: yyStart);
07850: return yyError;
07851: }
07852:
07853: // =========================================================================
07854:
07855: /**
07856: * Parse nonterminal xtc.lang.JavaConstant.Exponent.
07857: *
07858: * @param yyStart The index.
07859: * @return The result.
07860: * @throws IOException Signals an I/O error.
07861: */
07862: private Result pJavaConstant$Exponent(final int yyStart)
07863: throws IOException {
07864:
07865: int yyC;
07866: int yyIndex;
07867: int yyRepetition1;
07868: boolean yyRepeated1;
07869: int yyOption1;
07870: Void yyValue;
07871: ParseError yyError = ParseError.DUMMY;
07872:
07873: // Alternative 1.
07874:
07875: yyC = character(yyStart);
07876: if (-1 != yyC) {
07877: yyIndex = yyStart + 1;
07878:
07879: switch (yyC) {
07880: case 'E':
07881: case 'e': {
07882: yyOption1 = yyIndex;
07883:
07884: yyC = character(yyOption1);
07885: if (-1 != yyC) {
07886: yyIndex = yyOption1 + 1;
07887:
07888: switch (yyC) {
07889: case '+':
07890: case '-': {
07891: yyOption1 = yyIndex;
07892: }
07893:
07894: default:
07895: /* No match. */
07896: }
07897: }
07898:
07899: yyRepetition1 = yyOption1;
07900: yyRepeated1 = false;
07901: while (true) {
07902:
07903: yyC = character(yyRepetition1);
07904: if (-1 != yyC) {
07905: yyIndex = yyRepetition1 + 1;
07906:
07907: switch (yyC) {
07908: case '0':
07909: case '1':
07910: case '2':
07911: case '3':
07912: case '4':
07913: case '5':
07914: case '6':
07915: case '7':
07916: case '8':
07917: case '9': {
07918: yyRepetition1 = yyIndex;
07919: yyRepeated1 = true;
07920: continue;
07921: }
07922:
07923: default:
07924: /* No match. */
07925: }
07926: }
07927: break;
07928: }
07929:
07930: if (yyRepeated1) {
07931:
07932: yyValue = null;
07933:
07934: return new SemanticValue(yyValue, yyRepetition1,
07935: yyError);
07936: }
07937: }
07938: break;
07939:
07940: default:
07941: /* No match. */
07942: }
07943: }
07944:
07945: // Done.
07946: yyError = yyError.select("exponent expected", yyStart);
07947: return yyError;
07948: }
07949:
07950: // =========================================================================
07951:
07952: /**
07953: * Parse nonterminal xtc.lang.JavaConstant.CharacterLiteral.
07954: *
07955: * @param yyStart The index.
07956: * @return The result.
07957: * @throws IOException Signals an I/O error.
07958: */
07959: private Result pJavaConstant$CharacterLiteral(final int yyStart)
07960: throws IOException {
07961:
07962: Result yyResult;
07963: Node yyValue;
07964: ParseError yyError = ParseError.DUMMY;
07965:
07966: // Alternative 1.
07967:
07968: yyResult = pJavaConstant$CharacterConstant(yyStart);
07969: yyError = yyResult.select(yyError);
07970: if (yyResult.hasValue()) {
07971: final String v$g$1 = yyResult.semanticValue();
07972:
07973: yyValue = GNode.create("CharacterLiteral", v$g$1);
07974: yyValue.setLocation(location(yyStart));
07975:
07976: return yyResult.createValue(yyValue, yyError);
07977: }
07978:
07979: // Done.
07980: return yyError;
07981: }
07982:
07983: // =========================================================================
07984:
07985: /**
07986: * Parse nonterminal xtc.lang.JavaConstant.StringLiteral.
07987: *
07988: * @param yyStart The index.
07989: * @return The result.
07990: * @throws IOException Signals an I/O error.
07991: */
07992: private Result pJavaConstant$StringLiteral(final int yyStart)
07993: throws IOException {
07994:
07995: Result yyResult;
07996: Node yyValue;
07997: ParseError yyError = ParseError.DUMMY;
07998:
07999: // Alternative 1.
08000:
08001: yyResult = pJavaConstant$StringConstant(yyStart);
08002: yyError = yyResult.select(yyError);
08003: if (yyResult.hasValue()) {
08004: final String v$g$1 = yyResult.semanticValue();
08005:
08006: yyValue = GNode.create("StringLiteral", v$g$1);
08007: yyValue.setLocation(location(yyStart));
08008:
08009: return yyResult.createValue(yyValue, yyError);
08010: }
08011:
08012: // Done.
08013: return yyError;
08014: }
08015:
08016: // =========================================================================
08017:
08018: /**
08019: * Parse nonterminal xtc.lang.JavaConstant.CharacterConstant.
08020: *
08021: * @param yyStart The index.
08022: * @return The result.
08023: * @throws IOException Signals an I/O error.
08024: */
08025: private Result pJavaConstant$CharacterConstant(final int yyStart)
08026: throws IOException {
08027:
08028: int yyC;
08029: int yyIndex;
08030: Result yyResult;
08031: String yyValue;
08032: ParseError yyError = ParseError.DUMMY;
08033:
08034: // Alternative 1.
08035:
08036: yyC = character(yyStart);
08037: if ('\'' == yyC) {
08038: yyIndex = yyStart + 1;
08039:
08040: yyResult = pJavaConstant$CharacterConstant$$Choice1(yyIndex);
08041: yyError = yyResult.select(yyError);
08042: if (yyResult.hasValue()) {
08043:
08044: yyC = character(yyResult.index);
08045: if ('\'' == yyC) {
08046: yyIndex = yyResult.index + 1;
08047:
08048: yyValue = difference(yyStart, yyIndex);
08049:
08050: return new SemanticValue(yyValue, yyIndex, yyError);
08051: }
08052: }
08053: }
08054:
08055: // Done.
08056: yyError = yyError
08057: .select("character constant expected", yyStart);
08058: return yyError;
08059: }
08060:
08061: // =========================================================================
08062:
08063: /**
08064: * Parse synthetic nonterminal JavaConstant.CharacterConstant$$Choice1.
08065: *
08066: * @param yyStart The index.
08067: * @return The result.
08068: * @throws IOException Signals an I/O error.
08069: */
08070: private Result pJavaConstant$CharacterConstant$$Choice1(
08071: final int yyStart) throws IOException {
08072:
08073: int yyC;
08074: int yyIndex;
08075: Void yyValue;
08076: ParseError yyError = ParseError.DUMMY;
08077:
08078: // Alternative 1.
08079:
08080: yyC = character(yyStart);
08081: if (-1 != yyC) {
08082: yyIndex = yyStart + 1;
08083:
08084: switch (yyC) {
08085: case '\\': {
08086: final int yyChoice1 = yyIndex;
08087:
08088: // Nested alternative 1.
08089:
08090: yyC = character(yyChoice1);
08091: if (-1 != yyC) {
08092: yyIndex = yyChoice1 + 1;
08093:
08094: switch (yyC) {
08095: case '\"':
08096: case '\'':
08097: case '\\':
08098: case 'b':
08099: case 'f':
08100: case 'n':
08101: case 'r':
08102: case 't': {
08103: yyValue = null;
08104:
08105: return new SemanticValue(yyValue, yyIndex,
08106: yyError);
08107: }
08108:
08109: case 'u': {
08110: yyC = character(yyIndex);
08111: if (-1 != yyC) {
08112: yyIndex = yyIndex + 1;
08113:
08114: switch (yyC) {
08115: case '0':
08116: case '1':
08117: case '2':
08118: case '3':
08119: case '4':
08120: case '5':
08121: case '6':
08122: case '7':
08123: case '8':
08124: case '9':
08125: case 'A':
08126: case 'B':
08127: case 'C':
08128: case 'D':
08129: case 'E':
08130: case 'F':
08131: case 'a':
08132: case 'b':
08133: case 'c':
08134: case 'd':
08135: case 'e':
08136: case 'f': {
08137: yyC = character(yyIndex);
08138: if (-1 != yyC) {
08139: yyIndex = yyIndex + 1;
08140:
08141: switch (yyC) {
08142: case '0':
08143: case '1':
08144: case '2':
08145: case '3':
08146: case '4':
08147: case '5':
08148: case '6':
08149: case '7':
08150: case '8':
08151: case '9':
08152: case 'A':
08153: case 'B':
08154: case 'C':
08155: case 'D':
08156: case 'E':
08157: case 'F':
08158: case 'a':
08159: case 'b':
08160: case 'c':
08161: case 'd':
08162: case 'e':
08163: case 'f': {
08164: yyC = character(yyIndex);
08165: if (-1 != yyC) {
08166: yyIndex = yyIndex + 1;
08167:
08168: switch (yyC) {
08169: case '0':
08170: case '1':
08171: case '2':
08172: case '3':
08173: case '4':
08174: case '5':
08175: case '6':
08176: case '7':
08177: case '8':
08178: case '9':
08179: case 'A':
08180: case 'B':
08181: case 'C':
08182: case 'D':
08183: case 'E':
08184: case 'F':
08185: case 'a':
08186: case 'b':
08187: case 'c':
08188: case 'd':
08189: case 'e':
08190: case 'f': {
08191: yyC = character(yyIndex);
08192: if (-1 != yyC) {
08193: yyIndex = yyIndex + 1;
08194:
08195: switch (yyC) {
08196: case '0':
08197: case '1':
08198: case '2':
08199: case '3':
08200: case '4':
08201: case '5':
08202: case '6':
08203: case '7':
08204: case '8':
08205: case '9':
08206: case 'A':
08207: case 'B':
08208: case 'C':
08209: case 'D':
08210: case 'E':
08211: case 'F':
08212: case 'a':
08213: case 'b':
08214: case 'c':
08215: case 'd':
08216: case 'e':
08217: case 'f': {
08218: yyValue = null;
08219:
08220: return new SemanticValue(
08221: yyValue,
08222: yyIndex,
08223: yyError);
08224: }
08225:
08226: default:
08227: /* No match. */
08228: }
08229: }
08230: }
08231: break;
08232:
08233: default:
08234: /* No match. */
08235: }
08236: }
08237: }
08238: break;
08239:
08240: default:
08241: /* No match. */
08242: }
08243: }
08244: }
08245: break;
08246:
08247: default:
08248: /* No match. */
08249: }
08250: }
08251: }
08252: break;
08253:
08254: default:
08255: /* No match. */
08256: }
08257: }
08258:
08259: // Nested alternative 2.
08260: { // Start scope for nested choice.
08261:
08262: final int yyChoice2 = yyChoice1;
08263:
08264: // Nested alternative 1.
08265:
08266: yyC = character(yyChoice2);
08267: if (-1 != yyC) {
08268: yyIndex = yyChoice2 + 1;
08269:
08270: switch (yyC) {
08271: case '0':
08272: case '1':
08273: case '2':
08274: case '3': {
08275: yyC = character(yyIndex);
08276: if (-1 != yyC) {
08277: yyIndex = yyIndex + 1;
08278:
08279: switch (yyC) {
08280: case '0':
08281: case '1':
08282: case '2':
08283: case '3':
08284: case '4':
08285: case '5':
08286: case '6':
08287: case '7': {
08288: yyC = character(yyIndex);
08289: if (-1 != yyC) {
08290: yyIndex = yyIndex + 1;
08291:
08292: switch (yyC) {
08293: case '0':
08294: case '1':
08295: case '2':
08296: case '3':
08297: case '4':
08298: case '5':
08299: case '6':
08300: case '7': {
08301: yyValue = null;
08302:
08303: return new SemanticValue(
08304: yyValue, yyIndex,
08305: yyError);
08306: }
08307:
08308: default:
08309: /* No match. */
08310: }
08311: }
08312: }
08313: break;
08314:
08315: default:
08316: /* No match. */
08317: }
08318: }
08319: }
08320: break;
08321:
08322: default:
08323: /* No match. */
08324: }
08325: }
08326:
08327: // Nested alternative 2.
08328:
08329: yyC = character(yyChoice2);
08330: if (-1 != yyC) {
08331: yyIndex = yyChoice2 + 1;
08332:
08333: switch (yyC) {
08334: case '0':
08335: case '1':
08336: case '2':
08337: case '3':
08338: case '4':
08339: case '5':
08340: case '6':
08341: case '7': {
08342: final int yyChoice3 = yyIndex;
08343:
08344: // Nested alternative 1.
08345:
08346: yyC = character(yyChoice3);
08347: if (-1 != yyC) {
08348: yyIndex = yyChoice3 + 1;
08349:
08350: switch (yyC) {
08351: case '0':
08352: case '1':
08353: case '2':
08354: case '3':
08355: case '4':
08356: case '5':
08357: case '6':
08358: case '7': {
08359: yyValue = null;
08360:
08361: return new SemanticValue(yyValue,
08362: yyIndex, yyError);
08363: }
08364:
08365: default:
08366: /* No match. */
08367: }
08368: }
08369:
08370: // Nested alternative 2.
08371:
08372: yyValue = null;
08373:
08374: return new SemanticValue(yyValue,
08375: yyChoice3, yyError);
08376: }
08377:
08378: default:
08379: /* No match. */
08380: }
08381: }
08382: } // End scope for nested choice.
08383: }
08384: break;
08385:
08386: default:
08387: /* No match. */
08388: }
08389: }
08390:
08391: // Alternative 2.
08392:
08393: yyC = character(yyStart);
08394: if (-1 != yyC) {
08395: yyIndex = yyStart + 1;
08396:
08397: switch (yyC) {
08398: case '\'':
08399: case '\\':
08400: /* No match. */
08401: break;
08402:
08403: default: {
08404: yyValue = null;
08405:
08406: return new SemanticValue(yyValue, yyIndex, yyError);
08407: }
08408: }
08409: }
08410:
08411: // Done.
08412: yyError = yyError
08413: .select("character constant expected", yyStart);
08414: return yyError;
08415: }
08416:
08417: // =========================================================================
08418:
08419: /**
08420: * Parse nonterminal xtc.lang.JavaConstant.StringConstant.
08421: *
08422: * @param yyStart The index.
08423: * @return The result.
08424: * @throws IOException Signals an I/O error.
08425: */
08426: private Result pJavaConstant$StringConstant(final int yyStart)
08427: throws IOException {
08428:
08429: int yyC;
08430: int yyIndex;
08431: int yyRepetition1;
08432: String yyValue;
08433: ParseError yyError = ParseError.DUMMY;
08434:
08435: // Alternative 1.
08436:
08437: yyC = character(yyStart);
08438: if ('\"' == yyC) {
08439: yyIndex = yyStart + 1;
08440:
08441: yyRepetition1 = yyIndex;
08442: while (true) {
08443:
08444: final int yyChoice1 = yyRepetition1;
08445:
08446: // Nested alternative 1.
08447:
08448: yyC = character(yyChoice1);
08449: if (-1 != yyC) {
08450: yyIndex = yyChoice1 + 1;
08451:
08452: switch (yyC) {
08453: case '\\': {
08454: final int yyChoice2 = yyIndex;
08455:
08456: // Nested alternative 1.
08457:
08458: yyC = character(yyChoice2);
08459: if (-1 != yyC) {
08460: yyIndex = yyChoice2 + 1;
08461:
08462: switch (yyC) {
08463: case '\"':
08464: case '\'':
08465: case '\\':
08466: case 'b':
08467: case 'f':
08468: case 'n':
08469: case 'r':
08470: case 't': {
08471: yyRepetition1 = yyIndex;
08472: continue;
08473: }
08474:
08475: case 'u': {
08476: yyC = character(yyIndex);
08477: if (-1 != yyC) {
08478: yyIndex = yyIndex + 1;
08479:
08480: switch (yyC) {
08481: case '0':
08482: case '1':
08483: case '2':
08484: case '3':
08485: case '4':
08486: case '5':
08487: case '6':
08488: case '7':
08489: case '8':
08490: case '9':
08491: case 'A':
08492: case 'B':
08493: case 'C':
08494: case 'D':
08495: case 'E':
08496: case 'F':
08497: case 'a':
08498: case 'b':
08499: case 'c':
08500: case 'd':
08501: case 'e':
08502: case 'f': {
08503: yyC = character(yyIndex);
08504: if (-1 != yyC) {
08505: yyIndex = yyIndex + 1;
08506:
08507: switch (yyC) {
08508: case '0':
08509: case '1':
08510: case '2':
08511: case '3':
08512: case '4':
08513: case '5':
08514: case '6':
08515: case '7':
08516: case '8':
08517: case '9':
08518: case 'A':
08519: case 'B':
08520: case 'C':
08521: case 'D':
08522: case 'E':
08523: case 'F':
08524: case 'a':
08525: case 'b':
08526: case 'c':
08527: case 'd':
08528: case 'e':
08529: case 'f': {
08530: yyC = character(yyIndex);
08531: if (-1 != yyC) {
08532: yyIndex = yyIndex + 1;
08533:
08534: switch (yyC) {
08535: case '0':
08536: case '1':
08537: case '2':
08538: case '3':
08539: case '4':
08540: case '5':
08541: case '6':
08542: case '7':
08543: case '8':
08544: case '9':
08545: case 'A':
08546: case 'B':
08547: case 'C':
08548: case 'D':
08549: case 'E':
08550: case 'F':
08551: case 'a':
08552: case 'b':
08553: case 'c':
08554: case 'd':
08555: case 'e':
08556: case 'f': {
08557: yyC = character(yyIndex);
08558: if (-1 != yyC) {
08559: yyIndex = yyIndex + 1;
08560:
08561: switch (yyC) {
08562: case '0':
08563: case '1':
08564: case '2':
08565: case '3':
08566: case '4':
08567: case '5':
08568: case '6':
08569: case '7':
08570: case '8':
08571: case '9':
08572: case 'A':
08573: case 'B':
08574: case 'C':
08575: case 'D':
08576: case 'E':
08577: case 'F':
08578: case 'a':
08579: case 'b':
08580: case 'c':
08581: case 'd':
08582: case 'e':
08583: case 'f': {
08584: yyRepetition1 = yyIndex;
08585: continue;
08586: }
08587:
08588: default:
08589: /* No match. */
08590: }
08591: }
08592: }
08593: break;
08594:
08595: default:
08596: /* No match. */
08597: }
08598: }
08599: }
08600: break;
08601:
08602: default:
08603: /* No match. */
08604: }
08605: }
08606: }
08607: break;
08608:
08609: default:
08610: /* No match. */
08611: }
08612: }
08613: }
08614: break;
08615:
08616: default:
08617: /* No match. */
08618: }
08619: }
08620:
08621: // Nested alternative 2.
08622: { // Start scope for nested choice.
08623:
08624: final int yyChoice3 = yyChoice2;
08625:
08626: // Nested alternative 1.
08627:
08628: yyC = character(yyChoice3);
08629: if (-1 != yyC) {
08630: yyIndex = yyChoice3 + 1;
08631:
08632: switch (yyC) {
08633: case '0':
08634: case '1':
08635: case '2':
08636: case '3': {
08637: yyC = character(yyIndex);
08638: if (-1 != yyC) {
08639: yyIndex = yyIndex + 1;
08640:
08641: switch (yyC) {
08642: case '0':
08643: case '1':
08644: case '2':
08645: case '3':
08646: case '4':
08647: case '5':
08648: case '6':
08649: case '7': {
08650: yyC = character(yyIndex);
08651: if (-1 != yyC) {
08652: yyIndex = yyIndex + 1;
08653:
08654: switch (yyC) {
08655: case '0':
08656: case '1':
08657: case '2':
08658: case '3':
08659: case '4':
08660: case '5':
08661: case '6':
08662: case '7': {
08663: yyRepetition1 = yyIndex;
08664: continue;
08665: }
08666:
08667: default:
08668: /* No match. */
08669: }
08670: }
08671: }
08672: break;
08673:
08674: default:
08675: /* No match. */
08676: }
08677: }
08678: }
08679: break;
08680:
08681: default:
08682: /* No match. */
08683: }
08684: }
08685:
08686: // Nested alternative 2.
08687:
08688: yyC = character(yyChoice3);
08689: if (-1 != yyC) {
08690: yyIndex = yyChoice3 + 1;
08691:
08692: switch (yyC) {
08693: case '0':
08694: case '1':
08695: case '2':
08696: case '3':
08697: case '4':
08698: case '5':
08699: case '6':
08700: case '7': {
08701: final int yyChoice4 = yyIndex;
08702:
08703: // Nested alternative 1.
08704:
08705: yyC = character(yyChoice4);
08706: if (-1 != yyC) {
08707: yyIndex = yyChoice4 + 1;
08708:
08709: switch (yyC) {
08710: case '0':
08711: case '1':
08712: case '2':
08713: case '3':
08714: case '4':
08715: case '5':
08716: case '6':
08717: case '7': {
08718: yyRepetition1 = yyIndex;
08719: continue;
08720: }
08721:
08722: default:
08723: /* No match. */
08724: }
08725: }
08726:
08727: // Nested alternative 2.
08728:
08729: yyRepetition1 = yyChoice4;
08730: continue;
08731: }
08732:
08733: default:
08734: /* No match. */
08735: }
08736: }
08737: } // End scope for nested choice.
08738: }
08739: break;
08740:
08741: default:
08742: /* No match. */
08743: }
08744: }
08745:
08746: // Nested alternative 2.
08747:
08748: yyC = character(yyChoice1);
08749: if (-1 != yyC) {
08750: yyIndex = yyChoice1 + 1;
08751:
08752: switch (yyC) {
08753: case '\"':
08754: case '\\':
08755: /* No match. */
08756: break;
08757:
08758: default: {
08759: yyRepetition1 = yyIndex;
08760: continue;
08761: }
08762: }
08763: }
08764: break;
08765: }
08766:
08767: yyC = character(yyRepetition1);
08768: if ('\"' == yyC) {
08769: yyIndex = yyRepetition1 + 1;
08770:
08771: yyValue = difference(yyStart, yyIndex);
08772:
08773: return new SemanticValue(yyValue, yyIndex, yyError);
08774: }
08775: }
08776:
08777: // Done.
08778: yyError = yyError.select("string constant expected", yyStart);
08779: return yyError;
08780: }
08781:
08782: // =========================================================================
08783:
08784: /**
08785: * Parse nonterminal xtc.lang.JavaIdentifier.QualifiedIdentifier.
08786: *
08787: * @param yyStart The index.
08788: * @return The result.
08789: * @throws IOException Signals an I/O error.
08790: */
08791: private Result pQualifiedIdentifier(final int yyStart)
08792: throws IOException {
08793: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
08794: if (null == yyColumn.chunk3)
08795: yyColumn.chunk3 = new Chunk3();
08796: if (null == yyColumn.chunk3.fQualifiedIdentifier)
08797: yyColumn.chunk3.fQualifiedIdentifier = pQualifiedIdentifier$1(yyStart);
08798: return yyColumn.chunk3.fQualifiedIdentifier;
08799: }
08800:
08801: /** Actually parse xtc.lang.JavaIdentifier.QualifiedIdentifier. */
08802: private Result pQualifiedIdentifier$1(final int yyStart)
08803: throws IOException {
08804:
08805: Result yyResult;
08806: Node yyValue;
08807: ParseError yyError = ParseError.DUMMY;
08808:
08809: // Alternative 1.
08810:
08811: yyResult = pJavaIdentifier$Identifier(yyStart);
08812: yyError = yyResult.select(yyError);
08813: if (yyResult.hasValue()) {
08814: final String v$g$1 = yyResult.semanticValue();
08815:
08816: yyResult = pQualifiedIdentifier$$Star1(yyResult.index);
08817: yyError = yyResult.select(yyError);
08818: if (yyResult.hasValue()) {
08819: final Pair<String> v$g$2 = yyResult.semanticValue();
08820:
08821: yyValue = GNode.createFromPair("QualifiedIdentifier",
08822: v$g$1, v$g$2);
08823: yyValue.setLocation(location(yyStart));
08824:
08825: return yyResult.createValue(yyValue, yyError);
08826: }
08827: }
08828:
08829: // Done.
08830: return yyError;
08831: }
08832:
08833: // =========================================================================
08834:
08835: /**
08836: * Parse synthetic nonterminal
08837: * xtc.lang.jeannie.Debugger.QualifiedIdentifier$$Star1.
08838: *
08839: * @param yyStart The index.
08840: * @return The result.
08841: * @throws IOException Signals an I/O error.
08842: */
08843: private Result pQualifiedIdentifier$$Star1(final int yyStart)
08844: throws IOException {
08845:
08846: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
08847: if (null == yyColumn.chunk3)
08848: yyColumn.chunk3 = new Chunk3();
08849: if (null == yyColumn.chunk3.fQualifiedIdentifier$$Star1)
08850: yyColumn.chunk3.fQualifiedIdentifier$$Star1 = pQualifiedIdentifier$$Star1$1(yyStart);
08851: return yyColumn.chunk3.fQualifiedIdentifier$$Star1;
08852: }
08853:
08854: /** Actually parse xtc.lang.jeannie.Debugger.QualifiedIdentifier$$Star1. */
08855: private Result pQualifiedIdentifier$$Star1$1(final int yyStart)
08856: throws IOException {
08857:
08858: Result yyResult;
08859: Pair<String> yyValue;
08860: ParseError yyError = ParseError.DUMMY;
08861:
08862: // Alternative 1.
08863:
08864: yyResult = pSymbol(yyStart);
08865: yyError = yyResult.select(yyError);
08866: if (yyResult.hasValue(".")) {
08867:
08868: yyResult = pJavaIdentifier$Identifier(yyResult.index);
08869: yyError = yyResult.select(yyError);
08870: if (yyResult.hasValue()) {
08871: final String v$el$1 = yyResult.semanticValue();
08872:
08873: yyResult = pQualifiedIdentifier$$Star1(yyResult.index);
08874: yyError = yyResult.select(yyError);
08875: if (yyResult.hasValue()) {
08876: final Pair<String> v$2 = yyResult.semanticValue();
08877:
08878: yyValue = new Pair<String>(v$el$1, v$2);
08879:
08880: return yyResult.createValue(yyValue, yyError);
08881: }
08882: }
08883: }
08884:
08885: // Alternative 2.
08886:
08887: yyValue = Pair.empty();
08888:
08889: return new SemanticValue(yyValue, yyStart, yyError);
08890: }
08891:
08892: // =========================================================================
08893:
08894: /**
08895: * Parse nonterminal xtc.lang.JavaIdentifier.Identifier.
08896: *
08897: * @param yyStart The index.
08898: * @return The result.
08899: * @throws IOException Signals an I/O error.
08900: */
08901: private Result pJavaIdentifier$Identifier(final int yyStart)
08902: throws IOException {
08903:
08904: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
08905: if (null == yyColumn.chunk3)
08906: yyColumn.chunk3 = new Chunk3();
08907: if (null == yyColumn.chunk3.fJavaIdentifier$Identifier)
08908: yyColumn.chunk3.fJavaIdentifier$Identifier = pJavaIdentifier$Identifier$1(yyStart);
08909: return yyColumn.chunk3.fJavaIdentifier$Identifier;
08910: }
08911:
08912: /** Actually parse xtc.lang.JavaIdentifier.Identifier. */
08913: private Result pJavaIdentifier$Identifier$1(final int yyStart)
08914: throws IOException {
08915:
08916: Result yyResult;
08917: String yyValue;
08918: ParseError yyError = ParseError.DUMMY;
08919:
08920: // Alternative 1.
08921:
08922: yyResult = pJavaIdentifier$Word(yyStart);
08923: yyError = yyResult.select(yyError);
08924: if (yyResult.hasValue()) {
08925: yyValue = yyResult.semanticValue();
08926:
08927: if (!contains(JAVA_KEYWORDS, toText(yyValue))) {
08928:
08929: return yyResult.createValue(yyValue, yyError);
08930: }
08931: }
08932:
08933: // Done.
08934: yyError = yyError.select("identifier expected", yyStart);
08935: return yyError;
08936: }
08937:
08938: // =========================================================================
08939:
08940: /**
08941: * Parse nonterminal xtc.lang.JavaIdentifier.Word.
08942: *
08943: * @param yyStart The index.
08944: * @return The result.
08945: * @throws IOException Signals an I/O error.
08946: */
08947: private Result pJavaIdentifier$Word(final int yyStart)
08948: throws IOException {
08949: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
08950: if (null == yyColumn.chunk3)
08951: yyColumn.chunk3 = new Chunk3();
08952: if (null == yyColumn.chunk3.fJavaIdentifier$Word)
08953: yyColumn.chunk3.fJavaIdentifier$Word = pJavaIdentifier$Word$1(yyStart);
08954: return yyColumn.chunk3.fJavaIdentifier$Word;
08955: }
08956:
08957: /** Actually parse xtc.lang.JavaIdentifier.Word. */
08958: private Result pJavaIdentifier$Word$1(final int yyStart)
08959: throws IOException {
08960:
08961: Result yyResult;
08962: String yyValue;
08963: ParseError yyError = ParseError.DUMMY;
08964:
08965: // Alternative 1.
08966:
08967: yyResult = pJavaIdentifier$WordCharacters(yyStart);
08968: yyError = yyResult.select(yyError);
08969: if (yyResult.hasValue()) {
08970: yyValue = yyResult.semanticValue();
08971:
08972: yyResult = pSpacing(yyResult.index);
08973: yyError = yyResult.select(yyError);
08974: if (yyResult.hasValue()) {
08975:
08976: return yyResult.createValue(yyValue, yyError);
08977: }
08978: }
08979:
08980: // Done.
08981: return yyError;
08982: }
08983:
08984: // =========================================================================
08985:
08986: /**
08987: * Parse nonterminal xtc.lang.JavaIdentifier.WordCharacters.
08988: *
08989: * @param yyStart The index.
08990: * @return The result.
08991: * @throws IOException Signals an I/O error.
08992: */
08993: private Result pJavaIdentifier$WordCharacters(final int yyStart)
08994: throws IOException {
08995:
08996: int yyC;
08997: int yyIndex;
08998: int yyRepetition1;
08999: String yyValue;
09000: ParseError yyError = ParseError.DUMMY;
09001:
09002: // Alternative 1.
09003:
09004: yyC = character(yyStart);
09005: if (-1 != yyC) {
09006: yyIndex = yyStart + 1;
09007: final char start = (char) yyC;
09008:
09009: if (Character.isJavaIdentifierStart(start)) {
09010:
09011: yyRepetition1 = yyIndex;
09012: while (true) {
09013:
09014: yyC = character(yyRepetition1);
09015: if (-1 != yyC) {
09016: yyIndex = yyRepetition1 + 1;
09017: final char part = (char) yyC;
09018:
09019: if (Character.isJavaIdentifierPart(part)) {
09020:
09021: yyRepetition1 = yyIndex;
09022: continue;
09023: }
09024: }
09025: break;
09026: }
09027:
09028: yyValue = difference(yyStart, yyRepetition1);
09029:
09030: return new SemanticValue(yyValue, yyRepetition1,
09031: yyError);
09032: }
09033: }
09034:
09035: // Done.
09036: yyError = yyError.select("word characters expected", yyStart);
09037: return yyError;
09038: }
09039:
09040: // =========================================================================
09041:
09042: /**
09043: * Parse synthetic nonterminal xtc.lang.jeannie.Debugger.$$Shared6.
09044: * This nonterminal represents the duplicate productions
09045: * xtc.lang.jeannie.JeannieC.Annotations
09046: * and xtc.lang.jeannie.DebuggerC.Annotations.
09047: *
09048: * @param yyStart The index.
09049: * @return The result.
09050: * @throws IOException Signals an I/O error.
09051: */
09052: private Result p$$Shared6(final int yyStart) throws IOException {
09053: Node yyValue;
09054: ParseError yyError = ParseError.DUMMY;
09055:
09056: // Start a state modification.
09057: yyState.start();
09058:
09059: // Alternative 1.
09060:
09061: yyState.mark();
09062: yyValue = yyState.annotate(null);
09063:
09064: // Commit the state modification.
09065: yyState.commit();
09066:
09067: setLocation(yyValue, yyStart);
09068: return new SemanticValue(yyValue, yyStart, yyError);
09069: }
09070:
09071: // =========================================================================
09072:
09073: /**
09074: * Parse nonterminal xtc.lang.jeannie.JeannieC.Declaration.
09075: *
09076: * @param yyStart The index.
09077: * @return The result.
09078: * @throws IOException Signals an I/O error.
09079: */
09080: private Result pJeannieC$Declaration(final int yyStart)
09081: throws IOException {
09082: Result yyResult;
09083: int yyBase;
09084: int yyOption1;
09085: Object yyOpValue1;
09086: Node yyValue;
09087: ParseError yyError = ParseError.DUMMY;
09088:
09089: // Alternative 1.
09090:
09091: yyOption1 = yyStart;
09092: yyOpValue1 = null;
09093:
09094: yyBase = yyOption1;
09095: yyResult = pKeyword(yyBase);
09096: yyError = yyResult.select(yyError);
09097: if (yyResult.hasValue("__extension__")) {
09098: final String v$el$1 = "__extension__";
09099:
09100: yyOption1 = yyResult.index;
09101: yyOpValue1 = v$el$1;
09102: } else {
09103: yyError = yyError.select("\"__extension__\" expected",
09104: yyBase);
09105: }
09106: { // Start scope for v$g$1.
09107: final String v$g$1 = cast(yyOpValue1);
09108:
09109: yyResult = pJeannieC$DeclarationSpecifiers(yyOption1);
09110: yyError = yyResult.select(yyError);
09111: if (yyResult.hasValue()) {
09112: final Node v$g$2 = yyResult.semanticValue();
09113:
09114: yyOption1 = yyResult.index;
09115: yyOpValue1 = null;
09116:
09117: yyResult = pJeannieC$InitializedDeclaratorList(yyOption1);
09118: yyError = yyResult.select(yyError);
09119: if (yyResult.hasValue()) {
09120: final Node v$el$2 = yyResult.semanticValue();
09121:
09122: yyOption1 = yyResult.index;
09123: yyOpValue1 = v$el$2;
09124: }
09125: { // Start scope for l.
09126: final Node l = cast(yyOpValue1);
09127:
09128: if (yyState.isValid(l)) {
09129:
09130: yyBase = yyOption1;
09131: yyResult = pSymbol(yyBase);
09132: yyError = yyResult.select(yyError);
09133: if (yyResult.hasValue(";")) {
09134:
09135: yyValue = GNode.create("Declaration",
09136: v$g$1, v$g$2, l);
09137: yyValue.setLocation(location(yyStart));
09138:
09139: return yyResult.createValue(yyValue,
09140: yyError);
09141: } else {
09142: yyError = yyError.select("\";\" expected",
09143: yyBase);
09144: }
09145: }
09146: } // End scope for l.
09147: }
09148: } // End scope for v$g$1.
09149:
09150: // Done.
09151: yyError = yyError.select("declaration expected", yyStart);
09152: return yyError;
09153: }
09154:
09155: // =========================================================================
09156:
09157: /**
09158: * Parse nonterminal xtc.lang.jeannie.JeannieC.DeclarationSpecifiers.
09159: *
09160: * @param yyStart The index.
09161: * @return The result.
09162: * @throws IOException Signals an I/O error.
09163: */
09164: private Result pJeannieC$DeclarationSpecifiers(final int yyStart)
09165: throws IOException {
09166:
09167: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
09168: if (null == yyColumn.chunk3)
09169: yyColumn.chunk3 = new Chunk3();
09170: if (null == yyColumn.chunk3.fJeannieC$DeclarationSpecifiers)
09171: yyColumn.chunk3.fJeannieC$DeclarationSpecifiers = pJeannieC$DeclarationSpecifiers$1(yyStart);
09172: return yyColumn.chunk3.fJeannieC$DeclarationSpecifiers;
09173: }
09174:
09175: /** Actually parse xtc.lang.jeannie.JeannieC.DeclarationSpecifiers. */
09176: private Result pJeannieC$DeclarationSpecifiers$1(final int yyStart)
09177: throws IOException {
09178:
09179: Result yyResult;
09180: Node yyValue;
09181: ParseError yyError = ParseError.DUMMY;
09182:
09183: // Alternative 1.
09184:
09185: yyResult = pJeannieC$DeclarationSpecifierPlus(yyStart);
09186: yyError = yyResult.select(yyError);
09187: if (yyResult.hasValue()) {
09188: final Pair<Node> v$g$1 = yyResult.semanticValue();
09189:
09190: yyValue = GNode.createFromPair("DeclarationSpecifiers",
09191: v$g$1);
09192: yyValue.setLocation(location(yyStart));
09193:
09194: return yyResult.createValue(yyValue, yyError);
09195: }
09196:
09197: // Done.
09198: return yyError;
09199: }
09200:
09201: // =========================================================================
09202:
09203: /**
09204: * Parse nonterminal xtc.lang.jeannie.JeannieC.DeclarationSpecifierPlus.
09205: *
09206: * @param yyStart The index.
09207: * @return The result.
09208: * @throws IOException Signals an I/O error.
09209: */
09210: private Result pJeannieC$DeclarationSpecifierPlus(final int yyStart)
09211: throws IOException {
09212:
09213: Result yyResult;
09214: int yyRepetition1;
09215: boolean yyRepeated1;
09216: Pair<Node> yyRepValue1;
09217: Pair<Node> yyValue;
09218: ParseError yyError = ParseError.DUMMY;
09219:
09220: // Alternative 1.
09221:
09222: yyRepetition1 = yyStart;
09223: yyRepeated1 = false;
09224: yyRepValue1 = Pair.empty();
09225: while (true) {
09226:
09227: yyResult = pJeannieC$DeclarationSpecifier(yyRepetition1);
09228: yyError = yyResult.select(yyError);
09229: if (yyResult.hasValue()) {
09230: final Node v$el$1 = yyResult.semanticValue();
09231:
09232: yyRepetition1 = yyResult.index;
09233: yyRepeated1 = true;
09234: yyRepValue1 = new Pair<Node>(v$el$1, yyRepValue1);
09235: continue;
09236: }
09237: break;
09238: }
09239:
09240: if (yyRepeated1) {
09241: yyValue = yyRepValue1.reverse();
09242:
09243: return new SemanticValue(yyValue, yyRepetition1, yyError);
09244: }
09245:
09246: // Done.
09247: return yyError;
09248: }
09249:
09250: // =========================================================================
09251:
09252: /**
09253: * Parse nonterminal xtc.lang.jeannie.JeannieC.DeclarationSpecifier.
09254: *
09255: * @param yyStart The index.
09256: * @return The result.
09257: * @throws IOException Signals an I/O error.
09258: */
09259: private Result pJeannieC$DeclarationSpecifier(final int yyStart)
09260: throws IOException {
09261:
09262: Result yyResult;
09263: Node yyValue;
09264: ParseError yyError = ParseError.DUMMY;
09265:
09266: // Alternative <StorageClass>.
09267:
09268: yyResult = p$$Shared28(yyStart);
09269: yyError = yyResult.select(yyError);
09270: if (yyResult.hasValue()) {
09271: yyValue = yyResult.semanticValue();
09272:
09273: return yyResult.createValue(yyValue, yyError);
09274: }
09275:
09276: // Alternative <TypeSpecifier>.
09277:
09278: yyResult = pJeannieC$TypeSpecifier(yyStart);
09279: yyError = yyResult.select(yyError);
09280: if (yyResult.hasValue()) {
09281: yyValue = yyResult.semanticValue();
09282:
09283: yyResult = pTypeSpecContext(yyResult.index);
09284: yyError = yyResult.select(yyError);
09285: if (yyResult.hasValue()) {
09286:
09287: return yyResult.createValue(yyValue, yyError);
09288: }
09289: }
09290:
09291: // Alternative <TypeQualifier>.
09292:
09293: yyResult = p$$Shared29(yyStart);
09294: yyError = yyResult.select(yyError);
09295: if (yyResult.hasValue()) {
09296: yyValue = yyResult.semanticValue();
09297:
09298: return yyResult.createValue(yyValue, yyError);
09299: }
09300:
09301: // Alternative 4.
09302:
09303: yyResult = pKeyword(yyStart);
09304: yyError = yyResult.select(yyError);
09305: if (yyResult.hasValue("inline")) {
09306: final String v$g$1 = "inline";
09307:
09308: yyValue = GNode.create("FunctionSpecifier", v$g$1);
09309: yyValue.setLocation(location(yyStart));
09310:
09311: return yyResult.createValue(yyValue, yyError);
09312: }
09313:
09314: // Alternative 5.
09315:
09316: yyResult = pKeyword(yyStart);
09317: yyError = yyResult.select(yyError);
09318: if (yyResult.hasValue("__inline")) {
09319: final String v$g$2 = "__inline";
09320:
09321: yyValue = GNode.create("FunctionSpecifier", v$g$2);
09322: yyValue.setLocation(location(yyStart));
09323:
09324: return yyResult.createValue(yyValue, yyError);
09325: }
09326:
09327: // Alternative 6.
09328:
09329: yyResult = pKeyword(yyStart);
09330: yyError = yyResult.select(yyError);
09331: if (yyResult.hasValue("__inline__")) {
09332: final String v$g$3 = "__inline__";
09333:
09334: yyValue = GNode.create("FunctionSpecifier", v$g$3);
09335: yyValue.setLocation(location(yyStart));
09336:
09337: return yyResult.createValue(yyValue, yyError);
09338: }
09339:
09340: // Alternative <Attribute>.
09341:
09342: yyResult = pJeannieC$AttributeSpecifier(yyStart);
09343: yyError = yyResult.select(yyError);
09344: if (yyResult.hasValue()) {
09345: yyValue = yyResult.semanticValue();
09346:
09347: return yyResult.createValue(yyValue, yyError);
09348: }
09349:
09350: // Done.
09351: yyError = yyError.select("declaration specifier expected",
09352: yyStart);
09353: return yyError;
09354: }
09355:
09356: // =========================================================================
09357:
09358: /**
09359: * Parse nonterminal xtc.lang.jeannie.JeannieC.InitializedDeclaratorList.
09360: *
09361: * @param yyStart The index.
09362: * @return The result.
09363: * @throws IOException Signals an I/O error.
09364: */
09365: private Result pJeannieC$InitializedDeclaratorList(final int yyStart)
09366: throws IOException {
09367:
09368: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
09369: if (null == yyColumn.chunk4)
09370: yyColumn.chunk4 = new Chunk4();
09371: if (null == yyColumn.chunk4.fJeannieC$InitializedDeclaratorList)
09372: yyColumn.chunk4.fJeannieC$InitializedDeclaratorList = pJeannieC$InitializedDeclaratorList$1(yyStart);
09373: return yyColumn.chunk4.fJeannieC$InitializedDeclaratorList;
09374: }
09375:
09376: /** Actually parse xtc.lang.jeannie.JeannieC.InitializedDeclaratorList. */
09377: private Result pJeannieC$InitializedDeclaratorList$1(
09378: final int yyStart) throws IOException {
09379:
09380: Result yyResult;
09381: Node yyValue;
09382: ParseError yyError = ParseError.DUMMY;
09383:
09384: // Alternative <List>.
09385:
09386: yyResult = pJeannieC$InitializedDeclarator(yyStart);
09387: yyError = yyResult.select(yyError);
09388: if (yyResult.hasValue()) {
09389: final Node v$g$1 = yyResult.semanticValue();
09390:
09391: yyResult = pJeannieC$InitializedDeclaratorList$$Star1(yyResult.index);
09392: yyError = yyResult.select(yyError);
09393: if (yyResult.hasValue()) {
09394: final Pair<Node> v$g$2 = yyResult.semanticValue();
09395:
09396: yyValue = GNode.createFromPair(
09397: "InitializedDeclaratorList", v$g$1, v$g$2);
09398: yyValue.setLocation(location(yyStart));
09399:
09400: return yyResult.createValue(yyValue, yyError);
09401: }
09402: }
09403:
09404: // Done.
09405: return yyError;
09406: }
09407:
09408: // =========================================================================
09409:
09410: /**
09411: * Parse synthetic nonterminal JeannieC.InitializedDeclaratorList$$Star1.
09412: *
09413: * @param yyStart The index.
09414: * @return The result.
09415: * @throws IOException Signals an I/O error.
09416: */
09417: private Result pJeannieC$InitializedDeclaratorList$$Star1(
09418: final int yyStart) throws IOException {
09419:
09420: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
09421: if (null == yyColumn.chunk4)
09422: yyColumn.chunk4 = new Chunk4();
09423: if (null == yyColumn.chunk4.fJeannieC$InitializedDeclaratorList$$Star1)
09424: yyColumn.chunk4.fJeannieC$InitializedDeclaratorList$$Star1 = pJeannieC$InitializedDeclaratorList$$Star1$1(yyStart);
09425: return yyColumn.chunk4.fJeannieC$InitializedDeclaratorList$$Star1;
09426: }
09427:
09428: /** Actually parse JeannieC.InitializedDeclaratorList$$Star1. */
09429: private Result pJeannieC$InitializedDeclaratorList$$Star1$1(
09430: final int yyStart) throws IOException {
09431:
09432: Result yyResult;
09433: Pair<Node> yyValue;
09434: ParseError yyError = ParseError.DUMMY;
09435:
09436: // Alternative 1.
09437:
09438: yyResult = pSymbol(yyStart);
09439: yyError = yyResult.select(yyError);
09440: if (yyResult.hasValue(",")) {
09441:
09442: yyResult = pJeannieC$InitializedDeclarator(yyResult.index);
09443: yyError = yyResult.select(yyError);
09444: if (yyResult.hasValue()) {
09445: final Node v$el$1 = yyResult.semanticValue();
09446:
09447: yyResult = pJeannieC$InitializedDeclaratorList$$Star1(yyResult.index);
09448: yyError = yyResult.select(yyError);
09449: if (yyResult.hasValue()) {
09450: final Pair<Node> v$2 = yyResult.semanticValue();
09451:
09452: yyValue = new Pair<Node>(v$el$1, v$2);
09453:
09454: return yyResult.createValue(yyValue, yyError);
09455: }
09456: }
09457: }
09458:
09459: // Alternative 2.
09460:
09461: yyValue = Pair.empty();
09462:
09463: return new SemanticValue(yyValue, yyStart, yyError);
09464: }
09465:
09466: // =========================================================================
09467:
09468: /**
09469: * Parse nonterminal xtc.lang.jeannie.JeannieC.InitializedDeclarator.
09470: *
09471: * @param yyStart The index.
09472: * @return The result.
09473: * @throws IOException Signals an I/O error.
09474: */
09475: private Result pJeannieC$InitializedDeclarator(final int yyStart)
09476: throws IOException {
09477:
09478: Result yyResult;
09479: int yyBase;
09480: int yyOption1;
09481: Node yyOpValue1;
09482: Node yyValue;
09483: ParseError yyError = ParseError.DUMMY;
09484:
09485: // Alternative 1.
09486:
09487: yyOption1 = yyStart;
09488: yyOpValue1 = null;
09489:
09490: yyResult = pJeannieC$AttributeSpecifierList(yyOption1);
09491: yyError = yyResult.select(yyError);
09492: if (yyResult.hasValue()) {
09493: final Node v$el$1 = yyResult.semanticValue();
09494:
09495: yyOption1 = yyResult.index;
09496: yyOpValue1 = v$el$1;
09497: }
09498: { // Start scope for v$g$1.
09499: final Node v$g$1 = yyOpValue1;
09500:
09501: yyResult = pJeannieC$Declarator(yyOption1);
09502: yyError = yyResult.select(yyError);
09503: if (yyResult.hasValue()) {
09504: final Node v$g$2 = yyResult.semanticValue();
09505:
09506: yyOption1 = yyResult.index;
09507: yyOpValue1 = null;
09508:
09509: yyResult = pJeannieC$SimpleAssemblyExpression(yyOption1);
09510: yyError = yyResult.select(yyError);
09511: if (yyResult.hasValue()) {
09512: final Node v$el$2 = yyResult.semanticValue();
09513:
09514: yyOption1 = yyResult.index;
09515: yyOpValue1 = v$el$2;
09516: }
09517: { // Start scope for v$g$3.
09518: final Node v$g$3 = yyOpValue1;
09519:
09520: yyOpValue1 = null;
09521:
09522: yyResult = pJeannieC$AttributeSpecifierList(yyOption1);
09523: yyError = yyResult.select(yyError);
09524: if (yyResult.hasValue()) {
09525: final Node v$el$3 = yyResult.semanticValue();
09526:
09527: yyOption1 = yyResult.index;
09528: yyOpValue1 = v$el$3;
09529: }
09530: { // Start scope for v$g$4.
09531: final Node v$g$4 = yyOpValue1;
09532:
09533: yyOpValue1 = null;
09534:
09535: yyBase = yyOption1;
09536: yyResult = pSymbol(yyBase);
09537: yyError = yyResult.select(yyError);
09538: if (yyResult.hasValue("=")) {
09539:
09540: yyResult = pJeannieC$Initializer(yyResult.index);
09541: yyError = yyResult.select(yyError);
09542: if (yyResult.hasValue()) {
09543: final Node v$el$4 = yyResult
09544: .semanticValue();
09545:
09546: yyOption1 = yyResult.index;
09547: yyOpValue1 = v$el$4;
09548: }
09549: } else {
09550: yyError = yyError.select("\"=\" expected",
09551: yyBase);
09552: }
09553: { // Start scope for v$g$5.
09554: final Node v$g$5 = yyOpValue1;
09555:
09556: yyValue = GNode.create(
09557: "InitializedDeclarator", v$g$1,
09558: v$g$2, v$g$3, v$g$4, v$g$5);
09559: yyValue.setLocation(location(yyStart));
09560:
09561: return new SemanticValue(yyValue,
09562: yyOption1, yyError);
09563: } // End scope for v$g$5.
09564: } // End scope for v$g$4.
09565: } // End scope for v$g$3.
09566: }
09567: } // End scope for v$g$1.
09568:
09569: // Done.
09570: return yyError;
09571: }
09572:
09573: // =========================================================================
09574:
09575: /**
09576: * Parse synthetic nonterminal xtc.lang.jeannie.Debugger.$$Shared28.
09577: * This nonterminal represents the duplicate productions
09578: * xtc.lang.jeannie.JeannieC.StorageClassSpecifier
09579: * and xtc.lang.jeannie.DebuggerC.StorageClassSpecifier.
09580: *
09581: * @param yyStart The index.
09582: * @return The result.
09583: * @throws IOException Signals an I/O error.
09584: */
09585: private Result p$$Shared28(final int yyStart) throws IOException {
09586: Result yyResult;
09587: Node yyValue;
09588: ParseError yyError = ParseError.DUMMY;
09589:
09590: // Alternative 1.
09591:
09592: yyResult = pKeyword(yyStart);
09593: yyError = yyResult.select(yyError);
09594: if (yyResult.hasValue("auto")) {
09595:
09596: yyValue = GNode.create("AutoSpecifier", false);
09597: yyValue.setLocation(location(yyStart));
09598:
09599: return yyResult.createValue(yyValue, yyError);
09600: }
09601:
09602: // Alternative 2.
09603:
09604: yyResult = pKeyword(yyStart);
09605: yyError = yyResult.select(yyError);
09606: if (yyResult.hasValue("extern")) {
09607:
09608: yyValue = GNode.create("ExternSpecifier", false);
09609: yyValue.setLocation(location(yyStart));
09610:
09611: return yyResult.createValue(yyValue, yyError);
09612: }
09613:
09614: // Alternative 3.
09615:
09616: yyResult = pKeyword(yyStart);
09617: yyError = yyResult.select(yyError);
09618: if (yyResult.hasValue("register")) {
09619:
09620: yyValue = GNode.create("RegisterSpecifier", false);
09621: yyValue.setLocation(location(yyStart));
09622:
09623: return yyResult.createValue(yyValue, yyError);
09624: }
09625:
09626: // Alternative 4.
09627:
09628: yyResult = pKeyword(yyStart);
09629: yyError = yyResult.select(yyError);
09630: if (yyResult.hasValue("static")) {
09631:
09632: yyValue = GNode.create("StaticSpecifier", false);
09633: yyValue.setLocation(location(yyStart));
09634:
09635: return yyResult.createValue(yyValue, yyError);
09636: }
09637:
09638: // Alternative 5.
09639:
09640: yyResult = pKeyword(yyStart);
09641: yyError = yyResult.select(yyError);
09642: if (yyResult.hasValue("typedef")) {
09643:
09644: yyResult = pTypedefContext(yyResult.index);
09645: yyError = yyResult.select(yyError);
09646: if (yyResult.hasValue()) {
09647:
09648: yyValue = GNode.create("TypedefSpecifier", false);
09649: yyValue.setLocation(location(yyStart));
09650:
09651: return yyResult.createValue(yyValue, yyError);
09652: }
09653: }
09654:
09655: // Done.
09656: yyError = yyError.select(" expected", yyStart);
09657: return yyError;
09658: }
09659:
09660: // =========================================================================
09661:
09662: /**
09663: * Parse synthetic nonterminal xtc.lang.jeannie.Debugger.$$Shared29.
09664: * This nonterminal represents the duplicate productions
09665: * xtc.lang.jeannie.JeannieC.TypeQualifier
09666: * and xtc.lang.jeannie.DebuggerC.TypeQualifier.
09667: *
09668: * @param yyStart The index.
09669: * @return The result.
09670: * @throws IOException Signals an I/O error.
09671: */
09672: private Result p$$Shared29(final int yyStart) throws IOException {
09673: Result yyResult;
09674: Node yyValue;
09675: ParseError yyError = ParseError.DUMMY;
09676:
09677: // Alternative 1.
09678:
09679: yyResult = pKeyword(yyStart);
09680: yyError = yyResult.select(yyError);
09681: if (yyResult.hasValue("volatile")) {
09682: final String v$g$1 = "volatile";
09683:
09684: yyValue = GNode.create("VolatileQualifier", v$g$1);
09685: yyValue.setLocation(location(yyStart));
09686:
09687: return yyResult.createValue(yyValue, yyError);
09688: }
09689:
09690: // Alternative 2.
09691:
09692: yyResult = pKeyword(yyStart);
09693: yyError = yyResult.select(yyError);
09694: if (yyResult.hasValue("__volatile")) {
09695: final String v$g$2 = "__volatile";
09696:
09697: yyValue = GNode.create("VolatileQualifier", v$g$2);
09698: yyValue.setLocation(location(yyStart));
09699:
09700: return yyResult.createValue(yyValue, yyError);
09701: }
09702:
09703: // Alternative 3.
09704:
09705: yyResult = pKeyword(yyStart);
09706: yyError = yyResult.select(yyError);
09707: if (yyResult.hasValue("__volatile__")) {
09708: final String v$g$3 = "__volatile__";
09709:
09710: yyValue = GNode.create("VolatileQualifier", v$g$3);
09711: yyValue.setLocation(location(yyStart));
09712:
09713: return yyResult.createValue(yyValue, yyError);
09714: }
09715:
09716: // Alternative 4.
09717:
09718: yyResult = pKeyword(yyStart);
09719: yyError = yyResult.select(yyError);
09720: if (yyResult.hasValue("const")) {
09721: final String v$g$1 = "const";
09722:
09723: yyValue = GNode.create("ConstantQualifier", v$g$1);
09724: yyValue.setLocation(location(yyStart));
09725:
09726: return yyResult.createValue(yyValue, yyError);
09727: }
09728:
09729: // Alternative 5.
09730:
09731: yyResult = pKeyword(yyStart);
09732: yyError = yyResult.select(yyError);
09733: if (yyResult.hasValue("__const")) {
09734: final String v$g$2 = "__const";
09735:
09736: yyValue = GNode.create("ConstantQualifier", v$g$2);
09737: yyValue.setLocation(location(yyStart));
09738:
09739: return yyResult.createValue(yyValue, yyError);
09740: }
09741:
09742: // Alternative 6.
09743:
09744: yyResult = pKeyword(yyStart);
09745: yyError = yyResult.select(yyError);
09746: if (yyResult.hasValue("__const__")) {
09747: final String v$g$3 = "__const__";
09748:
09749: yyValue = GNode.create("ConstantQualifier", v$g$3);
09750: yyValue.setLocation(location(yyStart));
09751:
09752: return yyResult.createValue(yyValue, yyError);
09753: }
09754:
09755: // Alternative 7.
09756:
09757: yyResult = pKeyword(yyStart);
09758: yyError = yyResult.select(yyError);
09759: if (yyResult.hasValue("restrict")) {
09760: final String v$g$1 = "restrict";
09761:
09762: yyValue = GNode.create("RestrictQualifier", v$g$1);
09763: yyValue.setLocation(location(yyStart));
09764:
09765: return yyResult.createValue(yyValue, yyError);
09766: }
09767:
09768: // Alternative 8.
09769:
09770: yyResult = pKeyword(yyStart);
09771: yyError = yyResult.select(yyError);
09772: if (yyResult.hasValue("__restrict")) {
09773: final String v$g$2 = "__restrict";
09774:
09775: yyValue = GNode.create("RestrictQualifier", v$g$2);
09776: yyValue.setLocation(location(yyStart));
09777:
09778: return yyResult.createValue(yyValue, yyError);
09779: }
09780:
09781: // Alternative 9.
09782:
09783: yyResult = pKeyword(yyStart);
09784: yyError = yyResult.select(yyError);
09785: if (yyResult.hasValue("__restrict__")) {
09786: final String v$g$3 = "__restrict__";
09787:
09788: yyValue = GNode.create("RestrictQualifier", v$g$3);
09789: yyValue.setLocation(location(yyStart));
09790:
09791: return yyResult.createValue(yyValue, yyError);
09792: }
09793:
09794: // Done.
09795: yyError = yyError.select(" expected", yyStart);
09796: return yyError;
09797: }
09798:
09799: // =========================================================================
09800:
09801: /**
09802: * Parse nonterminal xtc.lang.jeannie.JeannieC.TypeSpecifier.
09803: *
09804: * @param yyStart The index.
09805: * @return The result.
09806: * @throws IOException Signals an I/O error.
09807: */
09808: private Result pJeannieC$TypeSpecifier(final int yyStart)
09809: throws IOException {
09810:
09811: Result yyResult;
09812: int yyBase;
09813: Node yyValue;
09814: ParseError yyError = ParseError.DUMMY;
09815:
09816: // Alternative <Enumeration>.
09817:
09818: yyResult = pJeannieC$EnumerationTypeSpecifier(yyStart);
09819: yyError = yyResult.select(yyError);
09820: if (yyResult.hasValue()) {
09821: yyValue = yyResult.semanticValue();
09822:
09823: return yyResult.createValue(yyValue, yyError);
09824: }
09825:
09826: // Alternative <Structure>.
09827:
09828: yyResult = pJeannieC$StructureTypeSpecifier(yyStart);
09829: yyError = yyResult.select(yyError);
09830: if (yyResult.hasValue()) {
09831: yyValue = yyResult.semanticValue();
09832:
09833: return yyResult.createValue(yyValue, yyError);
09834: }
09835:
09836: // Alternative <Union>.
09837:
09838: yyResult = pJeannieC$UnionTypeSpecifier(yyStart);
09839: yyError = yyResult.select(yyError);
09840: if (yyResult.hasValue()) {
09841: yyValue = yyResult.semanticValue();
09842:
09843: return yyResult.createValue(yyValue, yyError);
09844: }
09845:
09846: // Alternative <Floating>.
09847:
09848: yyResult = p$$Shared30(yyStart);
09849: yyError = yyResult.select(yyError);
09850: if (yyResult.hasValue()) {
09851: yyValue = yyResult.semanticValue();
09852:
09853: return yyResult.createValue(yyValue, yyError);
09854: }
09855:
09856: // Alternative <Integer>.
09857:
09858: yyResult = p$$Shared31(yyStart);
09859: yyError = yyResult.select(yyError);
09860: if (yyResult.hasValue()) {
09861: yyValue = yyResult.semanticValue();
09862:
09863: return yyResult.createValue(yyValue, yyError);
09864: }
09865:
09866: // Alternative <JavaTyp>.
09867:
09868: yyResult = pJeannieC$JavaType(yyStart);
09869: yyError = yyResult.select(yyError);
09870: if (yyResult.hasValue()) {
09871: yyValue = yyResult.semanticValue();
09872:
09873: return yyResult.createValue(yyValue, yyError);
09874: }
09875:
09876: // Alternative 7.
09877:
09878: yyResult = pCIdentifier$Identifier(yyStart);
09879: yyError = yyResult.select(yyError);
09880: if (yyResult.hasValue()) {
09881: final String id = yyResult.semanticValue();
09882:
09883: if (yyState.isType(toText(id))) {
09884:
09885: yyValue = GNode.create("TypedefName", id);
09886: yyValue.setLocation(location(yyStart));
09887:
09888: return yyResult.createValue(yyValue, yyError);
09889: }
09890: }
09891:
09892: // Alternative 8.
09893:
09894: yyResult = p$$Shared9(yyStart);
09895: yyError = yyResult.select(yyError);
09896: if (yyResult.hasValue()) {
09897:
09898: yyBase = yyResult.index;
09899: yyResult = pSymbol(yyBase);
09900: yyError = yyResult.select(yyError);
09901: if (yyResult.hasValue("(")) {
09902:
09903: final int yyChoice1 = yyResult.index;
09904:
09905: // Nested alternative 1.
09906:
09907: yyResult = pJeannieC$TypeName(yyChoice1);
09908: yyError = yyResult.select(yyError);
09909: if (yyResult.hasValue()) {
09910: final Node v$g$1 = yyResult.semanticValue();
09911:
09912: yyBase = yyResult.index;
09913: yyResult = pSymbol(yyBase);
09914: yyError = yyResult.select(yyError);
09915: if (yyResult.hasValue(")")) {
09916:
09917: yyValue = GNode
09918: .create("TypeofSpecifier", v$g$1);
09919: yyValue.setLocation(location(yyStart));
09920:
09921: return yyResult.createValue(yyValue, yyError);
09922: } else {
09923: yyError = yyError.select("\")\" expected",
09924: yyBase);
09925: }
09926: }
09927:
09928: // Nested alternative 2.
09929:
09930: yyResult = pJeannieC$CommaExpression(yyChoice1);
09931: yyError = yyResult.select(yyError);
09932: if (yyResult.hasValue()) {
09933: final Node v$g$2 = yyResult.semanticValue();
09934:
09935: yyBase = yyResult.index;
09936: yyResult = pSymbol(yyBase);
09937: yyError = yyResult.select(yyError);
09938: if (yyResult.hasValue(")")) {
09939:
09940: yyValue = GNode
09941: .create("TypeofSpecifier", v$g$2);
09942: yyValue.setLocation(location(yyStart));
09943:
09944: return yyResult.createValue(yyValue, yyError);
09945: } else {
09946: yyError = yyError.select("\")\" expected",
09947: yyBase);
09948: }
09949: }
09950: } else {
09951: yyError = yyError.select("\"(\" expected", yyBase);
09952: }
09953: }
09954:
09955: // Alternative 9.
09956:
09957: yyResult = pKeyword(yyStart);
09958: yyError = yyResult.select(yyError);
09959: if (yyResult.hasValue("void")) {
09960:
09961: yyValue = GNode.create("VoidTypeSpecifier", false);
09962: yyValue.setLocation(location(yyStart));
09963:
09964: return yyResult.createValue(yyValue, yyError);
09965: }
09966:
09967: // Alternative 10.
09968:
09969: yyResult = pKeyword(yyStart);
09970: yyError = yyResult.select(yyError);
09971: if (yyResult.hasValue("__builtin_va_list")) {
09972:
09973: yyValue = GNode.create("VarArgListSpecifier", false);
09974: yyValue.setLocation(location(yyStart));
09975:
09976: return yyResult.createValue(yyValue, yyError);
09977: }
09978:
09979: // Done.
09980: yyError = yyError.select("type specifier expected", yyStart);
09981: return yyError;
09982: }
09983:
09984: // =========================================================================
09985:
09986: /**
09987: * Parse nonterminal xtc.lang.jeannie.JeannieC.EnumerationTypeSpecifier.
09988: *
09989: * @param yyStart The index.
09990: * @return The result.
09991: * @throws IOException Signals an I/O error.
09992: */
09993: private Result pJeannieC$EnumerationTypeSpecifier(final int yyStart)
09994: throws IOException {
09995:
09996: Result yyResult;
09997: int yyBase;
09998: int yyOption1;
09999: Object yyOpValue1;
10000: Node yyValue;
10001: ParseError yyError = ParseError.DUMMY;
10002:
10003: // Alternative 1.
10004:
10005: yyResult = pKeyword(yyStart);
10006: yyError = yyResult.select(yyError);
10007: if (yyResult.hasValue("enum")) {
10008:
10009: yyOption1 = yyResult.index;
10010: yyOpValue1 = null;
10011:
10012: yyResult = pJeannieC$AttributeSpecifierList(yyOption1);
10013: yyError = yyResult.select(yyError);
10014: if (yyResult.hasValue()) {
10015: final Node v$el$1 = yyResult.semanticValue();
10016:
10017: yyOption1 = yyResult.index;
10018: yyOpValue1 = v$el$1;
10019: }
10020: { // Start scope for v$g$1.
10021: final Node v$g$1 = cast(yyOpValue1);
10022:
10023: final int yyChoice1 = yyOption1;
10024:
10025: // Nested alternative 1.
10026:
10027: yyOption1 = yyChoice1;
10028: yyOpValue1 = null;
10029:
10030: yyResult = pCIdentifier$Identifier(yyOption1);
10031: yyError = yyResult.select(yyError);
10032: if (yyResult.hasValue()) {
10033: final String v$el$2 = yyResult.semanticValue();
10034:
10035: yyOption1 = yyResult.index;
10036: yyOpValue1 = v$el$2;
10037: }
10038: { // Start scope for v$g$2.
10039: final String v$g$2 = cast(yyOpValue1);
10040:
10041: yyBase = yyOption1;
10042: yyResult = pSymbol(yyBase);
10043: yyError = yyResult.select(yyError);
10044: if (yyResult.hasValue("{")) {
10045:
10046: yyResult = pJeannieC$EnumeratorList(yyResult.index);
10047: yyError = yyResult.select(yyError);
10048: if (yyResult.hasValue()) {
10049: final Node v$g$3 = yyResult.semanticValue();
10050:
10051: yyOption1 = yyResult.index;
10052:
10053: yyBase = yyOption1;
10054: yyResult = pSymbol(yyBase);
10055: yyError = yyResult.select(yyError);
10056: if (yyResult.hasValue(",")) {
10057:
10058: yyOption1 = yyResult.index;
10059: } else {
10060: yyError = yyError.select(
10061: "\",\" expected", yyBase);
10062: }
10063:
10064: yyBase = yyOption1;
10065: yyResult = pSymbol(yyBase);
10066: yyError = yyResult.select(yyError);
10067: if (yyResult.hasValue("}")) {
10068:
10069: yyOption1 = yyResult.index;
10070: yyOpValue1 = null;
10071:
10072: yyResult = pJeannieC$AttributeSpecifierList(yyOption1);
10073: yyError = yyResult.select(yyError);
10074: if (yyResult.hasValue()) {
10075: final Node v$el$3 = yyResult
10076: .semanticValue();
10077:
10078: yyOption1 = yyResult.index;
10079: yyOpValue1 = v$el$3;
10080: }
10081: { // Start scope for v$g$4.
10082: final Node v$g$4 = cast(yyOpValue1);
10083:
10084: yyValue = GNode
10085: .create(
10086: "EnumerationTypeDefinition",
10087: v$g$1, v$g$2,
10088: v$g$3, v$g$4);
10089: yyValue
10090: .setLocation(location(yyStart));
10091:
10092: return new SemanticValue(yyValue,
10093: yyOption1, yyError);
10094: } // End scope for v$g$4.
10095: } else {
10096: yyError = yyError.select(
10097: "\"}\" expected", yyBase);
10098: }
10099: }
10100: } else {
10101: yyError = yyError.select("\"{\" expected",
10102: yyBase);
10103: }
10104: } // End scope for v$g$2.
10105:
10106: // Nested alternative 2.
10107:
10108: yyResult = pCIdentifier$Identifier(yyChoice1);
10109: yyError = yyResult.select(yyError);
10110: if (yyResult.hasValue()) {
10111: final String v$g$2 = yyResult.semanticValue();
10112:
10113: yyValue = GNode.create("EnumerationTypeReference",
10114: v$g$1, v$g$2);
10115: yyValue.setLocation(location(yyStart));
10116:
10117: return yyResult.createValue(yyValue, yyError);
10118: }
10119: } // End scope for v$g$1.
10120: }
10121:
10122: // Done.
10123: yyError = yyError.select("enumeration type specifier expected",
10124: yyStart);
10125: return yyError;
10126: }
10127:
10128: // =========================================================================
10129:
10130: /**
10131: * Parse nonterminal xtc.lang.jeannie.JeannieC.EnumeratorList.
10132: *
10133: * @param yyStart The index.
10134: * @return The result.
10135: * @throws IOException Signals an I/O error.
10136: */
10137: private Result pJeannieC$EnumeratorList(final int yyStart)
10138: throws IOException {
10139:
10140: Result yyResult;
10141: int yyBase;
10142: int yyRepetition1;
10143: Pair<Node> yyRepValue1;
10144: Node yyValue;
10145: ParseError yyError = ParseError.DUMMY;
10146:
10147: // Alternative <List>.
10148:
10149: yyResult = pJeannieC$Enumerator(yyStart);
10150: yyError = yyResult.select(yyError);
10151: if (yyResult.hasValue()) {
10152: final Node v$g$1 = yyResult.semanticValue();
10153:
10154: yyRepetition1 = yyResult.index;
10155: yyRepValue1 = Pair.empty();
10156: while (true) {
10157:
10158: yyBase = yyRepetition1;
10159: yyResult = pSymbol(yyBase);
10160: yyError = yyResult.select(yyError);
10161: if (yyResult.hasValue(",")) {
10162:
10163: yyResult = pJeannieC$Enumerator(yyResult.index);
10164: yyError = yyResult.select(yyError);
10165: if (yyResult.hasValue()) {
10166: final Node v$el$1 = yyResult.semanticValue();
10167:
10168: yyRepetition1 = yyResult.index;
10169: yyRepValue1 = new Pair<Node>(v$el$1,
10170: yyRepValue1);
10171: continue;
10172: }
10173: } else {
10174: yyError = yyError.select("\",\" expected", yyBase);
10175: }
10176: break;
10177: }
10178: { // Start scope for v$g$2.
10179: final Pair<Node> v$g$2 = yyRepValue1.reverse();
10180:
10181: yyValue = GNode.createFromPair("EnumeratorList", v$g$1,
10182: v$g$2);
10183: yyValue.setLocation(location(yyStart));
10184:
10185: return new SemanticValue(yyValue, yyRepetition1,
10186: yyError);
10187: } // End scope for v$g$2.
10188: }
10189:
10190: // Done.
10191: return yyError;
10192: }
10193:
10194: // =========================================================================
10195:
10196: /**
10197: * Parse nonterminal xtc.lang.jeannie.JeannieC.Enumerator.
10198: *
10199: * @param yyStart The index.
10200: * @return The result.
10201: * @throws IOException Signals an I/O error.
10202: */
10203: private Result pJeannieC$Enumerator(final int yyStart)
10204: throws IOException {
10205: Result yyResult;
10206: int yyBase;
10207: int yyOption1;
10208: Node yyOpValue1;
10209: Node yyValue;
10210: ParseError yyError = ParseError.DUMMY;
10211:
10212: // Alternative <Enumerator>.
10213:
10214: yyResult = pCIdentifier$Identifier(yyStart);
10215: yyError = yyResult.select(yyError);
10216: if (yyResult.hasValue()) {
10217: final String id = yyResult.semanticValue();
10218:
10219: yyState.bind(toText(id), false);
10220:
10221: yyOption1 = yyResult.index;
10222: yyOpValue1 = null;
10223:
10224: yyBase = yyOption1;
10225: yyResult = pSymbol(yyBase);
10226: yyError = yyResult.select(yyError);
10227: if (yyResult.hasValue("=")) {
10228:
10229: yyResult = pJeannieC$ConditionalExpression(yyResult.index);
10230: yyError = yyResult.select(yyError);
10231: if (yyResult.hasValue()) {
10232: final Node v$el$1 = yyResult.semanticValue();
10233:
10234: yyOption1 = yyResult.index;
10235: yyOpValue1 = v$el$1;
10236: }
10237: } else {
10238: yyError = yyError.select("\"=\" expected", yyBase);
10239: }
10240: { // Start scope for v$g$1.
10241: final Node v$g$1 = yyOpValue1;
10242:
10243: yyValue = GNode.create("Enumerator", id, v$g$1);
10244: yyValue.setLocation(location(yyStart));
10245:
10246: return new SemanticValue(yyValue, yyOption1, yyError);
10247: } // End scope for v$g$1.
10248: }
10249:
10250: // Done.
10251: return yyError;
10252: }
10253:
10254: // =========================================================================
10255:
10256: /**
10257: * Parse nonterminal xtc.lang.jeannie.JeannieC.StructureTypeSpecifier.
10258: *
10259: * @param yyStart The index.
10260: * @return The result.
10261: * @throws IOException Signals an I/O error.
10262: */
10263: private Result pJeannieC$StructureTypeSpecifier(final int yyStart)
10264: throws IOException {
10265:
10266: Result yyResult;
10267: int yyBase;
10268: int yyOption1;
10269: Object yyOpValue1;
10270: Node yyValue;
10271: ParseError yyError = ParseError.DUMMY;
10272:
10273: // Alternative 1.
10274:
10275: yyResult = pKeyword(yyStart);
10276: yyError = yyResult.select(yyError);
10277: if (yyResult.hasValue("struct")) {
10278:
10279: yyOption1 = yyResult.index;
10280: yyOpValue1 = null;
10281:
10282: yyResult = pJeannieC$AttributeSpecifierList(yyOption1);
10283: yyError = yyResult.select(yyError);
10284: if (yyResult.hasValue()) {
10285: final Node v$el$1 = yyResult.semanticValue();
10286:
10287: yyOption1 = yyResult.index;
10288: yyOpValue1 = v$el$1;
10289: }
10290: { // Start scope for v$g$1.
10291: final Node v$g$1 = cast(yyOpValue1);
10292:
10293: final int yyChoice1 = yyOption1;
10294:
10295: // Nested alternative 1.
10296:
10297: yyOption1 = yyChoice1;
10298: yyOpValue1 = null;
10299:
10300: yyResult = pCIdentifier$Identifier(yyOption1);
10301: yyError = yyResult.select(yyError);
10302: if (yyResult.hasValue()) {
10303: final String v$el$2 = yyResult.semanticValue();
10304:
10305: yyOption1 = yyResult.index;
10306: yyOpValue1 = v$el$2;
10307: }
10308: { // Start scope for v$g$2.
10309: final String v$g$2 = cast(yyOpValue1);
10310:
10311: yyBase = yyOption1;
10312: yyResult = pSymbol(yyBase);
10313: yyError = yyResult.select(yyError);
10314: if (yyResult.hasValue("{")) {
10315:
10316: yyResult = pPushScope(yyResult.index);
10317: yyError = yyResult.select(yyError);
10318: if (yyResult.hasValue()) {
10319:
10320: yyResult = pEnterStructure(yyResult.index);
10321: yyError = yyResult.select(yyError);
10322: if (yyResult.hasValue()) {
10323:
10324: yyResult = pJeannieC$StructureDeclarationList(yyResult.index);
10325: yyError = yyResult.select(yyError);
10326: if (yyResult.hasValue()) {
10327: final Node v$g$3 = yyResult
10328: .semanticValue();
10329:
10330: yyBase = yyResult.index;
10331: yyResult = pSymbol(yyBase);
10332: yyError = yyResult.select(yyError);
10333: if (yyResult.hasValue("}")) {
10334:
10335: yyResult = pExitStructure(yyResult.index);
10336: yyError = yyResult
10337: .select(yyError);
10338: if (yyResult.hasValue()) {
10339:
10340: yyResult = pPopScope(yyResult.index);
10341: yyError = yyResult
10342: .select(yyError);
10343: if (yyResult.hasValue()) {
10344:
10345: yyOption1 = yyResult.index;
10346: yyOpValue1 = null;
10347:
10348: yyResult = pJeannieC$AttributeSpecifierList(yyOption1);
10349: yyError = yyResult
10350: .select(yyError);
10351: if (yyResult.hasValue()) {
10352: final Node v$el$3 = yyResult
10353: .semanticValue();
10354:
10355: yyOption1 = yyResult.index;
10356: yyOpValue1 = v$el$3;
10357: }
10358: { // Start scope for v$g$4.
10359: final Node v$g$4 = cast(yyOpValue1);
10360:
10361: yyValue = GNode
10362: .create(
10363: "StructureTypeDefinition",
10364: v$g$1,
10365: v$g$2,
10366: v$g$3,
10367: v$g$4);
10368: yyValue
10369: .setLocation(location(yyStart));
10370:
10371: return new SemanticValue(
10372: yyValue,
10373: yyOption1,
10374: yyError);
10375: } // End scope for v$g$4.
10376: }
10377: }
10378: } else {
10379: yyError = yyError.select(
10380: "\"}\" expected",
10381: yyBase);
10382: }
10383: }
10384: }
10385: }
10386: } else {
10387: yyError = yyError.select("\"{\" expected",
10388: yyBase);
10389: }
10390: } // End scope for v$g$2.
10391:
10392: // Nested alternative 2.
10393:
10394: yyResult = pCIdentifier$Identifier(yyChoice1);
10395: yyError = yyResult.select(yyError);
10396: if (yyResult.hasValue()) {
10397: final String v$g$2 = yyResult.semanticValue();
10398:
10399: yyValue = GNode.create("StructureTypeReference",
10400: v$g$1, v$g$2);
10401: yyValue.setLocation(location(yyStart));
10402:
10403: return yyResult.createValue(yyValue, yyError);
10404: }
10405: } // End scope for v$g$1.
10406: }
10407:
10408: // Done.
10409: yyError = yyError.select("structure type specifier expected",
10410: yyStart);
10411: return yyError;
10412: }
10413:
10414: // =========================================================================
10415:
10416: /**
10417: * Parse nonterminal xtc.lang.jeannie.JeannieC.UnionTypeSpecifier.
10418: *
10419: * @param yyStart The index.
10420: * @return The result.
10421: * @throws IOException Signals an I/O error.
10422: */
10423: private Result pJeannieC$UnionTypeSpecifier(final int yyStart)
10424: throws IOException {
10425:
10426: Result yyResult;
10427: int yyBase;
10428: int yyOption1;
10429: Object yyOpValue1;
10430: Node yyValue;
10431: ParseError yyError = ParseError.DUMMY;
10432:
10433: // Alternative 1.
10434:
10435: yyResult = pKeyword(yyStart);
10436: yyError = yyResult.select(yyError);
10437: if (yyResult.hasValue("union")) {
10438:
10439: yyOption1 = yyResult.index;
10440: yyOpValue1 = null;
10441:
10442: yyResult = pJeannieC$AttributeSpecifierList(yyOption1);
10443: yyError = yyResult.select(yyError);
10444: if (yyResult.hasValue()) {
10445: final Node v$el$1 = yyResult.semanticValue();
10446:
10447: yyOption1 = yyResult.index;
10448: yyOpValue1 = v$el$1;
10449: }
10450: { // Start scope for v$g$1.
10451: final Node v$g$1 = cast(yyOpValue1);
10452:
10453: final int yyChoice1 = yyOption1;
10454:
10455: // Nested alternative 1.
10456:
10457: yyOption1 = yyChoice1;
10458: yyOpValue1 = null;
10459:
10460: yyResult = pCIdentifier$Identifier(yyOption1);
10461: yyError = yyResult.select(yyError);
10462: if (yyResult.hasValue()) {
10463: final String v$el$2 = yyResult.semanticValue();
10464:
10465: yyOption1 = yyResult.index;
10466: yyOpValue1 = v$el$2;
10467: }
10468: { // Start scope for v$g$2.
10469: final String v$g$2 = cast(yyOpValue1);
10470:
10471: yyBase = yyOption1;
10472: yyResult = pSymbol(yyBase);
10473: yyError = yyResult.select(yyError);
10474: if (yyResult.hasValue("{")) {
10475:
10476: yyResult = pPushScope(yyResult.index);
10477: yyError = yyResult.select(yyError);
10478: if (yyResult.hasValue()) {
10479:
10480: yyResult = pEnterStructure(yyResult.index);
10481: yyError = yyResult.select(yyError);
10482: if (yyResult.hasValue()) {
10483:
10484: yyResult = pJeannieC$StructureDeclarationList(yyResult.index);
10485: yyError = yyResult.select(yyError);
10486: if (yyResult.hasValue()) {
10487: final Node v$g$3 = yyResult
10488: .semanticValue();
10489:
10490: yyBase = yyResult.index;
10491: yyResult = pSymbol(yyBase);
10492: yyError = yyResult.select(yyError);
10493: if (yyResult.hasValue("}")) {
10494:
10495: yyResult = pExitStructure(yyResult.index);
10496: yyError = yyResult
10497: .select(yyError);
10498: if (yyResult.hasValue()) {
10499:
10500: yyResult = pPopScope(yyResult.index);
10501: yyError = yyResult
10502: .select(yyError);
10503: if (yyResult.hasValue()) {
10504:
10505: yyOption1 = yyResult.index;
10506: yyOpValue1 = null;
10507:
10508: yyResult = pJeannieC$AttributeSpecifierList(yyOption1);
10509: yyError = yyResult
10510: .select(yyError);
10511: if (yyResult.hasValue()) {
10512: final Node v$el$3 = yyResult
10513: .semanticValue();
10514:
10515: yyOption1 = yyResult.index;
10516: yyOpValue1 = v$el$3;
10517: }
10518: { // Start scope for v$g$4.
10519: final Node v$g$4 = cast(yyOpValue1);
10520:
10521: yyValue = GNode
10522: .create(
10523: "UnionTypeDefinition",
10524: v$g$1,
10525: v$g$2,
10526: v$g$3,
10527: v$g$4);
10528: yyValue
10529: .setLocation(location(yyStart));
10530:
10531: return new SemanticValue(
10532: yyValue,
10533: yyOption1,
10534: yyError);
10535: } // End scope for v$g$4.
10536: }
10537: }
10538: } else {
10539: yyError = yyError.select(
10540: "\"}\" expected",
10541: yyBase);
10542: }
10543: }
10544: }
10545: }
10546: } else {
10547: yyError = yyError.select("\"{\" expected",
10548: yyBase);
10549: }
10550: } // End scope for v$g$2.
10551:
10552: // Nested alternative 2.
10553:
10554: yyResult = pCIdentifier$Identifier(yyChoice1);
10555: yyError = yyResult.select(yyError);
10556: if (yyResult.hasValue()) {
10557: final String v$g$2 = yyResult.semanticValue();
10558:
10559: yyValue = GNode.create("UnionTypeReference", v$g$1,
10560: v$g$2);
10561: yyValue.setLocation(location(yyStart));
10562:
10563: return yyResult.createValue(yyValue, yyError);
10564: }
10565: } // End scope for v$g$1.
10566: }
10567:
10568: // Done.
10569: yyError = yyError.select("union type specifier expected",
10570: yyStart);
10571: return yyError;
10572: }
10573:
10574: // =========================================================================
10575:
10576: /**
10577: * Parse nonterminal xtc.lang.jeannie.JeannieC.StructureDeclarationList.
10578: *
10579: * @param yyStart The index.
10580: * @return The result.
10581: * @throws IOException Signals an I/O error.
10582: */
10583: private Result pJeannieC$StructureDeclarationList(final int yyStart)
10584: throws IOException {
10585:
10586: Result yyResult;
10587: int yyRepetition1;
10588: boolean yyRepeated1;
10589: Pair<Node> yyRepValue1;
10590: Node yyValue;
10591: ParseError yyError = ParseError.DUMMY;
10592:
10593: // Alternative <Regular>.
10594:
10595: yyRepetition1 = yyStart;
10596: yyRepeated1 = false;
10597: yyRepValue1 = Pair.empty();
10598: while (true) {
10599:
10600: yyResult = pJeannieC$AnnotatedStructureDeclaration(yyRepetition1);
10601: yyError = yyResult.select(yyError);
10602: if (yyResult.hasValue()) {
10603: final Node v$el$1 = yyResult.semanticValue();
10604:
10605: yyRepetition1 = yyResult.index;
10606: yyRepeated1 = true;
10607: yyRepValue1 = new Pair<Node>(v$el$1, yyRepValue1);
10608: continue;
10609: }
10610: break;
10611: }
10612:
10613: if (yyRepeated1) {
10614: final Pair<Node> v$g$1 = yyRepValue1.reverse();
10615:
10616: yyResult = p$$Shared6(yyRepetition1);
10617: yyError = yyResult.select(yyError);
10618: if (yyResult.hasValue()) {
10619: final Node v$g$2 = yyResult.semanticValue();
10620:
10621: yyValue = GNode.create("StructureDeclarationList",
10622: v$g$1.size() + 1).addAll(v$g$1).add(v$g$2);
10623: yyValue.setLocation(location(yyStart));
10624:
10625: return yyResult.createValue(yyValue, yyError);
10626: }
10627: }
10628:
10629: // Alternative <Empty>.
10630:
10631: if (GCC) {
10632:
10633: yyResult = p$$Shared6(yyStart);
10634: yyError = yyResult.select(yyError);
10635: if (yyResult.hasValue()) {
10636: final Node v$g$3 = yyResult.semanticValue();
10637:
10638: yyValue = GNode.create("StructureDeclarationList",
10639: v$g$3);
10640: yyValue.setLocation(location(yyStart));
10641:
10642: return yyResult.createValue(yyValue, yyError);
10643: }
10644: }
10645:
10646: // Done.
10647: yyError = yyError.select("structure declaration list expected",
10648: yyStart);
10649: return yyError;
10650: }
10651:
10652: // =========================================================================
10653:
10654: /**
10655: * Parse nonterminal
10656: * xtc.lang.jeannie.JeannieC.AnnotatedStructureDeclaration.
10657: *
10658: * @param yyStart The index.
10659: * @return The result.
10660: * @throws IOException Signals an I/O error.
10661: */
10662: private Result pJeannieC$AnnotatedStructureDeclaration(
10663: final int yyStart) throws IOException {
10664:
10665: Result yyResult;
10666: Node yyValue;
10667: ParseError yyError = ParseError.DUMMY;
10668:
10669: // Start a state modification.
10670: yyState.start();
10671:
10672: // Alternative 1.
10673:
10674: yyState.mark();
10675:
10676: yyResult = pJeannieC$StructureDeclaration(yyStart);
10677: yyError = yyResult.select(yyError);
10678: if (yyResult.hasValue()) {
10679: final Node d = yyResult.semanticValue();
10680:
10681: yyValue = yyState.annotate(d);
10682:
10683: // Commit the state modification.
10684: yyState.commit();
10685:
10686: setLocation(yyValue, yyStart);
10687: return yyResult.createValue(yyValue, yyError);
10688: }
10689:
10690: // Abort the state modification.
10691: yyState.abort();
10692:
10693: // Done.
10694: return yyError;
10695: }
10696:
10697: // =========================================================================
10698:
10699: /**
10700: * Parse nonterminal xtc.lang.jeannie.JeannieC.StructureDeclaration.
10701: *
10702: * @param yyStart The index.
10703: * @return The result.
10704: * @throws IOException Signals an I/O error.
10705: */
10706: private Result pJeannieC$StructureDeclaration(final int yyStart)
10707: throws IOException {
10708:
10709: Result yyResult;
10710: int yyBase;
10711: int yyRepetition1;
10712: boolean yyRepeated1;
10713: int yyOption1;
10714: String yyOpValue1;
10715: Node yyValue;
10716: ParseError yyError = ParseError.DUMMY;
10717:
10718: // Alternative <Declaration>.
10719:
10720: yyOption1 = yyStart;
10721: yyOpValue1 = null;
10722:
10723: yyBase = yyOption1;
10724: yyResult = pKeyword(yyBase);
10725: yyError = yyResult.select(yyError);
10726: if (yyResult.hasValue("__extension__")) {
10727: final String v$el$1 = "__extension__";
10728:
10729: yyOption1 = yyResult.index;
10730: yyOpValue1 = v$el$1;
10731: } else {
10732: yyError = yyError.select("\"__extension__\" expected",
10733: yyBase);
10734: }
10735: { // Start scope for v$g$1.
10736: final String v$g$1 = yyOpValue1;
10737:
10738: yyResult = pJeannieC$SpecifierQualifierList(yyOption1);
10739: yyError = yyResult.select(yyError);
10740: if (yyResult.hasValue()) {
10741: final Node v$g$2 = yyResult.semanticValue();
10742:
10743: yyResult = pJeannieC$OptionalStructureDeclaratorList(yyResult.index);
10744: yyError = yyResult.select(yyError);
10745: if (yyResult.hasValue()) {
10746: final Node v$g$3 = yyResult.semanticValue();
10747:
10748: yyBase = yyResult.index;
10749: yyResult = pSymbol(yyBase);
10750: yyError = yyResult.select(yyError);
10751: if (yyResult.hasValue(";")) {
10752:
10753: yyOption1 = yyResult.index;
10754:
10755: if (GCC) {
10756:
10757: yyRepetition1 = yyOption1;
10758: yyRepeated1 = false;
10759: while (true) {
10760:
10761: yyBase = yyRepetition1;
10762: yyResult = pSymbol(yyBase);
10763: yyError = yyResult.select(yyError);
10764: if (yyResult.hasValue(";")) {
10765:
10766: yyRepetition1 = yyResult.index;
10767: yyRepeated1 = true;
10768: continue;
10769: } else {
10770: yyError = yyError.select(
10771: "\";\" expected", yyBase);
10772: }
10773: break;
10774: }
10775:
10776: if (yyRepeated1) {
10777:
10778: yyOption1 = yyRepetition1;
10779: }
10780: }
10781:
10782: yyValue = GNode.create("StructureDeclaration",
10783: v$g$1, v$g$2, v$g$3);
10784: yyValue.setLocation(location(yyStart));
10785:
10786: return new SemanticValue(yyValue, yyOption1,
10787: yyError);
10788: } else {
10789: yyError = yyError.select("\";\" expected",
10790: yyBase);
10791: }
10792: }
10793: }
10794: } // End scope for v$g$1.
10795:
10796: // Done.
10797: yyError = yyError.select("structure declaration expected",
10798: yyStart);
10799: return yyError;
10800: }
10801:
10802: // =========================================================================
10803:
10804: /**
10805: * Parse nonterminal xtc.lang.jeannie.JeannieC.SpecifierQualifierList.
10806: *
10807: * @param yyStart The index.
10808: * @return The result.
10809: * @throws IOException Signals an I/O error.
10810: */
10811: private Result pJeannieC$SpecifierQualifierList(final int yyStart)
10812: throws IOException {
10813:
10814: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
10815: if (null == yyColumn.chunk4)
10816: yyColumn.chunk4 = new Chunk4();
10817: if (null == yyColumn.chunk4.fJeannieC$SpecifierQualifierList)
10818: yyColumn.chunk4.fJeannieC$SpecifierQualifierList = pJeannieC$SpecifierQualifierList$1(yyStart);
10819: return yyColumn.chunk4.fJeannieC$SpecifierQualifierList;
10820: }
10821:
10822: /** Actually parse xtc.lang.jeannie.JeannieC.SpecifierQualifierList. */
10823: private Result pJeannieC$SpecifierQualifierList$1(final int yyStart)
10824: throws IOException {
10825:
10826: Result yyResult;
10827: Node yyValue;
10828: ParseError yyError = ParseError.DUMMY;
10829:
10830: // Alternative 1.
10831:
10832: yyResult = pJeannieC$SpecifierQualifierPlus(yyStart);
10833: yyError = yyResult.select(yyError);
10834: if (yyResult.hasValue()) {
10835: final Pair<Node> v$g$1 = yyResult.semanticValue();
10836:
10837: yyValue = GNode.createFromPair("SpecifierQualifierList",
10838: v$g$1);
10839: yyValue.setLocation(location(yyStart));
10840:
10841: return yyResult.createValue(yyValue, yyError);
10842: }
10843:
10844: // Done.
10845: return yyError;
10846: }
10847:
10848: // =========================================================================
10849:
10850: /**
10851: * Parse nonterminal xtc.lang.jeannie.JeannieC.SpecifierQualifierPlus.
10852: *
10853: * @param yyStart The index.
10854: * @return The result.
10855: * @throws IOException Signals an I/O error.
10856: */
10857: private Result pJeannieC$SpecifierQualifierPlus(final int yyStart)
10858: throws IOException {
10859:
10860: Result yyResult;
10861: int yyRepetition1;
10862: boolean yyRepeated1;
10863: Pair<Node> yyRepValue1;
10864: Pair<Node> yyValue;
10865: ParseError yyError = ParseError.DUMMY;
10866:
10867: // Alternative 1.
10868:
10869: yyRepetition1 = yyStart;
10870: yyRepeated1 = false;
10871: yyRepValue1 = Pair.empty();
10872: while (true) {
10873:
10874: yyResult = pJeannieC$SpecifierQualifier(yyRepetition1);
10875: yyError = yyResult.select(yyError);
10876: if (yyResult.hasValue()) {
10877: final Node v$el$1 = yyResult.semanticValue();
10878:
10879: yyRepetition1 = yyResult.index;
10880: yyRepeated1 = true;
10881: yyRepValue1 = new Pair<Node>(v$el$1, yyRepValue1);
10882: continue;
10883: }
10884: break;
10885: }
10886:
10887: if (yyRepeated1) {
10888: yyValue = yyRepValue1.reverse();
10889:
10890: return new SemanticValue(yyValue, yyRepetition1, yyError);
10891: }
10892:
10893: // Done.
10894: return yyError;
10895: }
10896:
10897: // =========================================================================
10898:
10899: /**
10900: * Parse nonterminal xtc.lang.jeannie.JeannieC.SpecifierQualifier.
10901: *
10902: * @param yyStart The index.
10903: * @return The result.
10904: * @throws IOException Signals an I/O error.
10905: */
10906: private Result pJeannieC$SpecifierQualifier(final int yyStart)
10907: throws IOException {
10908:
10909: Result yyResult;
10910: Node yyValue;
10911: ParseError yyError = ParseError.DUMMY;
10912:
10913: // Alternative <TypeSpecifier>.
10914:
10915: yyResult = pJeannieC$TypeSpecifier(yyStart);
10916: yyError = yyResult.select(yyError);
10917: if (yyResult.hasValue()) {
10918: yyValue = yyResult.semanticValue();
10919:
10920: yyResult = pTypeSpecContext(yyResult.index);
10921: yyError = yyResult.select(yyError);
10922: if (yyResult.hasValue()) {
10923:
10924: return yyResult.createValue(yyValue, yyError);
10925: }
10926: }
10927:
10928: // Alternative <TypeQualifier>.
10929:
10930: yyResult = p$$Shared29(yyStart);
10931: yyError = yyResult.select(yyError);
10932: if (yyResult.hasValue()) {
10933: yyValue = yyResult.semanticValue();
10934:
10935: return yyResult.createValue(yyValue, yyError);
10936: }
10937:
10938: // Alternative <Attribute>.
10939:
10940: yyResult = pJeannieC$AttributeSpecifier(yyStart);
10941: yyError = yyResult.select(yyError);
10942: if (yyResult.hasValue()) {
10943: yyValue = yyResult.semanticValue();
10944:
10945: return yyResult.createValue(yyValue, yyError);
10946: }
10947:
10948: // Done.
10949: return yyError;
10950: }
10951:
10952: // =========================================================================
10953:
10954: /**
10955: * Parse nonterminal
10956: * xtc.lang.jeannie.JeannieC.OptionalStructureDeclaratorList.
10957: *
10958: * @param yyStart The index.
10959: * @return The result.
10960: * @throws IOException Signals an I/O error.
10961: */
10962: private Result pJeannieC$OptionalStructureDeclaratorList(
10963: final int yyStart) throws IOException {
10964:
10965: Result yyResult;
10966: Node yyValue;
10967: ParseError yyError = ParseError.DUMMY;
10968:
10969: // Alternative <List>.
10970:
10971: yyResult = pJeannieC$StructureDeclaratorList(yyStart);
10972: yyError = yyResult.select(yyError);
10973: if (yyResult.hasValue()) {
10974: yyValue = yyResult.semanticValue();
10975:
10976: return yyResult.createValue(yyValue, yyError);
10977: }
10978:
10979: // Alternative <Null>.
10980:
10981: if (GCC) {
10982: { // Start scope for yyValue.
10983: yyValue = null;
10984:
10985: return new SemanticValue(yyValue, yyStart, yyError);
10986: } // End scope for yyValue.
10987: }
10988:
10989: // Done.
10990: yyError = yyError.select(
10991: "optional structure declarator list expected", yyStart);
10992: return yyError;
10993: }
10994:
10995: // =========================================================================
10996:
10997: /**
10998: * Parse nonterminal xtc.lang.jeannie.JeannieC.StructureDeclaratorList.
10999: *
11000: * @param yyStart The index.
11001: * @return The result.
11002: * @throws IOException Signals an I/O error.
11003: */
11004: private Result pJeannieC$StructureDeclaratorList(final int yyStart)
11005: throws IOException {
11006:
11007: Result yyResult;
11008: int yyBase;
11009: int yyRepetition1;
11010: Pair<Node> yyRepValue1;
11011: Node yyValue;
11012: ParseError yyError = ParseError.DUMMY;
11013:
11014: // Alternative <List>.
11015:
11016: yyResult = pJeannieC$StructureDeclarator(yyStart);
11017: yyError = yyResult.select(yyError);
11018: if (yyResult.hasValue()) {
11019: final Node v$g$1 = yyResult.semanticValue();
11020:
11021: yyRepetition1 = yyResult.index;
11022: yyRepValue1 = Pair.empty();
11023: while (true) {
11024:
11025: yyBase = yyRepetition1;
11026: yyResult = pSymbol(yyBase);
11027: yyError = yyResult.select(yyError);
11028: if (yyResult.hasValue(",")) {
11029:
11030: yyResult = pJeannieC$StructureDeclarator(yyResult.index);
11031: yyError = yyResult.select(yyError);
11032: if (yyResult.hasValue()) {
11033: final Node v$el$1 = yyResult.semanticValue();
11034:
11035: yyRepetition1 = yyResult.index;
11036: yyRepValue1 = new Pair<Node>(v$el$1,
11037: yyRepValue1);
11038: continue;
11039: }
11040: } else {
11041: yyError = yyError.select("\",\" expected", yyBase);
11042: }
11043: break;
11044: }
11045: { // Start scope for v$g$2.
11046: final Pair<Node> v$g$2 = yyRepValue1.reverse();
11047:
11048: yyValue = GNode.createFromPair(
11049: "StructureDeclaratorList", v$g$1, v$g$2);
11050: yyValue.setLocation(location(yyStart));
11051:
11052: return new SemanticValue(yyValue, yyRepetition1,
11053: yyError);
11054: } // End scope for v$g$2.
11055: }
11056:
11057: // Done.
11058: return yyError;
11059: }
11060:
11061: // =========================================================================
11062:
11063: /**
11064: * Parse nonterminal xtc.lang.jeannie.JeannieC.StructureDeclarator.
11065: *
11066: * @param yyStart The index.
11067: * @return The result.
11068: * @throws IOException Signals an I/O error.
11069: */
11070: private Result pJeannieC$StructureDeclarator(final int yyStart)
11071: throws IOException {
11072:
11073: Result yyResult;
11074: int yyBase;
11075: int yyOption1;
11076: Node yyOpValue1;
11077: Node yyValue;
11078: ParseError yyError = ParseError.DUMMY;
11079:
11080: // Alternative 1.
11081:
11082: yyOption1 = yyStart;
11083: yyOpValue1 = null;
11084:
11085: yyResult = pJeannieC$AttributeSpecifierList(yyOption1);
11086: yyError = yyResult.select(yyError);
11087: if (yyResult.hasValue()) {
11088: final Node v$el$1 = yyResult.semanticValue();
11089:
11090: yyOption1 = yyResult.index;
11091: yyOpValue1 = v$el$1;
11092: }
11093: { // Start scope for v$g$1.
11094: final Node v$g$1 = yyOpValue1;
11095:
11096: yyOpValue1 = null;
11097:
11098: yyResult = pJeannieC$Declarator(yyOption1);
11099: yyError = yyResult.select(yyError);
11100: if (yyResult.hasValue()) {
11101: final Node v$el$2 = yyResult.semanticValue();
11102:
11103: yyOption1 = yyResult.index;
11104: yyOpValue1 = v$el$2;
11105: }
11106: { // Start scope for v$g$2.
11107: final Node v$g$2 = yyOpValue1;
11108:
11109: yyBase = yyOption1;
11110: yyResult = pSymbol(yyBase);
11111: yyError = yyResult.select(yyError);
11112: if (yyResult.hasValue(":")) {
11113:
11114: yyResult = pJeannieC$ConditionalExpression(yyResult.index);
11115: yyError = yyResult.select(yyError);
11116: if (yyResult.hasValue()) {
11117: final Node v$g$3 = yyResult.semanticValue();
11118:
11119: yyOption1 = yyResult.index;
11120: yyOpValue1 = null;
11121:
11122: yyResult = pJeannieC$AttributeSpecifierList(yyOption1);
11123: yyError = yyResult.select(yyError);
11124: if (yyResult.hasValue()) {
11125: final Node v$el$3 = yyResult
11126: .semanticValue();
11127:
11128: yyOption1 = yyResult.index;
11129: yyOpValue1 = v$el$3;
11130: }
11131: { // Start scope for v$g$4.
11132: final Node v$g$4 = yyOpValue1;
11133:
11134: yyValue = GNode.create("BitField", v$g$1,
11135: v$g$2, v$g$3, v$g$4);
11136: yyValue.setLocation(location(yyStart));
11137:
11138: return new SemanticValue(yyValue,
11139: yyOption1, yyError);
11140: } // End scope for v$g$4.
11141: }
11142: } else {
11143: yyError = yyError.select("\":\" expected", yyBase);
11144: }
11145: } // End scope for v$g$2.
11146: } // End scope for v$g$1.
11147:
11148: // Alternative <Simple>.
11149:
11150: yyResult = pJeannieC$AttributedDeclarator(yyStart);
11151: yyError = yyResult.select(yyError);
11152: if (yyResult.hasValue()) {
11153: yyValue = yyResult.semanticValue();
11154:
11155: return yyResult.createValue(yyValue, yyError);
11156: }
11157:
11158: // Done.
11159: return yyError;
11160: }
11161:
11162: // =========================================================================
11163:
11164: /**
11165: * Parse nonterminal xtc.lang.jeannie.JeannieC.AttributedDeclarator.
11166: *
11167: * @param yyStart The index.
11168: * @return The result.
11169: * @throws IOException Signals an I/O error.
11170: */
11171: private Result pJeannieC$AttributedDeclarator(final int yyStart)
11172: throws IOException {
11173:
11174: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
11175: if (null == yyColumn.chunk4)
11176: yyColumn.chunk4 = new Chunk4();
11177: if (null == yyColumn.chunk4.fJeannieC$AttributedDeclarator)
11178: yyColumn.chunk4.fJeannieC$AttributedDeclarator = pJeannieC$AttributedDeclarator$1(yyStart);
11179: return yyColumn.chunk4.fJeannieC$AttributedDeclarator;
11180: }
11181:
11182: /** Actually parse xtc.lang.jeannie.JeannieC.AttributedDeclarator. */
11183: private Result pJeannieC$AttributedDeclarator$1(final int yyStart)
11184: throws IOException {
11185:
11186: Result yyResult;
11187: int yyOption1;
11188: Node yyOpValue1;
11189: Node yyValue;
11190: ParseError yyError = ParseError.DUMMY;
11191:
11192: // Alternative 1.
11193:
11194: yyOption1 = yyStart;
11195: yyOpValue1 = null;
11196:
11197: yyResult = pJeannieC$AttributeSpecifierList(yyOption1);
11198: yyError = yyResult.select(yyError);
11199: if (yyResult.hasValue()) {
11200: final Node v$el$1 = yyResult.semanticValue();
11201:
11202: yyOption1 = yyResult.index;
11203: yyOpValue1 = v$el$1;
11204: }
11205: { // Start scope for v$g$1.
11206: final Node v$g$1 = yyOpValue1;
11207:
11208: yyResult = pJeannieC$Declarator(yyOption1);
11209: yyError = yyResult.select(yyError);
11210: if (yyResult.hasValue()) {
11211: final Node v$g$2 = yyResult.semanticValue();
11212:
11213: yyOption1 = yyResult.index;
11214: yyOpValue1 = null;
11215:
11216: yyResult = pJeannieC$AttributeSpecifierList(yyOption1);
11217: yyError = yyResult.select(yyError);
11218: if (yyResult.hasValue()) {
11219: final Node v$el$2 = yyResult.semanticValue();
11220:
11221: yyOption1 = yyResult.index;
11222: yyOpValue1 = v$el$2;
11223: }
11224: { // Start scope for v$g$3.
11225: final Node v$g$3 = yyOpValue1;
11226:
11227: yyValue = GNode.create("AttributedDeclarator",
11228: v$g$1, v$g$2, v$g$3);
11229: yyValue.setLocation(location(yyStart));
11230:
11231: return new SemanticValue(yyValue, yyOption1,
11232: yyError);
11233: } // End scope for v$g$3.
11234: }
11235: } // End scope for v$g$1.
11236:
11237: // Done.
11238: return yyError;
11239: }
11240:
11241: // =========================================================================
11242:
11243: /**
11244: * Parse nonterminal xtc.lang.jeannie.JeannieC.Declarator.
11245: *
11246: * @param yyStart The index.
11247: * @return The result.
11248: * @throws IOException Signals an I/O error.
11249: */
11250: private Result pJeannieC$Declarator(final int yyStart)
11251: throws IOException {
11252: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
11253: if (null == yyColumn.chunk4)
11254: yyColumn.chunk4 = new Chunk4();
11255: if (null == yyColumn.chunk4.fJeannieC$Declarator)
11256: yyColumn.chunk4.fJeannieC$Declarator = pJeannieC$Declarator$1(yyStart);
11257: return yyColumn.chunk4.fJeannieC$Declarator;
11258: }
11259:
11260: /** Actually parse xtc.lang.jeannie.JeannieC.Declarator. */
11261: private Result pJeannieC$Declarator$1(final int yyStart)
11262: throws IOException {
11263:
11264: Result yyResult;
11265: Node yyValue;
11266: ParseError yyError = ParseError.DUMMY;
11267:
11268: // Alternative <Pointer>.
11269:
11270: yyResult = pJeannieC$PointerDeclarator(yyStart);
11271: yyError = yyResult.select(yyError);
11272: if (yyResult.hasValue()) {
11273: yyValue = yyResult.semanticValue();
11274:
11275: return yyResult.createValue(yyValue, yyError);
11276: }
11277:
11278: // Alternative <Direct>.
11279:
11280: yyResult = pJeannieC$DirectDeclarator(yyStart);
11281: yyError = yyResult.select(yyError);
11282: if (yyResult.hasValue()) {
11283: yyValue = yyResult.semanticValue();
11284:
11285: return yyResult.createValue(yyValue, yyError);
11286: }
11287:
11288: // Done.
11289: return yyError;
11290: }
11291:
11292: // =========================================================================
11293:
11294: /**
11295: * Parse nonterminal xtc.lang.jeannie.JeannieC.PointerDeclarator.
11296: *
11297: * @param yyStart The index.
11298: * @return The result.
11299: * @throws IOException Signals an I/O error.
11300: */
11301: private Result pJeannieC$PointerDeclarator(final int yyStart)
11302: throws IOException {
11303:
11304: Result yyResult;
11305: Node yyValue;
11306: ParseError yyError = ParseError.DUMMY;
11307:
11308: // Alternative 1.
11309:
11310: yyResult = pJeannieC$Pointer(yyStart);
11311: yyError = yyResult.select(yyError);
11312: if (yyResult.hasValue()) {
11313: final Node v$g$1 = yyResult.semanticValue();
11314:
11315: yyResult = pJeannieC$DirectDeclarator(yyResult.index);
11316: yyError = yyResult.select(yyError);
11317: if (yyResult.hasValue()) {
11318: final Node v$g$2 = yyResult.semanticValue();
11319:
11320: yyValue = GNode.create("PointerDeclarator", v$g$1,
11321: v$g$2);
11322: yyValue.setLocation(location(yyStart));
11323:
11324: return yyResult.createValue(yyValue, yyError);
11325: }
11326: }
11327:
11328: // Done.
11329: return yyError;
11330: }
11331:
11332: // =========================================================================
11333:
11334: /**
11335: * Parse nonterminal xtc.lang.jeannie.JeannieC.Pointer.
11336: *
11337: * @param yyStart The index.
11338: * @return The result.
11339: * @throws IOException Signals an I/O error.
11340: */
11341: private Result pJeannieC$Pointer(final int yyStart)
11342: throws IOException {
11343: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
11344: if (null == yyColumn.chunk4)
11345: yyColumn.chunk4 = new Chunk4();
11346: if (null == yyColumn.chunk4.fJeannieC$Pointer)
11347: yyColumn.chunk4.fJeannieC$Pointer = pJeannieC$Pointer$1(yyStart);
11348: return yyColumn.chunk4.fJeannieC$Pointer;
11349: }
11350:
11351: /** Actually parse xtc.lang.jeannie.JeannieC.Pointer. */
11352: private Result pJeannieC$Pointer$1(final int yyStart)
11353: throws IOException {
11354: Result yyResult;
11355: int yyOption1;
11356: Node yyOpValue1;
11357: Node yyValue;
11358: ParseError yyError = ParseError.DUMMY;
11359:
11360: // Alternative 1.
11361:
11362: yyResult = pSymbol(yyStart);
11363: yyError = yyResult.select(yyError);
11364: if (yyResult.hasValue("*")) {
11365:
11366: yyResult = pJeannieC$TypeQualifierList(yyResult.index);
11367: yyError = yyResult.select(yyError);
11368: if (yyResult.hasValue()) {
11369: final Node v$g$1 = yyResult.semanticValue();
11370:
11371: yyOption1 = yyResult.index;
11372: yyOpValue1 = null;
11373:
11374: yyResult = pJeannieC$Pointer(yyOption1);
11375: yyError = yyResult.select(yyError);
11376: if (yyResult.hasValue()) {
11377: final Node v$el$1 = yyResult.semanticValue();
11378:
11379: yyOption1 = yyResult.index;
11380: yyOpValue1 = v$el$1;
11381: }
11382: { // Start scope for v$g$2.
11383: final Node v$g$2 = yyOpValue1;
11384:
11385: yyValue = GNode.create("Pointer", v$g$1, v$g$2);
11386: yyValue.setLocation(location(yyStart));
11387:
11388: return new SemanticValue(yyValue, yyOption1,
11389: yyError);
11390: } // End scope for v$g$2.
11391: }
11392: }
11393:
11394: // Done.
11395: yyError = yyError.select("pointer expected", yyStart);
11396: return yyError;
11397: }
11398:
11399: // =========================================================================
11400:
11401: /**
11402: * Parse nonterminal xtc.lang.jeannie.JeannieC.TypeQualifierList.
11403: *
11404: * @param yyStart The index.
11405: * @return The result.
11406: * @throws IOException Signals an I/O error.
11407: */
11408: private Result pJeannieC$TypeQualifierList(final int yyStart)
11409: throws IOException {
11410:
11411: Result yyResult;
11412: int yyRepetition1;
11413: Pair<Node> yyRepValue1;
11414: Node yyValue;
11415: ParseError yyError = ParseError.DUMMY;
11416:
11417: // Alternative 1.
11418:
11419: yyRepetition1 = yyStart;
11420: yyRepValue1 = Pair.empty();
11421: while (true) {
11422:
11423: yyResult = pJeannieC$TypeQualifierList$$Choice1(yyRepetition1);
11424: yyError = yyResult.select(yyError);
11425: if (yyResult.hasValue()) {
11426: final Node v$el$1 = yyResult.semanticValue();
11427:
11428: yyRepetition1 = yyResult.index;
11429: yyRepValue1 = new Pair<Node>(v$el$1, yyRepValue1);
11430: continue;
11431: }
11432: break;
11433: }
11434: { // Start scope for v$g$1.
11435: final Pair<Node> v$g$1 = yyRepValue1.reverse();
11436:
11437: yyValue = GNode.createFromPair("TypeQualifierList", v$g$1);
11438: yyValue.setLocation(location(yyStart));
11439:
11440: return new SemanticValue(yyValue, yyRepetition1, yyError);
11441: } // End scope for v$g$1.
11442: }
11443:
11444: // =========================================================================
11445:
11446: /**
11447: * Parse synthetic nonterminal JeannieC.TypeQualifierList$$Choice1.
11448: *
11449: * @param yyStart The index.
11450: * @return The result.
11451: * @throws IOException Signals an I/O error.
11452: */
11453: private Result pJeannieC$TypeQualifierList$$Choice1(
11454: final int yyStart) throws IOException {
11455:
11456: Result yyResult;
11457: Node yyValue;
11458: ParseError yyError = ParseError.DUMMY;
11459:
11460: // Alternative 1.
11461:
11462: yyResult = p$$Shared29(yyStart);
11463: yyError = yyResult.select(yyError);
11464: if (yyResult.hasValue()) {
11465: yyValue = yyResult.semanticValue();
11466:
11467: return yyResult.createValue(yyValue, yyError);
11468: }
11469:
11470: // Alternative 2.
11471:
11472: yyResult = pJeannieC$AttributeSpecifier(yyStart);
11473: yyError = yyResult.select(yyError);
11474: if (yyResult.hasValue()) {
11475: yyValue = yyResult.semanticValue();
11476:
11477: return yyResult.createValue(yyValue, yyError);
11478: }
11479:
11480: // Done.
11481: return yyError;
11482: }
11483:
11484: // =========================================================================
11485:
11486: /**
11487: * Parse nonterminal xtc.lang.jeannie.JeannieC.DirectDeclarator.
11488: *
11489: * @param yyStart The index.
11490: * @return The result.
11491: * @throws IOException Signals an I/O error.
11492: */
11493: private Result pJeannieC$DirectDeclarator(final int yyStart)
11494: throws IOException {
11495:
11496: Result yyResult;
11497: int yyBase;
11498: int yyRepetition1;
11499: Pair<Action<Node>> yyRepValue1;
11500: Node yyValue;
11501: ParseError yyError = ParseError.DUMMY;
11502:
11503: // Alternative <FullBase>.
11504:
11505: yyResult = pSymbol(yyStart);
11506: yyError = yyResult.select(yyError);
11507: if (yyResult.hasValue("(")) {
11508:
11509: yyResult = pJeannieC$AttributedDeclarator(yyResult.index);
11510: yyError = yyResult.select(yyError);
11511: if (yyResult.hasValue()) {
11512: final Node v$g$7 = yyResult.semanticValue();
11513:
11514: yyBase = yyResult.index;
11515: yyResult = pSymbol(yyBase);
11516: yyError = yyResult.select(yyError);
11517: if (yyResult.hasValue(")")) {
11518:
11519: yyRepetition1 = yyResult.index;
11520: yyRepValue1 = Pair.empty();
11521: while (true) {
11522:
11523: yyResult = pJeannieC$DirectDeclarator$$Tail1(yyRepetition1);
11524: yyError = yyResult.select(yyError);
11525: if (yyResult.hasValue()) {
11526: final Action<Node> v$8 = yyResult
11527: .semanticValue();
11528:
11529: yyRepetition1 = yyResult.index;
11530: yyRepValue1 = new Pair<Action<Node>>(v$8,
11531: yyRepValue1);
11532: continue;
11533: }
11534: break;
11535: }
11536: { // Start scope for v$9.
11537: final Pair<Action<Node>> v$9 = yyRepValue1
11538: .reverse();
11539:
11540: yyValue = apply(v$9, v$g$7, yyStart);
11541:
11542: return new SemanticValue(yyValue,
11543: yyRepetition1, yyError);
11544: } // End scope for v$9.
11545: } else {
11546: yyError = yyError.select("\")\" expected", yyBase);
11547: }
11548: }
11549: }
11550:
11551: // Alternative <SimpleBase>.
11552:
11553: yyResult = pJeannieC$SimpleDeclarator(yyStart);
11554: yyError = yyResult.select(yyError);
11555: if (yyResult.hasValue()) {
11556: final Node v$g$10 = yyResult.semanticValue();
11557:
11558: yyRepetition1 = yyResult.index;
11559: yyRepValue1 = Pair.empty();
11560: while (true) {
11561:
11562: yyResult = pJeannieC$DirectDeclarator$$Tail1(yyRepetition1);
11563: yyError = yyResult.select(yyError);
11564: if (yyResult.hasValue()) {
11565: final Action<Node> v$11 = yyResult.semanticValue();
11566:
11567: yyRepetition1 = yyResult.index;
11568: yyRepValue1 = new Pair<Action<Node>>(v$11,
11569: yyRepValue1);
11570: continue;
11571: }
11572: break;
11573: }
11574: { // Start scope for v$12.
11575: final Pair<Action<Node>> v$12 = yyRepValue1.reverse();
11576:
11577: yyValue = apply(v$12, v$g$10, yyStart);
11578:
11579: return new SemanticValue(yyValue, yyRepetition1,
11580: yyError);
11581: } // End scope for v$12.
11582: }
11583:
11584: // Done.
11585: yyError = yyError.select("direct declarator expected", yyStart);
11586: return yyError;
11587: }
11588:
11589: // =========================================================================
11590:
11591: /**
11592: * Parse synthetic nonterminal JeannieC.DirectDeclarator$$Tail1.
11593: *
11594: * @param yyStart The index.
11595: * @return The result.
11596: * @throws IOException Signals an I/O error.
11597: */
11598: private Result pJeannieC$DirectDeclarator$$Tail1(final int yyStart)
11599: throws IOException {
11600:
11601: Result yyResult;
11602: int yyBase;
11603: int yyOption1;
11604: Node yyOpValue1;
11605: Action<Node> yyValue;
11606: ParseError yyError = ParseError.DUMMY;
11607:
11608: // Alternative 1.
11609:
11610: yyResult = pSymbol(yyStart);
11611: yyError = yyResult.select(yyError);
11612: if (yyResult.hasValue("(")) {
11613:
11614: yyResult = pPushScope(yyResult.index);
11615: yyError = yyResult.select(yyError);
11616: if (yyResult.hasValue()) {
11617:
11618: final int yyChoice1 = yyResult.index;
11619:
11620: // Nested alternative 1.
11621:
11622: yyResult = pJeannieC$ParameterTypeList(yyChoice1);
11623: yyError = yyResult.select(yyError);
11624: if (yyResult.hasValue()) {
11625: final Node v$g$2 = yyResult.semanticValue();
11626:
11627: yyBase = yyResult.index;
11628: yyResult = pSymbol(yyBase);
11629: yyError = yyResult.select(yyError);
11630: if (yyResult.hasValue(")")) {
11631:
11632: yyResult = pParameterContext(yyResult.index);
11633: yyError = yyResult.select(yyError);
11634: if (yyResult.hasValue()) {
11635:
11636: yyResult = pJeannieC$JavaThrows(yyResult.index);
11637: yyError = yyResult.select(yyError);
11638: if (yyResult.hasValue()) {
11639: final Node javaThrows = yyResult
11640: .semanticValue();
11641:
11642: yyValue = new Action<Node>() {
11643: public Node run(Node v$1) {
11644: return GNode.create(
11645: "FunctionDeclarator",
11646: v$1, v$g$2, javaThrows);
11647: }
11648: };
11649:
11650: return yyResult.createValue(yyValue,
11651: yyError);
11652: }
11653: }
11654: } else {
11655: yyError = yyError.select("\")\" expected",
11656: yyBase);
11657: }
11658: }
11659:
11660: // Nested alternative 2.
11661:
11662: yyOption1 = yyChoice1;
11663: yyOpValue1 = null;
11664:
11665: yyResult = pJeannieC$IdentifierList(yyOption1);
11666: yyError = yyResult.select(yyError);
11667: if (yyResult.hasValue()) {
11668: final Node v$el$1 = yyResult.semanticValue();
11669:
11670: yyOption1 = yyResult.index;
11671: yyOpValue1 = v$el$1;
11672: }
11673: { // Start scope for v$g$3.
11674: final Node v$g$3 = yyOpValue1;
11675:
11676: yyBase = yyOption1;
11677: yyResult = pSymbol(yyBase);
11678: yyError = yyResult.select(yyError);
11679: if (yyResult.hasValue(")")) {
11680:
11681: yyResult = pParameterContext(yyResult.index);
11682: yyError = yyResult.select(yyError);
11683: if (yyResult.hasValue()) {
11684:
11685: yyResult = pJeannieC$JavaThrows(yyResult.index);
11686: yyError = yyResult.select(yyError);
11687: if (yyResult.hasValue()) {
11688: final Node javaThrows = yyResult
11689: .semanticValue();
11690:
11691: yyValue = new Action<Node>() {
11692: public Node run(Node v$1) {
11693: return GNode.create(
11694: "FunctionDeclarator",
11695: v$1, v$g$3, javaThrows);
11696: }
11697: };
11698:
11699: return yyResult.createValue(yyValue,
11700: yyError);
11701: }
11702: }
11703: } else {
11704: yyError = yyError.select("\")\" expected",
11705: yyBase);
11706: }
11707: } // End scope for v$g$3.
11708: }
11709: }
11710:
11711: // Alternative 2.
11712:
11713: yyResult = pSymbol(yyStart);
11714: yyError = yyResult.select(yyError);
11715: if (yyResult.hasValue("[")) {
11716:
11717: yyResult = pJeannieC$ArrayQualifierList(yyResult.index);
11718: yyError = yyResult.select(yyError);
11719: if (yyResult.hasValue()) {
11720: final Node v$g$4 = yyResult.semanticValue();
11721:
11722: final int yyChoice1 = yyResult.index;
11723:
11724: // Nested alternative 1.
11725:
11726: yyOption1 = yyChoice1;
11727: yyOpValue1 = null;
11728:
11729: yyResult = pJeannieC$AssignmentExpression(yyOption1);
11730: yyError = yyResult.select(yyError);
11731: if (yyResult.hasValue()) {
11732: final Node v$el$2 = yyResult.semanticValue();
11733:
11734: yyOption1 = yyResult.index;
11735: yyOpValue1 = v$el$2;
11736: }
11737: { // Start scope for v$g$5.
11738: final Node v$g$5 = yyOpValue1;
11739:
11740: yyBase = yyOption1;
11741: yyResult = pSymbol(yyBase);
11742: yyError = yyResult.select(yyError);
11743: if (yyResult.hasValue("]")) {
11744:
11745: yyValue = new Action<Node>() {
11746: public Node run(Node v$1) {
11747: return GNode.create("ArrayDeclarator",
11748: v$1, v$g$4, v$g$5);
11749: }
11750: };
11751:
11752: return yyResult.createValue(yyValue, yyError);
11753: } else {
11754: yyError = yyError.select("\"]\" expected",
11755: yyBase);
11756: }
11757: } // End scope for v$g$5.
11758:
11759: // Nested alternative 2.
11760:
11761: yyBase = yyChoice1;
11762: yyResult = pSymbol(yyBase);
11763: yyError = yyResult.select(yyError);
11764: if (yyResult.hasValue("*")) {
11765: final String v$g$6 = "*";
11766:
11767: yyBase = yyResult.index;
11768: yyResult = pSymbol(yyBase);
11769: yyError = yyResult.select(yyError);
11770: if (yyResult.hasValue("]")) {
11771:
11772: yyValue = new Action<Node>() {
11773: public Node run(Node v$1) {
11774: return GNode.create("ArrayDeclarator",
11775: v$1, v$g$4, v$g$6);
11776: }
11777: };
11778:
11779: return yyResult.createValue(yyValue, yyError);
11780: } else {
11781: yyError = yyError.select("\"]\" expected",
11782: yyBase);
11783: }
11784: } else {
11785: yyError = yyError.select("\"*\" expected", yyBase);
11786: }
11787: }
11788: }
11789:
11790: // Done.
11791: yyError = yyError.select("direct declarator expected", yyStart);
11792: return yyError;
11793: }
11794:
11795: // =========================================================================
11796:
11797: /**
11798: * Parse nonterminal xtc.lang.jeannie.JeannieC.VariableLength.
11799: *
11800: * @param yyStart The index.
11801: * @return The result.
11802: * @throws IOException Signals an I/O error.
11803: */
11804: private Result pJeannieC$VariableLength(final int yyStart)
11805: throws IOException {
11806:
11807: Result yyResult;
11808: Node yyValue;
11809: ParseError yyError = ParseError.DUMMY;
11810:
11811: // Alternative 1.
11812:
11813: yyResult = pSymbol(yyStart);
11814: yyError = yyResult.select(yyError);
11815: if (yyResult.hasValue("*")) {
11816:
11817: yyValue = GNode.create("VariableLength", false);
11818: yyValue.setLocation(location(yyStart));
11819:
11820: return yyResult.createValue(yyValue, yyError);
11821: }
11822:
11823: // Done.
11824: yyError = yyError.select("variable length expected", yyStart);
11825: return yyError;
11826: }
11827:
11828: // =========================================================================
11829:
11830: /**
11831: * Parse nonterminal xtc.lang.jeannie.JeannieC.SimpleDeclarator.
11832: *
11833: * @param yyStart The index.
11834: * @return The result.
11835: * @throws IOException Signals an I/O error.
11836: */
11837: private Result pJeannieC$SimpleDeclarator(final int yyStart)
11838: throws IOException {
11839:
11840: Result yyResult;
11841: Node yyValue;
11842: ParseError yyError = ParseError.DUMMY;
11843:
11844: // Alternative <Declarator>.
11845:
11846: yyResult = pCIdentifier$Identifier(yyStart);
11847: yyError = yyResult.select(yyError);
11848: if (yyResult.hasValue()) {
11849: final String id = yyResult.semanticValue();
11850:
11851: yyState.bind(toText(id));
11852:
11853: yyValue = GNode.create("SimpleDeclarator", id);
11854: yyValue.setLocation(location(yyStart));
11855:
11856: return yyResult.createValue(yyValue, yyError);
11857: }
11858:
11859: // Done.
11860: return yyError;
11861: }
11862:
11863: // =========================================================================
11864:
11865: /**
11866: * Parse nonterminal xtc.lang.jeannie.JeannieC.ParameterTypeList.
11867: *
11868: * @param yyStart The index.
11869: * @return The result.
11870: * @throws IOException Signals an I/O error.
11871: */
11872: private Result pJeannieC$ParameterTypeList(final int yyStart)
11873: throws IOException {
11874:
11875: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
11876: if (null == yyColumn.chunk4)
11877: yyColumn.chunk4 = new Chunk4();
11878: if (null == yyColumn.chunk4.fJeannieC$ParameterTypeList)
11879: yyColumn.chunk4.fJeannieC$ParameterTypeList = pJeannieC$ParameterTypeList$1(yyStart);
11880: return yyColumn.chunk4.fJeannieC$ParameterTypeList;
11881: }
11882:
11883: /** Actually parse xtc.lang.jeannie.JeannieC.ParameterTypeList. */
11884: private Result pJeannieC$ParameterTypeList$1(final int yyStart)
11885: throws IOException {
11886:
11887: Result yyResult;
11888: int yyBase;
11889: int yyOption1;
11890: String yyOpValue1;
11891: Node yyValue;
11892: ParseError yyError = ParseError.DUMMY;
11893:
11894: // Alternative 1.
11895:
11896: yyResult = pJeannieC$ParameterList(yyStart);
11897: yyError = yyResult.select(yyError);
11898: if (yyResult.hasValue()) {
11899: final Node v$g$1 = yyResult.semanticValue();
11900:
11901: yyOption1 = yyResult.index;
11902: yyOpValue1 = null;
11903:
11904: yyBase = yyOption1;
11905: yyResult = pSymbol(yyBase);
11906: yyError = yyResult.select(yyError);
11907: if (yyResult.hasValue(",")) {
11908:
11909: yyBase = yyResult.index;
11910: yyResult = pSymbol(yyBase);
11911: yyError = yyResult.select(yyError);
11912: if (yyResult.hasValue("...")) {
11913: final String v$el$1 = "...";
11914:
11915: yyOption1 = yyResult.index;
11916: yyOpValue1 = v$el$1;
11917: } else {
11918: yyError = yyError
11919: .select("\"...\" expected", yyBase);
11920: }
11921: } else {
11922: yyError = yyError.select("\",\" expected", yyBase);
11923: }
11924: { // Start scope for v$g$2.
11925: final String v$g$2 = yyOpValue1;
11926:
11927: yyValue = GNode.create("ParameterTypeList", v$g$1,
11928: v$g$2);
11929: yyValue.setLocation(location(yyStart));
11930:
11931: return new SemanticValue(yyValue, yyOption1, yyError);
11932: } // End scope for v$g$2.
11933: }
11934:
11935: // Done.
11936: return yyError;
11937: }
11938:
11939: // =========================================================================
11940:
11941: /**
11942: * Parse nonterminal xtc.lang.jeannie.JeannieC.ParameterList.
11943: *
11944: * @param yyStart The index.
11945: * @return The result.
11946: * @throws IOException Signals an I/O error.
11947: */
11948: private Result pJeannieC$ParameterList(final int yyStart)
11949: throws IOException {
11950:
11951: Result yyResult;
11952: int yyBase;
11953: int yyRepetition1;
11954: Pair<Node> yyRepValue1;
11955: Node yyValue;
11956: ParseError yyError = ParseError.DUMMY;
11957:
11958: // Alternative 1.
11959:
11960: yyResult = pJeannieC$ParameterDeclaration(yyStart);
11961: yyError = yyResult.select(yyError);
11962: if (yyResult.hasValue()) {
11963: final Node v$g$1 = yyResult.semanticValue();
11964:
11965: yyRepetition1 = yyResult.index;
11966: yyRepValue1 = Pair.empty();
11967: while (true) {
11968:
11969: yyBase = yyRepetition1;
11970: yyResult = pSymbol(yyBase);
11971: yyError = yyResult.select(yyError);
11972: if (yyResult.hasValue(",")) {
11973:
11974: yyResult = pJeannieC$ParameterDeclaration(yyResult.index);
11975: yyError = yyResult.select(yyError);
11976: if (yyResult.hasValue()) {
11977: final Node v$el$1 = yyResult.semanticValue();
11978:
11979: yyRepetition1 = yyResult.index;
11980: yyRepValue1 = new Pair<Node>(v$el$1,
11981: yyRepValue1);
11982: continue;
11983: }
11984: } else {
11985: yyError = yyError.select("\",\" expected", yyBase);
11986: }
11987: break;
11988: }
11989: { // Start scope for v$g$2.
11990: final Pair<Node> v$g$2 = yyRepValue1.reverse();
11991:
11992: yyValue = GNode.createFromPair("ParameterList", v$g$1,
11993: v$g$2);
11994: yyValue.setLocation(location(yyStart));
11995:
11996: return new SemanticValue(yyValue, yyRepetition1,
11997: yyError);
11998: } // End scope for v$g$2.
11999: }
12000:
12001: // Done.
12002: return yyError;
12003: }
12004:
12005: // =========================================================================
12006:
12007: /**
12008: * Parse nonterminal xtc.lang.jeannie.JeannieC.ParameterDeclaration.
12009: *
12010: * @param yyStart The index.
12011: * @return The result.
12012: * @throws IOException Signals an I/O error.
12013: */
12014: private Result pJeannieC$ParameterDeclaration(final int yyStart)
12015: throws IOException {
12016:
12017: Result yyResult;
12018: int yyOption1;
12019: Node yyOpValue1;
12020: Node yyValue;
12021: ParseError yyError = ParseError.DUMMY;
12022:
12023: // Start a state modification.
12024: yyState.start();
12025:
12026: // Alternative 1.
12027:
12028: yyResult = pJeannieC$DeclarationSpecifiers(yyStart);
12029: yyError = yyResult.select(yyError);
12030: if (yyResult.hasValue()) {
12031: final Node v$g$1 = yyResult.semanticValue();
12032:
12033: final int yyChoice1 = yyResult.index;
12034:
12035: // Nested alternative 1.
12036:
12037: yyResult = pJeannieC$Declarator(yyChoice1);
12038: yyError = yyResult.select(yyError);
12039: if (yyResult.hasValue()) {
12040: final Node v$g$2 = yyResult.semanticValue();
12041:
12042: yyOption1 = yyResult.index;
12043: yyOpValue1 = null;
12044:
12045: yyResult = pJeannieC$AttributeSpecifierList(yyOption1);
12046: yyError = yyResult.select(yyError);
12047: if (yyResult.hasValue()) {
12048: final Node v$el$1 = yyResult.semanticValue();
12049:
12050: yyOption1 = yyResult.index;
12051: yyOpValue1 = v$el$1;
12052: }
12053: { // Start scope for v$g$3.
12054: final Node v$g$3 = yyOpValue1;
12055:
12056: yyValue = GNode.create("ParameterDeclaration",
12057: v$g$1, v$g$2, v$g$3);
12058: yyValue.setLocation(location(yyStart));
12059:
12060: // Commit the state modification.
12061: yyState.commit();
12062:
12063: return new SemanticValue(yyValue, yyOption1,
12064: yyError);
12065: } // End scope for v$g$3.
12066: }
12067:
12068: // Nested alternative 2.
12069:
12070: yyOption1 = yyChoice1;
12071: yyOpValue1 = null;
12072:
12073: yyResult = pJeannieC$AbstractDeclarator(yyOption1);
12074: yyError = yyResult.select(yyError);
12075: if (yyResult.hasValue()) {
12076: final Node v$el$2 = yyResult.semanticValue();
12077:
12078: yyOption1 = yyResult.index;
12079: yyOpValue1 = v$el$2;
12080: }
12081: { // Start scope for v$g$4.
12082: final Node v$g$4 = yyOpValue1;
12083:
12084: yyOpValue1 = null;
12085:
12086: yyResult = pJeannieC$AttributeSpecifierList(yyOption1);
12087: yyError = yyResult.select(yyError);
12088: if (yyResult.hasValue()) {
12089: final Node v$el$3 = yyResult.semanticValue();
12090:
12091: yyOption1 = yyResult.index;
12092: yyOpValue1 = v$el$3;
12093: }
12094: { // Start scope for v$g$5.
12095: final Node v$g$5 = yyOpValue1;
12096:
12097: yyValue = GNode.create("ParameterDeclaration",
12098: v$g$1, v$g$4, v$g$5);
12099: yyValue.setLocation(location(yyStart));
12100:
12101: // Commit the state modification.
12102: yyState.commit();
12103:
12104: return new SemanticValue(yyValue, yyOption1,
12105: yyError);
12106: } // End scope for v$g$5.
12107: } // End scope for v$g$4.
12108: }
12109:
12110: // Abort the state modification.
12111: yyState.abort();
12112:
12113: // Done.
12114: return yyError;
12115: }
12116:
12117: // =========================================================================
12118:
12119: /**
12120: * Parse nonterminal xtc.lang.jeannie.JeannieC.AttributedAbstractDeclarator.
12121: *
12122: * @param yyStart The index.
12123: * @return The result.
12124: * @throws IOException Signals an I/O error.
12125: */
12126: private Result pJeannieC$AttributedAbstractDeclarator(
12127: final int yyStart) throws IOException {
12128:
12129: Result yyResult;
12130: int yyOption1;
12131: Node yyOpValue1;
12132: Node yyValue;
12133: ParseError yyError = ParseError.DUMMY;
12134:
12135: // Alternative 1.
12136:
12137: yyOption1 = yyStart;
12138: yyOpValue1 = null;
12139:
12140: yyResult = pJeannieC$AttributeSpecifierList(yyOption1);
12141: yyError = yyResult.select(yyError);
12142: if (yyResult.hasValue()) {
12143: final Node v$el$1 = yyResult.semanticValue();
12144:
12145: yyOption1 = yyResult.index;
12146: yyOpValue1 = v$el$1;
12147: }
12148: { // Start scope for v$g$1.
12149: final Node v$g$1 = yyOpValue1;
12150:
12151: yyResult = pJeannieC$AbstractDeclarator(yyOption1);
12152: yyError = yyResult.select(yyError);
12153: if (yyResult.hasValue()) {
12154: final Node v$g$2 = yyResult.semanticValue();
12155:
12156: yyValue = GNode.create("AttributedAbstractDeclarator",
12157: v$g$1, v$g$2);
12158: yyValue.setLocation(location(yyStart));
12159:
12160: return yyResult.createValue(yyValue, yyError);
12161: }
12162: } // End scope for v$g$1.
12163:
12164: // Done.
12165: return yyError;
12166: }
12167:
12168: // =========================================================================
12169:
12170: /**
12171: * Parse nonterminal xtc.lang.jeannie.JeannieC.AbstractDeclarator.
12172: *
12173: * @param yyStart The index.
12174: * @return The result.
12175: * @throws IOException Signals an I/O error.
12176: */
12177: private Result pJeannieC$AbstractDeclarator(final int yyStart)
12178: throws IOException {
12179:
12180: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
12181: if (null == yyColumn.chunk4)
12182: yyColumn.chunk4 = new Chunk4();
12183: if (null == yyColumn.chunk4.fJeannieC$AbstractDeclarator)
12184: yyColumn.chunk4.fJeannieC$AbstractDeclarator = pJeannieC$AbstractDeclarator$1(yyStart);
12185: return yyColumn.chunk4.fJeannieC$AbstractDeclarator;
12186: }
12187:
12188: /** Actually parse xtc.lang.jeannie.JeannieC.AbstractDeclarator. */
12189: private Result pJeannieC$AbstractDeclarator$1(final int yyStart)
12190: throws IOException {
12191:
12192: Result yyResult;
12193: int yyOption1;
12194: Node yyOpValue1;
12195: Node yyValue;
12196: ParseError yyError = ParseError.DUMMY;
12197:
12198: // Alternative 1.
12199:
12200: yyOption1 = yyStart;
12201: yyOpValue1 = null;
12202:
12203: yyResult = pJeannieC$Pointer(yyOption1);
12204: yyError = yyResult.select(yyError);
12205: if (yyResult.hasValue()) {
12206: final Node v$el$1 = yyResult.semanticValue();
12207:
12208: yyOption1 = yyResult.index;
12209: yyOpValue1 = v$el$1;
12210: }
12211: { // Start scope for p.
12212: final Node p = yyOpValue1;
12213:
12214: yyResult = pJeannieC$DirectAbstractDeclarator(yyOption1);
12215: yyError = yyResult.select(yyError);
12216: if (yyResult.hasValue()) {
12217: final Node d = yyResult.semanticValue();
12218:
12219: if ((null != p) || (null != d)) {
12220:
12221: yyValue = GNode.create("AbstractDeclarator", p, d);
12222: yyValue.setLocation(location(yyStart));
12223:
12224: return yyResult.createValue(yyValue, yyError);
12225: }
12226: }
12227: } // End scope for p.
12228:
12229: // Done.
12230: yyError = yyError.select("abstract declarator expected",
12231: yyStart);
12232: return yyError;
12233: }
12234:
12235: // =========================================================================
12236:
12237: /**
12238: * Parse nonterminal xtc.lang.jeannie.JeannieC.DirectAbstractDeclarator.
12239: *
12240: * @param yyStart The index.
12241: * @return The result.
12242: * @throws IOException Signals an I/O error.
12243: */
12244: private Result pJeannieC$DirectAbstractDeclarator(final int yyStart)
12245: throws IOException {
12246:
12247: Result yyResult;
12248: int yyBase;
12249: int yyRepetition1;
12250: Pair<Action<Node>> yyRepValue1;
12251: Node yyValue;
12252: ParseError yyError = ParseError.DUMMY;
12253:
12254: // Alternative <Parenthesized>.
12255:
12256: yyResult = pSymbol(yyStart);
12257: yyError = yyResult.select(yyError);
12258: if (yyResult.hasValue("(")) {
12259:
12260: yyResult = pJeannieC$AttributedAbstractDeclarator(yyResult.index);
12261: yyError = yyResult.select(yyError);
12262: if (yyResult.hasValue()) {
12263: final Node v$g$7 = yyResult.semanticValue();
12264:
12265: yyBase = yyResult.index;
12266: yyResult = pSymbol(yyBase);
12267: yyError = yyResult.select(yyError);
12268: if (yyResult.hasValue(")")) {
12269:
12270: yyRepetition1 = yyResult.index;
12271: yyRepValue1 = Pair.empty();
12272: while (true) {
12273:
12274: yyResult = pJeannieC$DirectAbstractDeclarator$$Tail1(yyRepetition1);
12275: yyError = yyResult.select(yyError);
12276: if (yyResult.hasValue()) {
12277: final Action<Node> v$8 = yyResult
12278: .semanticValue();
12279:
12280: yyRepetition1 = yyResult.index;
12281: yyRepValue1 = new Pair<Action<Node>>(v$8,
12282: yyRepValue1);
12283: continue;
12284: }
12285: break;
12286: }
12287: { // Start scope for v$9.
12288: final Pair<Action<Node>> v$9 = yyRepValue1
12289: .reverse();
12290:
12291: yyValue = apply(v$9, v$g$7, yyStart);
12292:
12293: return new SemanticValue(yyValue,
12294: yyRepetition1, yyError);
12295: } // End scope for v$9.
12296: } else {
12297: yyError = yyError.select("\")\" expected", yyBase);
12298: }
12299: }
12300: }
12301:
12302: // Alternative <Empty>.
12303:
12304: yyRepetition1 = yyStart;
12305: yyRepValue1 = Pair.empty();
12306: while (true) {
12307:
12308: yyResult = pJeannieC$DirectAbstractDeclarator$$Tail1(yyRepetition1);
12309: yyError = yyResult.select(yyError);
12310: if (yyResult.hasValue()) {
12311: final Action<Node> v$11 = yyResult.semanticValue();
12312:
12313: yyRepetition1 = yyResult.index;
12314: yyRepValue1 = new Pair<Action<Node>>(v$11, yyRepValue1);
12315: continue;
12316: }
12317: break;
12318: }
12319: { // Start scope for v$12.
12320: final Pair<Action<Node>> v$12 = yyRepValue1.reverse();
12321:
12322: yyValue = apply(v$12, null, yyStart);
12323:
12324: return new SemanticValue(yyValue, yyRepetition1, yyError);
12325: } // End scope for v$12.
12326: }
12327:
12328: // =========================================================================
12329:
12330: /**
12331: * Parse synthetic nonterminal JeannieC.DirectAbstractDeclarator$$Tail1.
12332: *
12333: * @param yyStart The index.
12334: * @return The result.
12335: * @throws IOException Signals an I/O error.
12336: */
12337: private Result pJeannieC$DirectAbstractDeclarator$$Tail1(
12338: final int yyStart) throws IOException {
12339:
12340: Result yyResult;
12341: int yyBase;
12342: int yyOption1;
12343: Node yyOpValue1;
12344: Action<Node> yyValue;
12345: ParseError yyError = ParseError.DUMMY;
12346:
12347: // Alternative 1.
12348:
12349: yyResult = pSymbol(yyStart);
12350: yyError = yyResult.select(yyError);
12351: if (yyResult.hasValue("[")) {
12352: final String v$g$2 = "[";
12353:
12354: final int yyChoice1 = yyResult.index;
12355:
12356: // Nested alternative 1.
12357:
12358: yyOption1 = yyChoice1;
12359: yyOpValue1 = null;
12360:
12361: yyResult = pJeannieC$AssignmentExpression(yyOption1);
12362: yyError = yyResult.select(yyError);
12363: if (yyResult.hasValue()) {
12364: final Node v$el$1 = yyResult.semanticValue();
12365:
12366: yyOption1 = yyResult.index;
12367: yyOpValue1 = v$el$1;
12368: }
12369: { // Start scope for v$g$3.
12370: final Node v$g$3 = yyOpValue1;
12371:
12372: yyBase = yyOption1;
12373: yyResult = pSymbol(yyBase);
12374: yyError = yyResult.select(yyError);
12375: if (yyResult.hasValue("]")) {
12376:
12377: yyValue = new Action<Node>() {
12378: public Node run(Node v$1) {
12379: return GNode.create(
12380: "DirectAbstractDeclarator", v$1,
12381: v$g$2, v$g$3);
12382: }
12383: };
12384:
12385: return yyResult.createValue(yyValue, yyError);
12386: } else {
12387: yyError = yyError.select("\"]\" expected", yyBase);
12388: }
12389: } // End scope for v$g$3.
12390:
12391: // Nested alternative 2.
12392:
12393: yyResult = pJeannieC$VariableLength(yyChoice1);
12394: yyError = yyResult.select(yyError);
12395: if (yyResult.hasValue()) {
12396: final Node v$g$4 = yyResult.semanticValue();
12397:
12398: yyBase = yyResult.index;
12399: yyResult = pSymbol(yyBase);
12400: yyError = yyResult.select(yyError);
12401: if (yyResult.hasValue("]")) {
12402:
12403: yyValue = new Action<Node>() {
12404: public Node run(Node v$1) {
12405: return GNode.create(
12406: "DirectAbstractDeclarator", v$1,
12407: v$g$2, v$g$4);
12408: }
12409: };
12410:
12411: return yyResult.createValue(yyValue, yyError);
12412: } else {
12413: yyError = yyError.select("\"]\" expected", yyBase);
12414: }
12415: }
12416: }
12417:
12418: // Alternative 2.
12419:
12420: yyResult = pSymbol(yyStart);
12421: yyError = yyResult.select(yyError);
12422: if (yyResult.hasValue("(")) {
12423: final String v$g$5 = "(";
12424:
12425: yyOption1 = yyResult.index;
12426: yyOpValue1 = null;
12427:
12428: yyResult = pJeannieC$ParameterTypeList(yyOption1);
12429: yyError = yyResult.select(yyError);
12430: if (yyResult.hasValue()) {
12431: final Node v$el$2 = yyResult.semanticValue();
12432:
12433: yyOption1 = yyResult.index;
12434: yyOpValue1 = v$el$2;
12435: }
12436: { // Start scope for v$g$6.
12437: final Node v$g$6 = yyOpValue1;
12438:
12439: yyBase = yyOption1;
12440: yyResult = pSymbol(yyBase);
12441: yyError = yyResult.select(yyError);
12442: if (yyResult.hasValue(")")) {
12443:
12444: yyValue = new Action<Node>() {
12445: public Node run(Node v$1) {
12446: return GNode.create(
12447: "DirectAbstractDeclarator", v$1,
12448: v$g$5, v$g$6);
12449: }
12450: };
12451:
12452: return yyResult.createValue(yyValue, yyError);
12453: } else {
12454: yyError = yyError.select("\")\" expected", yyBase);
12455: }
12456: } // End scope for v$g$6.
12457: }
12458:
12459: // Done.
12460: yyError = yyError.select("direct abstract declarator expected",
12461: yyStart);
12462: return yyError;
12463: }
12464:
12465: // =========================================================================
12466:
12467: /**
12468: * Parse nonterminal xtc.lang.jeannie.JeannieC.IdentifierList.
12469: *
12470: * @param yyStart The index.
12471: * @return The result.
12472: * @throws IOException Signals an I/O error.
12473: */
12474: private Result pJeannieC$IdentifierList(final int yyStart)
12475: throws IOException {
12476:
12477: Result yyResult;
12478: int yyBase;
12479: int yyRepetition1;
12480: Pair<String> yyRepValue1;
12481: Node yyValue;
12482: ParseError yyError = ParseError.DUMMY;
12483:
12484: // Alternative 1.
12485:
12486: yyResult = pCIdentifier$Identifier(yyStart);
12487: yyError = yyResult.select(yyError);
12488: if (yyResult.hasValue()) {
12489: final String id1 = yyResult.semanticValue();
12490:
12491: yyState.bind(toText(id1));
12492:
12493: yyRepetition1 = yyResult.index;
12494: yyRepValue1 = Pair.empty();
12495: while (true) {
12496:
12497: yyBase = yyRepetition1;
12498: yyResult = pSymbol(yyBase);
12499: yyError = yyResult.select(yyError);
12500: if (yyResult.hasValue(",")) {
12501:
12502: yyResult = pCIdentifier$Identifier(yyResult.index);
12503: yyError = yyResult.select(yyError);
12504: if (yyResult.hasValue()) {
12505: final String id2 = yyResult.semanticValue();
12506:
12507: yyState.bind(toText(id2));
12508:
12509: yyRepetition1 = yyResult.index;
12510: yyRepValue1 = new Pair<String>(id2, yyRepValue1);
12511: continue;
12512: }
12513: } else {
12514: yyError = yyError.select("\",\" expected", yyBase);
12515: }
12516: break;
12517: }
12518: { // Start scope for v$g$1.
12519: final Pair<String> v$g$1 = yyRepValue1.reverse();
12520:
12521: yyValue = GNode.createFromPair("IdentifierList", id1,
12522: v$g$1);
12523: yyValue.setLocation(location(yyStart));
12524:
12525: return new SemanticValue(yyValue, yyRepetition1,
12526: yyError);
12527: } // End scope for v$g$1.
12528: }
12529:
12530: // Done.
12531: return yyError;
12532: }
12533:
12534: // =========================================================================
12535:
12536: /**
12537: * Parse nonterminal xtc.lang.jeannie.JeannieC.ArrayQualifierList.
12538: *
12539: * @param yyStart The index.
12540: * @return The result.
12541: * @throws IOException Signals an I/O error.
12542: */
12543: private Result pJeannieC$ArrayQualifierList(final int yyStart)
12544: throws IOException {
12545:
12546: Result yyResult;
12547: int yyRepetition1;
12548: Pair<Node> yyRepValue1;
12549: Node yyValue;
12550: ParseError yyError = ParseError.DUMMY;
12551:
12552: // Alternative 1.
12553:
12554: yyRepetition1 = yyStart;
12555: yyRepValue1 = Pair.empty();
12556: while (true) {
12557:
12558: yyResult = pJeannieC$ArrayQualifierList$$Choice1(yyRepetition1);
12559: yyError = yyResult.select(yyError);
12560: if (yyResult.hasValue()) {
12561: final Node v$el$1 = yyResult.semanticValue();
12562:
12563: yyRepetition1 = yyResult.index;
12564: yyRepValue1 = new Pair<Node>(v$el$1, yyRepValue1);
12565: continue;
12566: }
12567: break;
12568: }
12569: { // Start scope for v$g$1.
12570: final Pair<Node> v$g$1 = yyRepValue1.reverse();
12571:
12572: yyValue = GNode.createFromPair("ArrayQualifierList", v$g$1);
12573: yyValue.setLocation(location(yyStart));
12574:
12575: return new SemanticValue(yyValue, yyRepetition1, yyError);
12576: } // End scope for v$g$1.
12577: }
12578:
12579: // =========================================================================
12580:
12581: /**
12582: * Parse synthetic nonterminal JeannieC.ArrayQualifierList$$Choice1.
12583: *
12584: * @param yyStart The index.
12585: * @return The result.
12586: * @throws IOException Signals an I/O error.
12587: */
12588: private Result pJeannieC$ArrayQualifierList$$Choice1(
12589: final int yyStart) throws IOException {
12590:
12591: Result yyResult;
12592: Node yyValue;
12593: ParseError yyError = ParseError.DUMMY;
12594:
12595: // Alternative 1.
12596:
12597: yyResult = pKeyword(yyStart);
12598: yyError = yyResult.select(yyError);
12599: if (yyResult.hasValue("static")) {
12600:
12601: yyValue = GNode.create("StaticSpecifier", false);
12602: yyValue.setLocation(location(yyStart));
12603:
12604: return yyResult.createValue(yyValue, yyError);
12605: }
12606:
12607: // Alternative 2.
12608:
12609: yyResult = pKeyword(yyStart);
12610: yyError = yyResult.select(yyError);
12611: if (yyResult.hasValue("volatile")) {
12612: final String v$g$1 = "volatile";
12613:
12614: yyValue = GNode.create("VolatileQualifier", v$g$1);
12615: yyValue.setLocation(location(yyStart));
12616:
12617: return yyResult.createValue(yyValue, yyError);
12618: }
12619:
12620: // Alternative 3.
12621:
12622: yyResult = pKeyword(yyStart);
12623: yyError = yyResult.select(yyError);
12624: if (yyResult.hasValue("__volatile")) {
12625: final String v$g$2 = "__volatile";
12626:
12627: yyValue = GNode.create("VolatileQualifier", v$g$2);
12628: yyValue.setLocation(location(yyStart));
12629:
12630: return yyResult.createValue(yyValue, yyError);
12631: }
12632:
12633: // Alternative 4.
12634:
12635: yyResult = pKeyword(yyStart);
12636: yyError = yyResult.select(yyError);
12637: if (yyResult.hasValue("__volatile__")) {
12638: final String v$g$3 = "__volatile__";
12639:
12640: yyValue = GNode.create("VolatileQualifier", v$g$3);
12641: yyValue.setLocation(location(yyStart));
12642:
12643: return yyResult.createValue(yyValue, yyError);
12644: }
12645:
12646: // Alternative 5.
12647:
12648: yyResult = pKeyword(yyStart);
12649: yyError = yyResult.select(yyError);
12650: if (yyResult.hasValue("restrict")) {
12651: final String v$g$1 = "restrict";
12652:
12653: yyValue = GNode.create("RestrictQualifier", v$g$1);
12654: yyValue.setLocation(location(yyStart));
12655:
12656: return yyResult.createValue(yyValue, yyError);
12657: }
12658:
12659: // Alternative 6.
12660:
12661: yyResult = pKeyword(yyStart);
12662: yyError = yyResult.select(yyError);
12663: if (yyResult.hasValue("__restrict")) {
12664: final String v$g$2 = "__restrict";
12665:
12666: yyValue = GNode.create("RestrictQualifier", v$g$2);
12667: yyValue.setLocation(location(yyStart));
12668:
12669: return yyResult.createValue(yyValue, yyError);
12670: }
12671:
12672: // Alternative 7.
12673:
12674: yyResult = pKeyword(yyStart);
12675: yyError = yyResult.select(yyError);
12676: if (yyResult.hasValue("__restrict__")) {
12677: final String v$g$3 = "__restrict__";
12678:
12679: yyValue = GNode.create("RestrictQualifier", v$g$3);
12680: yyValue.setLocation(location(yyStart));
12681:
12682: return yyResult.createValue(yyValue, yyError);
12683: }
12684:
12685: // Alternative 8.
12686:
12687: yyResult = pKeyword(yyStart);
12688: yyError = yyResult.select(yyError);
12689: if (yyResult.hasValue("const")) {
12690: final String v$g$1 = "const";
12691:
12692: yyValue = GNode.create("ConstantQualifier", v$g$1);
12693: yyValue.setLocation(location(yyStart));
12694:
12695: return yyResult.createValue(yyValue, yyError);
12696: }
12697:
12698: // Alternative 9.
12699:
12700: yyResult = pKeyword(yyStart);
12701: yyError = yyResult.select(yyError);
12702: if (yyResult.hasValue("__const")) {
12703: final String v$g$2 = "__const";
12704:
12705: yyValue = GNode.create("ConstantQualifier", v$g$2);
12706: yyValue.setLocation(location(yyStart));
12707:
12708: return yyResult.createValue(yyValue, yyError);
12709: }
12710:
12711: // Alternative 10.
12712:
12713: yyResult = pKeyword(yyStart);
12714: yyError = yyResult.select(yyError);
12715: if (yyResult.hasValue("__const__")) {
12716: final String v$g$3 = "__const__";
12717:
12718: yyValue = GNode.create("ConstantQualifier", v$g$3);
12719: yyValue.setLocation(location(yyStart));
12720:
12721: return yyResult.createValue(yyValue, yyError);
12722: }
12723:
12724: // Alternative 11.
12725:
12726: yyResult = pJeannieC$AttributeSpecifier(yyStart);
12727: yyError = yyResult.select(yyError);
12728: if (yyResult.hasValue()) {
12729: yyValue = yyResult.semanticValue();
12730:
12731: return yyResult.createValue(yyValue, yyError);
12732: }
12733:
12734: // Done.
12735: yyError = yyError.select("array qualifier list expected",
12736: yyStart);
12737: return yyError;
12738: }
12739:
12740: // =========================================================================
12741:
12742: /**
12743: * Parse synthetic nonterminal xtc.lang.jeannie.Debugger.$$Shared30.
12744: * This nonterminal represents the duplicate productions
12745: * xtc.lang.jeannie.JeannieC.FloatingPointTypeSpecifier
12746: * and xtc.lang.jeannie.DebuggerC.FloatingPointTypeSpecifier.
12747: *
12748: * @param yyStart The index.
12749: * @return The result.
12750: * @throws IOException Signals an I/O error.
12751: */
12752: private Result p$$Shared30(final int yyStart) throws IOException {
12753: Result yyResult;
12754: Node yyValue;
12755: ParseError yyError = ParseError.DUMMY;
12756:
12757: // Alternative 1.
12758:
12759: yyResult = pKeyword(yyStart);
12760: yyError = yyResult.select(yyError);
12761: if (yyResult.hasValue("_Complex")) {
12762: final String v$g$1 = "_Complex";
12763:
12764: yyValue = GNode.create("Complex", v$g$1);
12765: yyValue.setLocation(location(yyStart));
12766:
12767: return yyResult.createValue(yyValue, yyError);
12768: }
12769:
12770: // Alternative 2.
12771:
12772: yyResult = pKeyword(yyStart);
12773: yyError = yyResult.select(yyError);
12774: if (yyResult.hasValue("__complex__")) {
12775: final String v$g$2 = "__complex__";
12776:
12777: yyValue = GNode.create("Complex", v$g$2);
12778: yyValue.setLocation(location(yyStart));
12779:
12780: return yyResult.createValue(yyValue, yyError);
12781: }
12782:
12783: // Alternative 3.
12784:
12785: yyResult = pKeyword(yyStart);
12786: yyError = yyResult.select(yyError);
12787: if (yyResult.hasValue("double")) {
12788:
12789: yyValue = GNode.create("Double", false);
12790: yyValue.setLocation(location(yyStart));
12791:
12792: return yyResult.createValue(yyValue, yyError);
12793: }
12794:
12795: // Alternative 4.
12796:
12797: yyResult = pKeyword(yyStart);
12798: yyError = yyResult.select(yyError);
12799: if (yyResult.hasValue("float")) {
12800:
12801: yyValue = GNode.create("Float", false);
12802: yyValue.setLocation(location(yyStart));
12803:
12804: return yyResult.createValue(yyValue, yyError);
12805: }
12806:
12807: // Done.
12808: yyError = yyError.select(" expected", yyStart);
12809: return yyError;
12810: }
12811:
12812: // =========================================================================
12813:
12814: /**
12815: * Parse synthetic nonterminal xtc.lang.jeannie.Debugger.$$Shared31.
12816: * This nonterminal represents the duplicate productions
12817: * xtc.lang.jeannie.JeannieC.IntegerTypeSpecifier
12818: * and xtc.lang.jeannie.DebuggerC.IntegerTypeSpecifier.
12819: *
12820: * @param yyStart The index.
12821: * @return The result.
12822: * @throws IOException Signals an I/O error.
12823: */
12824: private Result p$$Shared31(final int yyStart) throws IOException {
12825: Result yyResult;
12826: Node yyValue;
12827: ParseError yyError = ParseError.DUMMY;
12828:
12829: // Alternative 1.
12830:
12831: yyResult = pKeyword(yyStart);
12832: yyError = yyResult.select(yyError);
12833: if (yyResult.hasValue("long")) {
12834:
12835: yyValue = GNode.create("Long", false);
12836: yyValue.setLocation(location(yyStart));
12837:
12838: return yyResult.createValue(yyValue, yyError);
12839: }
12840:
12841: // Alternative 2.
12842:
12843: yyResult = pKeyword(yyStart);
12844: yyError = yyResult.select(yyError);
12845: if (yyResult.hasValue("int")) {
12846:
12847: yyValue = GNode.create("Int", false);
12848: yyValue.setLocation(location(yyStart));
12849:
12850: return yyResult.createValue(yyValue, yyError);
12851: }
12852:
12853: // Alternative 3.
12854:
12855: yyResult = pKeyword(yyStart);
12856: yyError = yyResult.select(yyError);
12857: if (yyResult.hasValue("short")) {
12858:
12859: yyValue = GNode.create("Short", false);
12860: yyValue.setLocation(location(yyStart));
12861:
12862: return yyResult.createValue(yyValue, yyError);
12863: }
12864:
12865: // Alternative 4.
12866:
12867: yyResult = pKeyword(yyStart);
12868: yyError = yyResult.select(yyError);
12869: if (yyResult.hasValue("char")) {
12870:
12871: yyValue = GNode.create("Char", false);
12872: yyValue.setLocation(location(yyStart));
12873:
12874: return yyResult.createValue(yyValue, yyError);
12875: }
12876:
12877: // Alternative 5.
12878:
12879: yyResult = pKeyword(yyStart);
12880: yyError = yyResult.select(yyError);
12881: if (yyResult.hasValue("_Bool")) {
12882:
12883: yyValue = GNode.create("Bool", false);
12884: yyValue.setLocation(location(yyStart));
12885:
12886: return yyResult.createValue(yyValue, yyError);
12887: }
12888:
12889: // Alternative 6.
12890:
12891: yyResult = pKeyword(yyStart);
12892: yyError = yyResult.select(yyError);
12893: if (yyResult.hasValue("unsigned")) {
12894:
12895: yyValue = GNode.create("Unsigned", false);
12896: yyValue.setLocation(location(yyStart));
12897:
12898: return yyResult.createValue(yyValue, yyError);
12899: }
12900:
12901: // Alternative 7.
12902:
12903: yyResult = pKeyword(yyStart);
12904: yyError = yyResult.select(yyError);
12905: if (yyResult.hasValue("signed")) {
12906: final String v$g$1 = "signed";
12907:
12908: yyValue = GNode.create("Signed", v$g$1);
12909: yyValue.setLocation(location(yyStart));
12910:
12911: return yyResult.createValue(yyValue, yyError);
12912: }
12913:
12914: // Alternative 8.
12915:
12916: yyResult = pKeyword(yyStart);
12917: yyError = yyResult.select(yyError);
12918: if (yyResult.hasValue("__signed")) {
12919: final String v$g$2 = "__signed";
12920:
12921: yyValue = GNode.create("Signed", v$g$2);
12922: yyValue.setLocation(location(yyStart));
12923:
12924: return yyResult.createValue(yyValue, yyError);
12925: }
12926:
12927: // Alternative 9.
12928:
12929: yyResult = pKeyword(yyStart);
12930: yyError = yyResult.select(yyError);
12931: if (yyResult.hasValue("__signed__")) {
12932: final String v$g$3 = "__signed__";
12933:
12934: yyValue = GNode.create("Signed", v$g$3);
12935: yyValue.setLocation(location(yyStart));
12936:
12937: return yyResult.createValue(yyValue, yyError);
12938: }
12939:
12940: // Done.
12941: yyError = yyError.select(" expected", yyStart);
12942: return yyError;
12943: }
12944:
12945: // =========================================================================
12946:
12947: /**
12948: * Parse synthetic nonterminal xtc.lang.jeannie.Debugger.$$Shared9.
12949: * This nonterminal represents the duplicate productions
12950: * xtc.lang.jeannie.JeannieC.TypeofKeyword
12951: * and xtc.lang.jeannie.DebuggerC.TypeofKeyword.
12952: *
12953: * @param yyStart The index.
12954: * @return The result.
12955: * @throws IOException Signals an I/O error.
12956: */
12957: private Result p$$Shared9(final int yyStart) throws IOException {
12958: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
12959: if (null == yyColumn.chunk4)
12960: yyColumn.chunk4 = new Chunk4();
12961: if (null == yyColumn.chunk4.f$$Shared9)
12962: yyColumn.chunk4.f$$Shared9 = p$$Shared9$1(yyStart);
12963: return yyColumn.chunk4.f$$Shared9;
12964: }
12965:
12966: /** Actually parse xtc.lang.jeannie.Debugger.$$Shared9. */
12967: private Result p$$Shared9$1(final int yyStart) throws IOException {
12968: Result yyResult;
12969: Void yyValue;
12970: ParseError yyError = ParseError.DUMMY;
12971:
12972: // Alternative 1.
12973:
12974: yyResult = pKeyword(yyStart);
12975: yyError = yyResult.select(yyError);
12976: if (yyResult.hasValue("typeof")) {
12977:
12978: yyValue = null;
12979:
12980: return yyResult.createValue(yyValue, yyError);
12981: }
12982:
12983: // Alternative 2.
12984:
12985: yyResult = pKeyword(yyStart);
12986: yyError = yyResult.select(yyError);
12987: if (yyResult.hasValue("__typeof")) {
12988:
12989: yyValue = null;
12990:
12991: return yyResult.createValue(yyValue, yyError);
12992: }
12993:
12994: // Alternative 3.
12995:
12996: yyResult = pKeyword(yyStart);
12997: yyError = yyResult.select(yyError);
12998: if (yyResult.hasValue("__typeof__")) {
12999:
13000: yyValue = null;
13001:
13002: return yyResult.createValue(yyValue, yyError);
13003: }
13004:
13005: // Done.
13006: yyError = yyError.select(" expected", yyStart);
13007: return yyError;
13008: }
13009:
13010: // =========================================================================
13011:
13012: /**
13013: * Parse nonterminal xtc.lang.jeannie.JeannieC.Initializer.
13014: *
13015: * @param yyStart The index.
13016: * @return The result.
13017: * @throws IOException Signals an I/O error.
13018: */
13019: private Result pJeannieC$Initializer(final int yyStart)
13020: throws IOException {
13021: Result yyResult;
13022: int yyBase;
13023: int yyOption1;
13024: Node yyValue;
13025: ParseError yyError = ParseError.DUMMY;
13026:
13027: // Alternative <Complex>.
13028:
13029: yyResult = pSymbol(yyStart);
13030: yyError = yyResult.select(yyError);
13031: if (yyResult.hasValue("{")) {
13032:
13033: yyResult = pJeannieC$InitializerList(yyResult.index);
13034: yyError = yyResult.select(yyError);
13035: if (yyResult.hasValue()) {
13036: yyValue = yyResult.semanticValue();
13037:
13038: yyOption1 = yyResult.index;
13039:
13040: yyBase = yyOption1;
13041: yyResult = pSymbol(yyBase);
13042: yyError = yyResult.select(yyError);
13043: if (yyResult.hasValue(",")) {
13044:
13045: yyOption1 = yyResult.index;
13046: } else {
13047: yyError = yyError.select("\",\" expected", yyBase);
13048: }
13049:
13050: yyBase = yyOption1;
13051: yyResult = pSymbol(yyBase);
13052: yyError = yyResult.select(yyError);
13053: if (yyResult.hasValue("}")) {
13054:
13055: return yyResult.createValue(yyValue, yyError);
13056: } else {
13057: yyError = yyError.select("\"}\" expected", yyBase);
13058: }
13059: }
13060: }
13061:
13062: // Alternative <Simple>.
13063:
13064: yyResult = pJeannieC$AssignmentExpression(yyStart);
13065: yyError = yyResult.select(yyError);
13066: if (yyResult.hasValue()) {
13067: yyValue = yyResult.semanticValue();
13068:
13069: return yyResult.createValue(yyValue, yyError);
13070: }
13071:
13072: // Done.
13073: yyError = yyError.select("initializer expected", yyStart);
13074: return yyError;
13075: }
13076:
13077: // =========================================================================
13078:
13079: /**
13080: * Parse nonterminal xtc.lang.jeannie.JeannieC.InitializerList.
13081: *
13082: * @param yyStart The index.
13083: * @return The result.
13084: * @throws IOException Signals an I/O error.
13085: */
13086: private Result pJeannieC$InitializerList(final int yyStart)
13087: throws IOException {
13088:
13089: Result yyResult;
13090: int yyBase;
13091: int yyRepetition1;
13092: Pair<Node> yyRepValue1;
13093: Node yyValue;
13094: ParseError yyError = ParseError.DUMMY;
13095:
13096: // Alternative 1.
13097:
13098: yyResult = pJeannieC$InitializerListEntry(yyStart);
13099: yyError = yyResult.select(yyError);
13100: if (yyResult.hasValue()) {
13101: final Node v$g$1 = yyResult.semanticValue();
13102:
13103: yyRepetition1 = yyResult.index;
13104: yyRepValue1 = Pair.empty();
13105: while (true) {
13106:
13107: yyBase = yyRepetition1;
13108: yyResult = pSymbol(yyBase);
13109: yyError = yyResult.select(yyError);
13110: if (yyResult.hasValue(",")) {
13111:
13112: yyResult = pJeannieC$InitializerListEntry(yyResult.index);
13113: yyError = yyResult.select(yyError);
13114: if (yyResult.hasValue()) {
13115: final Node v$el$1 = yyResult.semanticValue();
13116:
13117: yyRepetition1 = yyResult.index;
13118: yyRepValue1 = new Pair<Node>(v$el$1,
13119: yyRepValue1);
13120: continue;
13121: }
13122: } else {
13123: yyError = yyError.select("\",\" expected", yyBase);
13124: }
13125: break;
13126: }
13127: { // Start scope for v$g$2.
13128: final Pair<Node> v$g$2 = yyRepValue1.reverse();
13129:
13130: yyValue = GNode.createFromPair("InitializerList",
13131: v$g$1, v$g$2);
13132: yyValue.setLocation(location(yyStart));
13133:
13134: return new SemanticValue(yyValue, yyRepetition1,
13135: yyError);
13136: } // End scope for v$g$2.
13137: }
13138:
13139: // Alternative 2.
13140:
13141: if (GCC) {
13142:
13143: yyValue = GNode.create("InitializerList", false);
13144: yyValue.setLocation(location(yyStart));
13145:
13146: return new SemanticValue(yyValue, yyStart, yyError);
13147: }
13148:
13149: // Done.
13150: yyError = yyError.select("initializer list expected", yyStart);
13151: return yyError;
13152: }
13153:
13154: // =========================================================================
13155:
13156: /**
13157: * Parse nonterminal xtc.lang.jeannie.JeannieC.InitializerListEntry.
13158: *
13159: * @param yyStart The index.
13160: * @return The result.
13161: * @throws IOException Signals an I/O error.
13162: */
13163: private Result pJeannieC$InitializerListEntry(final int yyStart)
13164: throws IOException {
13165:
13166: Result yyResult;
13167: int yyOption1;
13168: Node yyOpValue1;
13169: Node yyValue;
13170: ParseError yyError = ParseError.DUMMY;
13171:
13172: // Alternative 1.
13173:
13174: yyOption1 = yyStart;
13175: yyOpValue1 = null;
13176:
13177: yyResult = pJeannieC$Designation(yyOption1);
13178: yyError = yyResult.select(yyError);
13179: if (yyResult.hasValue()) {
13180: final Node v$el$1 = yyResult.semanticValue();
13181:
13182: yyOption1 = yyResult.index;
13183: yyOpValue1 = v$el$1;
13184: }
13185: { // Start scope for v$g$1.
13186: final Node v$g$1 = yyOpValue1;
13187:
13188: yyResult = pJeannieC$Initializer(yyOption1);
13189: yyError = yyResult.select(yyError);
13190: if (yyResult.hasValue()) {
13191: final Node v$g$2 = yyResult.semanticValue();
13192:
13193: yyValue = GNode.create("InitializerListEntry", v$g$1,
13194: v$g$2);
13195: yyValue.setLocation(location(yyStart));
13196:
13197: return yyResult.createValue(yyValue, yyError);
13198: }
13199: } // End scope for v$g$1.
13200:
13201: // Done.
13202: return yyError;
13203: }
13204:
13205: // =========================================================================
13206:
13207: /**
13208: * Parse nonterminal xtc.lang.jeannie.JeannieC.Designation.
13209: *
13210: * @param yyStart The index.
13211: * @return The result.
13212: * @throws IOException Signals an I/O error.
13213: */
13214: private Result pJeannieC$Designation(final int yyStart)
13215: throws IOException {
13216: Result yyResult;
13217: int yyBase;
13218: int yyRepetition1;
13219: boolean yyRepeated1;
13220: Pair<Node> yyRepValue1;
13221: Node yyValue;
13222: ParseError yyError = ParseError.DUMMY;
13223:
13224: // Alternative <Standard>.
13225:
13226: yyRepetition1 = yyStart;
13227: yyRepeated1 = false;
13228: yyRepValue1 = Pair.empty();
13229: while (true) {
13230:
13231: yyResult = pJeannieC$Designator(yyRepetition1);
13232: yyError = yyResult.select(yyError);
13233: if (yyResult.hasValue()) {
13234: final Node v$el$1 = yyResult.semanticValue();
13235:
13236: yyRepetition1 = yyResult.index;
13237: yyRepeated1 = true;
13238: yyRepValue1 = new Pair<Node>(v$el$1, yyRepValue1);
13239: continue;
13240: }
13241: break;
13242: }
13243:
13244: if (yyRepeated1) {
13245: final Pair<Node> v$g$1 = yyRepValue1.reverse();
13246:
13247: yyBase = yyRepetition1;
13248: yyResult = pSymbol(yyBase);
13249: yyError = yyResult.select(yyError);
13250: if (yyResult.hasValue("=")) {
13251:
13252: yyValue = GNode.createFromPair("Designation", v$g$1);
13253: yyValue.setLocation(location(yyStart));
13254:
13255: return yyResult.createValue(yyValue, yyError);
13256: } else {
13257: yyError = yyError.select("\"=\" expected", yyBase);
13258: }
13259: }
13260:
13261: // Alternative 2.
13262:
13263: if (GCC) {
13264:
13265: final int yyChoice1 = yyStart;
13266:
13267: // Nested alternative 1.
13268:
13269: yyResult = pJeannieC$ObsoleteArrayDesignation(yyChoice1);
13270: yyError = yyResult.select(yyError);
13271: if (yyResult.hasValue()) {
13272: yyValue = yyResult.semanticValue();
13273:
13274: return yyResult.createValue(yyValue, yyError);
13275: }
13276:
13277: // Nested alternative 2.
13278:
13279: yyResult = pJeannieC$ObsoleteFieldDesignation(yyChoice1);
13280: yyError = yyResult.select(yyError);
13281: if (yyResult.hasValue()) {
13282: yyValue = yyResult.semanticValue();
13283:
13284: return yyResult.createValue(yyValue, yyError);
13285: }
13286: }
13287:
13288: // Done.
13289: yyError = yyError.select("designation expected", yyStart);
13290: return yyError;
13291: }
13292:
13293: // =========================================================================
13294:
13295: /**
13296: * Parse nonterminal xtc.lang.jeannie.JeannieC.Designator.
13297: *
13298: * @param yyStart The index.
13299: * @return The result.
13300: * @throws IOException Signals an I/O error.
13301: */
13302: private Result pJeannieC$Designator(final int yyStart)
13303: throws IOException {
13304: Result yyResult;
13305: int yyBase;
13306: Node yyValue;
13307: ParseError yyError = ParseError.DUMMY;
13308:
13309: // Alternative <Array>.
13310:
13311: yyResult = pSymbol(yyStart);
13312: yyError = yyResult.select(yyError);
13313: if (yyResult.hasValue("[")) {
13314: final String v$g$1 = "[";
13315:
13316: yyResult = pJeannieC$ConditionalExpression(yyResult.index);
13317: yyError = yyResult.select(yyError);
13318: if (yyResult.hasValue()) {
13319: final Node v$g$2 = yyResult.semanticValue();
13320:
13321: yyBase = yyResult.index;
13322: yyResult = pSymbol(yyBase);
13323: yyError = yyResult.select(yyError);
13324: if (yyResult.hasValue("]")) {
13325:
13326: yyValue = GNode.create("Designator", v$g$1, v$g$2);
13327: yyValue.setLocation(location(yyStart));
13328:
13329: return yyResult.createValue(yyValue, yyError);
13330: } else {
13331: yyError = yyError.select("\"]\" expected", yyBase);
13332: }
13333: }
13334: }
13335:
13336: // Alternative <ArrayRange>.
13337:
13338: if (GCC) {
13339:
13340: yyResult = pSymbol(yyStart);
13341: yyError = yyResult.select(yyError);
13342: if (yyResult.hasValue("[")) {
13343: final String v$g$3 = "[";
13344:
13345: yyResult = pJeannieC$ConditionalExpression(yyResult.index);
13346: yyError = yyResult.select(yyError);
13347: if (yyResult.hasValue()) {
13348: final Node v$g$4 = yyResult.semanticValue();
13349:
13350: yyBase = yyResult.index;
13351: yyResult = pSymbol(yyBase);
13352: yyError = yyResult.select(yyError);
13353: if (yyResult.hasValue("...")) {
13354:
13355: yyResult = pJeannieC$ConditionalExpression(yyResult.index);
13356: yyError = yyResult.select(yyError);
13357: if (yyResult.hasValue()) {
13358: final Node v$g$5 = yyResult.semanticValue();
13359:
13360: yyBase = yyResult.index;
13361: yyResult = pSymbol(yyBase);
13362: yyError = yyResult.select(yyError);
13363: if (yyResult.hasValue("]")) {
13364:
13365: yyValue = GNode.create("Designator",
13366: v$g$3, v$g$4, v$g$5);
13367: yyValue.setLocation(location(yyStart));
13368:
13369: return yyResult.createValue(yyValue,
13370: yyError);
13371: } else {
13372: yyError = yyError.select(
13373: "\"]\" expected", yyBase);
13374: }
13375: }
13376: } else {
13377: yyError = yyError.select("\"...\" expected",
13378: yyBase);
13379: }
13380: }
13381: }
13382: }
13383:
13384: // Alternative <Structure>.
13385:
13386: yyResult = pSymbol(yyStart);
13387: yyError = yyResult.select(yyError);
13388: if (yyResult.hasValue(".")) {
13389: final String v$g$6 = ".";
13390:
13391: yyResult = pJeannieC$PrimaryIdentifier(yyResult.index);
13392: yyError = yyResult.select(yyError);
13393: if (yyResult.hasValue()) {
13394: final Node v$g$7 = yyResult.semanticValue();
13395:
13396: yyValue = GNode.create("Designator", v$g$6, v$g$7);
13397: yyValue.setLocation(location(yyStart));
13398:
13399: return yyResult.createValue(yyValue, yyError);
13400: }
13401: }
13402:
13403: // Done.
13404: yyError = yyError.select("designator expected", yyStart);
13405: return yyError;
13406: }
13407:
13408: // =========================================================================
13409:
13410: /**
13411: * Parse nonterminal xtc.lang.jeannie.JeannieC.ObsoleteArrayDesignation.
13412: *
13413: * @param yyStart The index.
13414: * @return The result.
13415: * @throws IOException Signals an I/O error.
13416: */
13417: private Result pJeannieC$ObsoleteArrayDesignation(final int yyStart)
13418: throws IOException {
13419:
13420: Result yyResult;
13421: int yyBase;
13422: Node yyValue;
13423: ParseError yyError = ParseError.DUMMY;
13424:
13425: // Alternative 1.
13426:
13427: yyResult = pSymbol(yyStart);
13428: yyError = yyResult.select(yyError);
13429: if (yyResult.hasValue("[")) {
13430: final String v$g$1 = "[";
13431:
13432: yyResult = pJeannieC$ConditionalExpression(yyResult.index);
13433: yyError = yyResult.select(yyError);
13434: if (yyResult.hasValue()) {
13435: final Node v$g$2 = yyResult.semanticValue();
13436:
13437: final int yyChoice1 = yyResult.index;
13438:
13439: // Nested alternative 1.
13440:
13441: yyBase = yyChoice1;
13442: yyResult = pSymbol(yyBase);
13443: yyError = yyResult.select(yyError);
13444: if (yyResult.hasValue("]")) {
13445:
13446: yyValue = GNode.create("ObsoleteArrayDesignation",
13447: v$g$1, v$g$2);
13448: yyValue.setLocation(location(yyStart));
13449:
13450: return yyResult.createValue(yyValue, yyError);
13451: } else {
13452: yyError = yyError.select("\"]\" expected", yyBase);
13453: }
13454:
13455: // Nested alternative 2.
13456:
13457: yyBase = yyChoice1;
13458: yyResult = pSymbol(yyBase);
13459: yyError = yyResult.select(yyError);
13460: if (yyResult.hasValue("...")) {
13461:
13462: yyResult = pJeannieC$ConditionalExpression(yyResult.index);
13463: yyError = yyResult.select(yyError);
13464: if (yyResult.hasValue()) {
13465: final Node v$g$3 = yyResult.semanticValue();
13466:
13467: yyBase = yyResult.index;
13468: yyResult = pSymbol(yyBase);
13469: yyError = yyResult.select(yyError);
13470: if (yyResult.hasValue("]")) {
13471:
13472: yyValue = GNode.create(
13473: "ObsoleteArrayDesignation", v$g$1,
13474: v$g$2, v$g$3);
13475: yyValue.setLocation(location(yyStart));
13476:
13477: return yyResult.createValue(yyValue,
13478: yyError);
13479: } else {
13480: yyError = yyError.select("\"]\" expected",
13481: yyBase);
13482: }
13483: }
13484: } else {
13485: yyError = yyError
13486: .select("\"...\" expected", yyBase);
13487: }
13488: }
13489: }
13490:
13491: // Done.
13492: yyError = yyError.select("obsolete array designation expected",
13493: yyStart);
13494: return yyError;
13495: }
13496:
13497: // =========================================================================
13498:
13499: /**
13500: * Parse nonterminal xtc.lang.jeannie.JeannieC.ObsoleteFieldDesignation.
13501: *
13502: * @param yyStart The index.
13503: * @return The result.
13504: * @throws IOException Signals an I/O error.
13505: */
13506: private Result pJeannieC$ObsoleteFieldDesignation(final int yyStart)
13507: throws IOException {
13508:
13509: Result yyResult;
13510: int yyBase;
13511: Node yyValue;
13512: ParseError yyError = ParseError.DUMMY;
13513:
13514: // Alternative 1.
13515:
13516: yyResult = pCIdentifier$Identifier(yyStart);
13517: yyError = yyResult.select(yyError);
13518: if (yyResult.hasValue()) {
13519: final String v$g$1 = yyResult.semanticValue();
13520:
13521: yyBase = yyResult.index;
13522: yyResult = pSymbol(yyBase);
13523: yyError = yyResult.select(yyError);
13524: if (yyResult.hasValue(":")) {
13525:
13526: yyValue = GNode.create("ObsoleteFieldDesignation",
13527: v$g$1);
13528: yyValue.setLocation(location(yyStart));
13529:
13530: return yyResult.createValue(yyValue, yyError);
13531: } else {
13532: yyError = yyError.select("\":\" expected", yyBase);
13533: }
13534: }
13535:
13536: // Done.
13537: return yyError;
13538: }
13539:
13540: // =========================================================================
13541:
13542: /**
13543: * Parse nonterminal xtc.lang.jeannie.JeannieC.TypeName.
13544: *
13545: * @param yyStart The index.
13546: * @return The result.
13547: * @throws IOException Signals an I/O error.
13548: */
13549: private Result pJeannieC$TypeName(final int yyStart)
13550: throws IOException {
13551: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
13552: if (null == yyColumn.chunk4)
13553: yyColumn.chunk4 = new Chunk4();
13554: if (null == yyColumn.chunk4.fJeannieC$TypeName)
13555: yyColumn.chunk4.fJeannieC$TypeName = pJeannieC$TypeName$1(yyStart);
13556: return yyColumn.chunk4.fJeannieC$TypeName;
13557: }
13558:
13559: /** Actually parse xtc.lang.jeannie.JeannieC.TypeName. */
13560: private Result pJeannieC$TypeName$1(final int yyStart)
13561: throws IOException {
13562: Result yyResult;
13563: int yyOption1;
13564: Node yyOpValue1;
13565: Node yyValue;
13566: ParseError yyError = ParseError.DUMMY;
13567:
13568: // Start a state modification.
13569: yyState.start();
13570:
13571: // Alternative 1.
13572:
13573: yyResult = pJeannieC$SpecifierQualifierList(yyStart);
13574: yyError = yyResult.select(yyError);
13575: if (yyResult.hasValue()) {
13576: final Node v$g$1 = yyResult.semanticValue();
13577:
13578: yyOption1 = yyResult.index;
13579: yyOpValue1 = null;
13580:
13581: yyResult = pJeannieC$AbstractDeclarator(yyOption1);
13582: yyError = yyResult.select(yyError);
13583: if (yyResult.hasValue()) {
13584: final Node v$el$1 = yyResult.semanticValue();
13585:
13586: yyOption1 = yyResult.index;
13587: yyOpValue1 = v$el$1;
13588: }
13589: { // Start scope for v$g$2.
13590: final Node v$g$2 = yyOpValue1;
13591:
13592: yyValue = GNode.create("TypeName", v$g$1, v$g$2);
13593: yyValue.setLocation(location(yyStart));
13594:
13595: // Commit the state modification.
13596: yyState.commit();
13597:
13598: return new SemanticValue(yyValue, yyOption1, yyError);
13599: } // End scope for v$g$2.
13600: }
13601:
13602: // Abort the state modification.
13603: yyState.abort();
13604:
13605: // Done.
13606: return yyError;
13607: }
13608:
13609: // =========================================================================
13610:
13611: /**
13612: * Parse nonterminal xtc.lang.jeannie.JeannieC.AttributeSpecifierList.
13613: *
13614: * @param yyStart The index.
13615: * @return The result.
13616: * @throws IOException Signals an I/O error.
13617: */
13618: private Result pJeannieC$AttributeSpecifierList(final int yyStart)
13619: throws IOException {
13620:
13621: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
13622: if (null == yyColumn.chunk5)
13623: yyColumn.chunk5 = new Chunk5();
13624: if (null == yyColumn.chunk5.fJeannieC$AttributeSpecifierList)
13625: yyColumn.chunk5.fJeannieC$AttributeSpecifierList = pJeannieC$AttributeSpecifierList$1(yyStart);
13626: return yyColumn.chunk5.fJeannieC$AttributeSpecifierList;
13627: }
13628:
13629: /** Actually parse xtc.lang.jeannie.JeannieC.AttributeSpecifierList. */
13630: private Result pJeannieC$AttributeSpecifierList$1(final int yyStart)
13631: throws IOException {
13632:
13633: Result yyResult;
13634: Node yyValue;
13635: ParseError yyError = ParseError.DUMMY;
13636:
13637: // Alternative 1.
13638:
13639: yyResult = pJeannieC$AttributeSpecifierPlus(yyStart);
13640: yyError = yyResult.select(yyError);
13641: if (yyResult.hasValue()) {
13642: final Pair<Node> v$g$1 = yyResult.semanticValue();
13643:
13644: yyValue = GNode.createFromPair("AttributeSpecifierList",
13645: v$g$1);
13646: yyValue.setLocation(location(yyStart));
13647:
13648: return yyResult.createValue(yyValue, yyError);
13649: }
13650:
13651: // Done.
13652: return yyError;
13653: }
13654:
13655: // =========================================================================
13656:
13657: /**
13658: * Parse nonterminal xtc.lang.jeannie.JeannieC.AttributeSpecifierPlus.
13659: *
13660: * @param yyStart The index.
13661: * @return The result.
13662: * @throws IOException Signals an I/O error.
13663: */
13664: private Result pJeannieC$AttributeSpecifierPlus(final int yyStart)
13665: throws IOException {
13666:
13667: Result yyResult;
13668: int yyRepetition1;
13669: boolean yyRepeated1;
13670: Pair<Node> yyRepValue1;
13671: Pair<Node> yyValue;
13672: ParseError yyError = ParseError.DUMMY;
13673:
13674: // Alternative 1.
13675:
13676: yyRepetition1 = yyStart;
13677: yyRepeated1 = false;
13678: yyRepValue1 = Pair.empty();
13679: while (true) {
13680:
13681: yyResult = pJeannieC$AttributeSpecifier(yyRepetition1);
13682: yyError = yyResult.select(yyError);
13683: if (yyResult.hasValue()) {
13684: final Node v$el$1 = yyResult.semanticValue();
13685:
13686: yyRepetition1 = yyResult.index;
13687: yyRepeated1 = true;
13688: yyRepValue1 = new Pair<Node>(v$el$1, yyRepValue1);
13689: continue;
13690: }
13691: break;
13692: }
13693:
13694: if (yyRepeated1) {
13695: yyValue = yyRepValue1.reverse();
13696:
13697: return new SemanticValue(yyValue, yyRepetition1, yyError);
13698: }
13699:
13700: // Done.
13701: return yyError;
13702: }
13703:
13704: // =========================================================================
13705:
13706: /**
13707: * Parse nonterminal xtc.lang.jeannie.JeannieC.AttributeSpecifier.
13708: *
13709: * @param yyStart The index.
13710: * @return The result.
13711: * @throws IOException Signals an I/O error.
13712: */
13713: private Result pJeannieC$AttributeSpecifier(final int yyStart)
13714: throws IOException {
13715:
13716: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
13717: if (null == yyColumn.chunk5)
13718: yyColumn.chunk5 = new Chunk5();
13719: if (null == yyColumn.chunk5.fJeannieC$AttributeSpecifier)
13720: yyColumn.chunk5.fJeannieC$AttributeSpecifier = pJeannieC$AttributeSpecifier$1(yyStart);
13721: return yyColumn.chunk5.fJeannieC$AttributeSpecifier;
13722: }
13723:
13724: /** Actually parse xtc.lang.jeannie.JeannieC.AttributeSpecifier. */
13725: private Result pJeannieC$AttributeSpecifier$1(final int yyStart)
13726: throws IOException {
13727:
13728: Result yyResult;
13729: int yyBase;
13730: int yyOption1;
13731: Node yyOpValue1;
13732: Node yyValue;
13733: ParseError yyError = ParseError.DUMMY;
13734:
13735: // Alternative 1.
13736:
13737: yyResult = p$$Shared10(yyStart);
13738: yyError = yyResult.select(yyError);
13739: if (yyResult.hasValue()) {
13740:
13741: yyBase = yyResult.index;
13742: yyResult = pSymbol(yyBase);
13743: yyError = yyResult.select(yyError);
13744: if (yyResult.hasValue("(")) {
13745:
13746: yyBase = yyResult.index;
13747: yyResult = pSymbol(yyBase);
13748: yyError = yyResult.select(yyError);
13749: if (yyResult.hasValue("(")) {
13750:
13751: yyOption1 = yyResult.index;
13752: yyOpValue1 = null;
13753:
13754: yyResult = pJeannieC$AttributeList(yyOption1);
13755: yyError = yyResult.select(yyError);
13756: if (yyResult.hasValue()) {
13757: final Node v$el$1 = yyResult.semanticValue();
13758:
13759: yyOption1 = yyResult.index;
13760: yyOpValue1 = v$el$1;
13761: }
13762: { // Start scope for v$g$1.
13763: final Node v$g$1 = yyOpValue1;
13764:
13765: yyBase = yyOption1;
13766: yyResult = pSymbol(yyBase);
13767: yyError = yyResult.select(yyError);
13768: if (yyResult.hasValue(")")) {
13769:
13770: yyBase = yyResult.index;
13771: yyResult = pSymbol(yyBase);
13772: yyError = yyResult.select(yyError);
13773: if (yyResult.hasValue(")")) {
13774:
13775: yyValue = GNode.create(
13776: "AttributeSpecifier", v$g$1);
13777: yyValue.setLocation(location(yyStart));
13778:
13779: return yyResult.createValue(yyValue,
13780: yyError);
13781: } else {
13782: yyError = yyError.select(
13783: "\")\" expected", yyBase);
13784: }
13785: } else {
13786: yyError = yyError.select("\")\" expected",
13787: yyBase);
13788: }
13789: } // End scope for v$g$1.
13790: } else {
13791: yyError = yyError.select("\"(\" expected", yyBase);
13792: }
13793: } else {
13794: yyError = yyError.select("\"(\" expected", yyBase);
13795: }
13796: }
13797:
13798: // Done.
13799: return yyError;
13800: }
13801:
13802: // =========================================================================
13803:
13804: /**
13805: * Parse synthetic nonterminal xtc.lang.jeannie.Debugger.$$Shared10.
13806: * This nonterminal represents the duplicate productions
13807: * xtc.lang.jeannie.JeannieC.AttributeKeyword
13808: * and xtc.lang.jeannie.DebuggerC.AttributeKeyword.
13809: *
13810: * @param yyStart The index.
13811: * @return The result.
13812: * @throws IOException Signals an I/O error.
13813: */
13814: private Result p$$Shared10(final int yyStart) throws IOException {
13815: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
13816: if (null == yyColumn.chunk5)
13817: yyColumn.chunk5 = new Chunk5();
13818: if (null == yyColumn.chunk5.f$$Shared10)
13819: yyColumn.chunk5.f$$Shared10 = p$$Shared10$1(yyStart);
13820: return yyColumn.chunk5.f$$Shared10;
13821: }
13822:
13823: /** Actually parse xtc.lang.jeannie.Debugger.$$Shared10. */
13824: private Result p$$Shared10$1(final int yyStart) throws IOException {
13825: Result yyResult;
13826: Void yyValue;
13827: ParseError yyError = ParseError.DUMMY;
13828:
13829: // Alternative 1.
13830:
13831: yyResult = pKeyword(yyStart);
13832: yyError = yyResult.select(yyError);
13833: if (yyResult.hasValue("__attribute")) {
13834:
13835: yyValue = null;
13836:
13837: return yyResult.createValue(yyValue, yyError);
13838: }
13839:
13840: // Alternative 2.
13841:
13842: yyResult = pKeyword(yyStart);
13843: yyError = yyResult.select(yyError);
13844: if (yyResult.hasValue("__attribute__")) {
13845:
13846: yyValue = null;
13847:
13848: return yyResult.createValue(yyValue, yyError);
13849: }
13850:
13851: // Done.
13852: yyError = yyError.select(" expected", yyStart);
13853: return yyError;
13854: }
13855:
13856: // =========================================================================
13857:
13858: /**
13859: * Parse nonterminal xtc.lang.jeannie.JeannieC.AttributeList.
13860: *
13861: * @param yyStart The index.
13862: * @return The result.
13863: * @throws IOException Signals an I/O error.
13864: */
13865: private Result pJeannieC$AttributeList(final int yyStart)
13866: throws IOException {
13867:
13868: Result yyResult;
13869: int yyBase;
13870: int yyRepetition1;
13871: Pair<Node> yyRepValue1;
13872: Node yyValue;
13873: ParseError yyError = ParseError.DUMMY;
13874:
13875: // Alternative 1.
13876:
13877: yyResult = pJeannieC$AttributeListEntry(yyStart);
13878: yyError = yyResult.select(yyError);
13879: if (yyResult.hasValue()) {
13880: final Node v$g$1 = yyResult.semanticValue();
13881:
13882: yyRepetition1 = yyResult.index;
13883: yyRepValue1 = Pair.empty();
13884: while (true) {
13885:
13886: yyBase = yyRepetition1;
13887: yyResult = pSymbol(yyBase);
13888: yyError = yyResult.select(yyError);
13889: if (yyResult.hasValue(",")) {
13890:
13891: yyResult = pJeannieC$AttributeListEntry(yyResult.index);
13892: yyError = yyResult.select(yyError);
13893: if (yyResult.hasValue()) {
13894: final Node v$el$1 = yyResult.semanticValue();
13895:
13896: yyRepetition1 = yyResult.index;
13897: yyRepValue1 = new Pair<Node>(v$el$1,
13898: yyRepValue1);
13899: continue;
13900: }
13901: } else {
13902: yyError = yyError.select("\",\" expected", yyBase);
13903: }
13904: break;
13905: }
13906: { // Start scope for v$g$2.
13907: final Pair<Node> v$g$2 = yyRepValue1.reverse();
13908:
13909: yyValue = GNode.createFromPair("AttributeList", v$g$1,
13910: v$g$2);
13911: yyValue.setLocation(location(yyStart));
13912:
13913: return new SemanticValue(yyValue, yyRepetition1,
13914: yyError);
13915: } // End scope for v$g$2.
13916: }
13917:
13918: // Done.
13919: return yyError;
13920: }
13921:
13922: // =========================================================================
13923:
13924: /**
13925: * Parse nonterminal xtc.lang.jeannie.JeannieC.AttributeListEntry.
13926: *
13927: * @param yyStart The index.
13928: * @return The result.
13929: * @throws IOException Signals an I/O error.
13930: */
13931: private Result pJeannieC$AttributeListEntry(final int yyStart)
13932: throws IOException {
13933:
13934: Result yyResult;
13935: int yyBase;
13936: int yyOption1;
13937: Node yyOpValue1;
13938: int yyOption2;
13939: Node yyOpValue2;
13940: Node yyValue;
13941: ParseError yyError = ParseError.DUMMY;
13942:
13943: // Alternative 1.
13944:
13945: yyResult = pCIdentifier$Word(yyStart);
13946: yyError = yyResult.select(yyError);
13947: if (yyResult.hasValue()) {
13948: final String v$g$1 = yyResult.semanticValue();
13949:
13950: yyOption1 = yyResult.index;
13951: yyOpValue1 = null;
13952:
13953: yyBase = yyOption1;
13954: yyResult = pSymbol(yyBase);
13955: yyError = yyResult.select(yyError);
13956: if (yyResult.hasValue("(")) {
13957:
13958: yyOption2 = yyResult.index;
13959: yyOpValue2 = null;
13960:
13961: yyResult = pJeannieC$ExpressionList(yyOption2);
13962: yyError = yyResult.select(yyError);
13963: if (yyResult.hasValue()) {
13964: final Node v$el$2 = yyResult.semanticValue();
13965:
13966: yyOption2 = yyResult.index;
13967: yyOpValue2 = v$el$2;
13968: }
13969: { // Start scope for v$el$1.
13970: final Node v$el$1 = yyOpValue2;
13971:
13972: yyBase = yyOption2;
13973: yyResult = pSymbol(yyBase);
13974: yyError = yyResult.select(yyError);
13975: if (yyResult.hasValue(")")) {
13976:
13977: yyOption1 = yyResult.index;
13978: yyOpValue1 = v$el$1;
13979: } else {
13980: yyError = yyError.select("\")\" expected",
13981: yyBase);
13982: }
13983: } // End scope for v$el$1.
13984: } else {
13985: yyError = yyError.select("\"(\" expected", yyBase);
13986: }
13987: { // Start scope for v$g$2.
13988: final Node v$g$2 = yyOpValue1;
13989:
13990: yyValue = GNode.create("AttributeListEntry", v$g$1,
13991: v$g$2);
13992: yyValue.setLocation(location(yyStart));
13993:
13994: return new SemanticValue(yyValue, yyOption1, yyError);
13995: } // End scope for v$g$2.
13996: }
13997:
13998: // Done.
13999: return yyError;
14000: }
14001:
14002: // =========================================================================
14003:
14004: /**
14005: * Parse nonterminal xtc.lang.jeannie.JeannieC.Statement.
14006: *
14007: * @param yyStart The index.
14008: * @return The result.
14009: * @throws IOException Signals an I/O error.
14010: */
14011: private Result pJeannieC$Statement(final int yyStart)
14012: throws IOException {
14013: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
14014: if (null == yyColumn.chunk5)
14015: yyColumn.chunk5 = new Chunk5();
14016: if (null == yyColumn.chunk5.fJeannieC$Statement)
14017: yyColumn.chunk5.fJeannieC$Statement = pJeannieC$Statement$1(yyStart);
14018: return yyColumn.chunk5.fJeannieC$Statement;
14019: }
14020:
14021: /** Actually parse xtc.lang.jeannie.JeannieC.Statement. */
14022: private Result pJeannieC$Statement$1(final int yyStart)
14023: throws IOException {
14024: Result yyResult;
14025: int yyBase;
14026: int yyOption1;
14027: Node yyOpValue1;
14028: Node yyValue;
14029: ParseError yyError = ParseError.DUMMY;
14030:
14031: // Alternative 1.
14032:
14033: yyResult = pJeannieC$CommaExpression(yyStart);
14034: yyError = yyResult.select(yyError);
14035: if (yyResult.hasValue()) {
14036: final Node v$g$1 = yyResult.semanticValue();
14037:
14038: yyBase = yyResult.index;
14039: yyResult = pSymbol(yyBase);
14040: yyError = yyResult.select(yyError);
14041: if (yyResult.hasValue(";")) {
14042:
14043: yyValue = GNode.create("ExpressionStatement", v$g$1);
14044: yyValue.setLocation(location(yyStart));
14045:
14046: return yyResult.createValue(yyValue, yyError);
14047: } else {
14048: yyError = yyError.select("\";\" expected", yyBase);
14049: }
14050: }
14051:
14052: // Alternative <JavaInCStatement>.
14053:
14054: yyResult = pJeannieC$JavaInCStatement(yyStart);
14055: yyError = yyResult.select(yyError);
14056: if (yyResult.hasValue()) {
14057: yyValue = yyResult.semanticValue();
14058:
14059: return yyResult.createValue(yyValue, yyError);
14060: }
14061:
14062: // Alternative <Cancel>.
14063:
14064: yyResult = pJeannieC$CancelStatement(yyStart);
14065: yyError = yyResult.select(yyError);
14066: if (yyResult.hasValue()) {
14067: yyValue = yyResult.semanticValue();
14068:
14069: return yyResult.createValue(yyValue, yyError);
14070: }
14071:
14072: // Alternative <Commit>.
14073:
14074: yyResult = pJeannieC$CommitStatement(yyStart);
14075: yyError = yyResult.select(yyError);
14076: if (yyResult.hasValue()) {
14077: yyValue = yyResult.semanticValue();
14078:
14079: return yyResult.createValue(yyValue, yyError);
14080: }
14081:
14082: // Alternative <With>.
14083:
14084: yyResult = pJeannieC$WithStatement(yyStart);
14085: yyError = yyResult.select(yyError);
14086: if (yyResult.hasValue()) {
14087: yyValue = yyResult.semanticValue();
14088:
14089: return yyResult.createValue(yyValue, yyError);
14090: }
14091:
14092: // Alternative <Compound>.
14093:
14094: yyResult = pJeannieC$CompoundStatement(yyStart);
14095: yyError = yyResult.select(yyError);
14096: if (yyResult.hasValue()) {
14097: yyValue = yyResult.semanticValue();
14098:
14099: return yyResult.createValue(yyValue, yyError);
14100: }
14101:
14102: // Alternative 7.
14103:
14104: yyResult = pKeyword(yyStart);
14105: yyError = yyResult.select(yyError);
14106: if (yyResult.hasValue("if")) {
14107:
14108: yyBase = yyResult.index;
14109: yyResult = pSymbol(yyBase);
14110: yyError = yyResult.select(yyError);
14111: if (yyResult.hasValue("(")) {
14112:
14113: yyResult = pJeannieC$CommaExpression(yyResult.index);
14114: yyError = yyResult.select(yyError);
14115: if (yyResult.hasValue()) {
14116: final Node v$g$1 = yyResult.semanticValue();
14117:
14118: yyBase = yyResult.index;
14119: yyResult = pSymbol(yyBase);
14120: yyError = yyResult.select(yyError);
14121: if (yyResult.hasValue(")")) {
14122:
14123: yyResult = pJeannieC$Statement(yyResult.index);
14124: yyError = yyResult.select(yyError);
14125: if (yyResult.hasValue()) {
14126: final Node v$g$2 = yyResult.semanticValue();
14127:
14128: final int yyChoice1 = yyResult.index;
14129:
14130: // Nested alternative 1.
14131:
14132: yyBase = yyChoice1;
14133: yyResult = pKeyword(yyBase);
14134: yyError = yyResult.select(yyError);
14135: if (yyResult.hasValue("else")) {
14136:
14137: yyResult = pJeannieC$Statement(yyResult.index);
14138: yyError = yyResult.select(yyError);
14139: if (yyResult.hasValue()) {
14140: final Node v$g$3 = yyResult
14141: .semanticValue();
14142:
14143: yyValue = GNode.create(
14144: "IfElseStatement", v$g$1,
14145: v$g$2, v$g$3);
14146: yyValue
14147: .setLocation(location(yyStart));
14148:
14149: return yyResult.createValue(
14150: yyValue, yyError);
14151: }
14152: } else {
14153: yyError = yyError.select(
14154: "\"else\" expected", yyBase);
14155: }
14156:
14157: // Nested alternative 2.
14158:
14159: yyValue = GNode.create("IfStatement",
14160: v$g$1, v$g$2);
14161: yyValue.setLocation(location(yyStart));
14162:
14163: return new SemanticValue(yyValue,
14164: yyChoice1, yyError);
14165: }
14166: } else {
14167: yyError = yyError.select("\")\" expected",
14168: yyBase);
14169: }
14170: }
14171: } else {
14172: yyError = yyError.select("\"(\" expected", yyBase);
14173: }
14174: }
14175:
14176: // Alternative 8.
14177:
14178: yyResult = pKeyword(yyStart);
14179: yyError = yyResult.select(yyError);
14180: if (yyResult.hasValue("while")) {
14181:
14182: yyBase = yyResult.index;
14183: yyResult = pSymbol(yyBase);
14184: yyError = yyResult.select(yyError);
14185: if (yyResult.hasValue("(")) {
14186:
14187: yyResult = pJeannieC$CommaExpression(yyResult.index);
14188: yyError = yyResult.select(yyError);
14189: if (yyResult.hasValue()) {
14190: final Node v$g$1 = yyResult.semanticValue();
14191:
14192: yyBase = yyResult.index;
14193: yyResult = pSymbol(yyBase);
14194: yyError = yyResult.select(yyError);
14195: if (yyResult.hasValue(")")) {
14196:
14197: yyResult = pJeannieC$Statement(yyResult.index);
14198: yyError = yyResult.select(yyError);
14199: if (yyResult.hasValue()) {
14200: final Node v$g$2 = yyResult.semanticValue();
14201:
14202: yyValue = GNode.create("WhileStatement",
14203: v$g$1, v$g$2);
14204: yyValue.setLocation(location(yyStart));
14205:
14206: return yyResult.createValue(yyValue,
14207: yyError);
14208: }
14209: } else {
14210: yyError = yyError.select("\")\" expected",
14211: yyBase);
14212: }
14213: }
14214: } else {
14215: yyError = yyError.select("\"(\" expected", yyBase);
14216: }
14217: }
14218:
14219: // Alternative 9.
14220:
14221: yyResult = pKeyword(yyStart);
14222: yyError = yyResult.select(yyError);
14223: if (yyResult.hasValue("do")) {
14224:
14225: yyResult = pJeannieC$Statement(yyResult.index);
14226: yyError = yyResult.select(yyError);
14227: if (yyResult.hasValue()) {
14228: final Node v$g$1 = yyResult.semanticValue();
14229:
14230: yyBase = yyResult.index;
14231: yyResult = pKeyword(yyBase);
14232: yyError = yyResult.select(yyError);
14233: if (yyResult.hasValue("while")) {
14234:
14235: yyBase = yyResult.index;
14236: yyResult = pSymbol(yyBase);
14237: yyError = yyResult.select(yyError);
14238: if (yyResult.hasValue("(")) {
14239:
14240: yyResult = pJeannieC$CommaExpression(yyResult.index);
14241: yyError = yyResult.select(yyError);
14242: if (yyResult.hasValue()) {
14243: final Node v$g$2 = yyResult.semanticValue();
14244:
14245: yyBase = yyResult.index;
14246: yyResult = pSymbol(yyBase);
14247: yyError = yyResult.select(yyError);
14248: if (yyResult.hasValue(")")) {
14249:
14250: yyBase = yyResult.index;
14251: yyResult = pSymbol(yyBase);
14252: yyError = yyResult.select(yyError);
14253: if (yyResult.hasValue(";")) {
14254:
14255: yyValue = GNode
14256: .create("DoStatement",
14257: v$g$1, v$g$2);
14258: yyValue
14259: .setLocation(location(yyStart));
14260:
14261: return yyResult.createValue(
14262: yyValue, yyError);
14263: } else {
14264: yyError = yyError.select(
14265: "\";\" expected", yyBase);
14266: }
14267: } else {
14268: yyError = yyError.select(
14269: "\")\" expected", yyBase);
14270: }
14271: }
14272: } else {
14273: yyError = yyError.select("\"(\" expected",
14274: yyBase);
14275: }
14276: } else {
14277: yyError = yyError.select("\"while\" expected",
14278: yyBase);
14279: }
14280: }
14281: }
14282:
14283: // Alternative 10.
14284:
14285: yyResult = pKeyword(yyStart);
14286: yyError = yyResult.select(yyError);
14287: if (yyResult.hasValue("for")) {
14288:
14289: yyResult = pPushScope(yyResult.index);
14290: yyError = yyResult.select(yyError);
14291: if (yyResult.hasValue()) {
14292:
14293: yyBase = yyResult.index;
14294: yyResult = pSymbol(yyBase);
14295: yyError = yyResult.select(yyError);
14296: if (yyResult.hasValue("(")) {
14297:
14298: yyResult = pJeannieC$InitialClause(yyResult.index);
14299: yyError = yyResult.select(yyError);
14300: if (yyResult.hasValue()) {
14301: final Node v$g$1 = yyResult.semanticValue();
14302:
14303: yyOption1 = yyResult.index;
14304: yyOpValue1 = null;
14305:
14306: yyResult = pJeannieC$CommaExpression(yyOption1);
14307: yyError = yyResult.select(yyError);
14308: if (yyResult.hasValue()) {
14309: final Node v$el$1 = yyResult
14310: .semanticValue();
14311:
14312: yyOption1 = yyResult.index;
14313: yyOpValue1 = v$el$1;
14314: }
14315: { // Start scope for v$g$2.
14316: final Node v$g$2 = yyOpValue1;
14317:
14318: yyBase = yyOption1;
14319: yyResult = pSymbol(yyBase);
14320: yyError = yyResult.select(yyError);
14321: if (yyResult.hasValue(";")) {
14322:
14323: yyOption1 = yyResult.index;
14324: yyOpValue1 = null;
14325:
14326: yyResult = pJeannieC$CommaExpression(yyOption1);
14327: yyError = yyResult.select(yyError);
14328: if (yyResult.hasValue()) {
14329: final Node v$el$2 = yyResult
14330: .semanticValue();
14331:
14332: yyOption1 = yyResult.index;
14333: yyOpValue1 = v$el$2;
14334: }
14335: { // Start scope for v$g$3.
14336: final Node v$g$3 = yyOpValue1;
14337:
14338: yyBase = yyOption1;
14339: yyResult = pSymbol(yyBase);
14340: yyError = yyResult.select(yyError);
14341: if (yyResult.hasValue(")")) {
14342:
14343: yyResult = pJeannieC$Statement(yyResult.index);
14344: yyError = yyResult
14345: .select(yyError);
14346: if (yyResult.hasValue()) {
14347: final Node v$g$4 = yyResult
14348: .semanticValue();
14349:
14350: yyResult = pPopScope(yyResult.index);
14351: yyError = yyResult
14352: .select(yyError);
14353: if (yyResult.hasValue()) {
14354:
14355: yyValue = GNode.create(
14356: "ForStatement",
14357: v$g$1, v$g$2,
14358: v$g$3, v$g$4);
14359: yyValue
14360: .setLocation(location(yyStart));
14361:
14362: return yyResult
14363: .createValue(
14364: yyValue,
14365: yyError);
14366: }
14367: }
14368: } else {
14369: yyError = yyError.select(
14370: "\")\" expected",
14371: yyBase);
14372: }
14373: } // End scope for v$g$3.
14374: } else {
14375: yyError = yyError.select(
14376: "\";\" expected", yyBase);
14377: }
14378: } // End scope for v$g$2.
14379: }
14380: } else {
14381: yyError = yyError.select("\"(\" expected", yyBase);
14382: }
14383: }
14384: }
14385:
14386: // Alternative 11.
14387:
14388: yyResult = pKeyword(yyStart);
14389: yyError = yyResult.select(yyError);
14390: if (yyResult.hasValue("switch")) {
14391:
14392: yyBase = yyResult.index;
14393: yyResult = pSymbol(yyBase);
14394: yyError = yyResult.select(yyError);
14395: if (yyResult.hasValue("(")) {
14396:
14397: yyResult = pJeannieC$CommaExpression(yyResult.index);
14398: yyError = yyResult.select(yyError);
14399: if (yyResult.hasValue()) {
14400: final Node v$g$1 = yyResult.semanticValue();
14401:
14402: yyBase = yyResult.index;
14403: yyResult = pSymbol(yyBase);
14404: yyError = yyResult.select(yyError);
14405: if (yyResult.hasValue(")")) {
14406:
14407: yyResult = pJeannieC$Statement(yyResult.index);
14408: yyError = yyResult.select(yyError);
14409: if (yyResult.hasValue()) {
14410: final Node v$g$2 = yyResult.semanticValue();
14411:
14412: yyValue = GNode.create("SwitchStatement",
14413: v$g$1, v$g$2);
14414: yyValue.setLocation(location(yyStart));
14415:
14416: return yyResult.createValue(yyValue,
14417: yyError);
14418: }
14419: } else {
14420: yyError = yyError.select("\")\" expected",
14421: yyBase);
14422: }
14423: }
14424: } else {
14425: yyError = yyError.select("\"(\" expected", yyBase);
14426: }
14427: }
14428:
14429: // Alternative <Complete>.
14430:
14431: yyResult = pJeannieC$Label(yyStart);
14432: yyError = yyResult.select(yyError);
14433: if (yyResult.hasValue()) {
14434: final Node v$g$1 = yyResult.semanticValue();
14435:
14436: yyResult = pJeannieC$Statement(yyResult.index);
14437: yyError = yyResult.select(yyError);
14438: if (yyResult.hasValue()) {
14439: final Node v$g$2 = yyResult.semanticValue();
14440:
14441: yyValue = GNode
14442: .create("LabeledStatement", v$g$1, v$g$2);
14443: yyValue.setLocation(location(yyStart));
14444:
14445: return yyResult.createValue(yyValue, yyError);
14446: }
14447: }
14448:
14449: // Alternative <Incomplete>.
14450:
14451: if (GCC) {
14452:
14453: yyResult = pJeannieC$Label(yyStart);
14454: yyError = yyResult.select(yyError);
14455: if (yyResult.hasValue()) {
14456: final Node v$g$3 = yyResult.semanticValue();
14457:
14458: yyValue = GNode.create("LabeledStatement", v$g$3, null);
14459: yyValue.setLocation(location(yyStart));
14460:
14461: return yyResult.createValue(yyValue, yyError);
14462: }
14463: }
14464:
14465: // Alternative 14.
14466:
14467: yyResult = pKeyword(yyStart);
14468: yyError = yyResult.select(yyError);
14469: if (yyResult.hasValue("break")) {
14470:
14471: yyBase = yyResult.index;
14472: yyResult = pSymbol(yyBase);
14473: yyError = yyResult.select(yyError);
14474: if (yyResult.hasValue(";")) {
14475:
14476: yyValue = GNode.create("BreakStatement", false);
14477: yyValue.setLocation(location(yyStart));
14478:
14479: return yyResult.createValue(yyValue, yyError);
14480: } else {
14481: yyError = yyError.select("\";\" expected", yyBase);
14482: }
14483: }
14484:
14485: // Alternative 15.
14486:
14487: yyResult = pKeyword(yyStart);
14488: yyError = yyResult.select(yyError);
14489: if (yyResult.hasValue("continue")) {
14490:
14491: yyBase = yyResult.index;
14492: yyResult = pSymbol(yyBase);
14493: yyError = yyResult.select(yyError);
14494: if (yyResult.hasValue(";")) {
14495:
14496: yyValue = GNode.create("ContinueStatement", false);
14497: yyValue.setLocation(location(yyStart));
14498:
14499: return yyResult.createValue(yyValue, yyError);
14500: } else {
14501: yyError = yyError.select("\";\" expected", yyBase);
14502: }
14503: }
14504:
14505: // Alternative 16.
14506:
14507: yyResult = pKeyword(yyStart);
14508: yyError = yyResult.select(yyError);
14509: if (yyResult.hasValue("return")) {
14510:
14511: yyOption1 = yyResult.index;
14512: yyOpValue1 = null;
14513:
14514: yyResult = pJeannieC$CommaExpression(yyOption1);
14515: yyError = yyResult.select(yyError);
14516: if (yyResult.hasValue()) {
14517: final Node v$el$1 = yyResult.semanticValue();
14518:
14519: yyOption1 = yyResult.index;
14520: yyOpValue1 = v$el$1;
14521: }
14522: { // Start scope for v$g$1.
14523: final Node v$g$1 = yyOpValue1;
14524:
14525: yyBase = yyOption1;
14526: yyResult = pSymbol(yyBase);
14527: yyError = yyResult.select(yyError);
14528: if (yyResult.hasValue(";")) {
14529:
14530: yyValue = GNode.create("ReturnStatement", v$g$1);
14531: yyValue.setLocation(location(yyStart));
14532:
14533: return yyResult.createValue(yyValue, yyError);
14534: } else {
14535: yyError = yyError.select("\";\" expected", yyBase);
14536: }
14537: } // End scope for v$g$1.
14538: }
14539:
14540: // Alternative <Direct>.
14541:
14542: yyResult = pKeyword(yyStart);
14543: yyError = yyResult.select(yyError);
14544: if (yyResult.hasValue("goto")) {
14545:
14546: yyResult = pJeannieC$PrimaryIdentifier(yyResult.index);
14547: yyError = yyResult.select(yyError);
14548: if (yyResult.hasValue()) {
14549: final Node v$g$2 = yyResult.semanticValue();
14550:
14551: yyBase = yyResult.index;
14552: yyResult = pSymbol(yyBase);
14553: yyError = yyResult.select(yyError);
14554: if (yyResult.hasValue(";")) {
14555:
14556: yyValue = GNode
14557: .create("GotoStatement", null, v$g$2);
14558: yyValue.setLocation(location(yyStart));
14559:
14560: return yyResult.createValue(yyValue, yyError);
14561: } else {
14562: yyError = yyError.select("\";\" expected", yyBase);
14563: }
14564: }
14565: }
14566:
14567: // Alternative <Computed>.
14568:
14569: if (GCC) {
14570:
14571: yyResult = pKeyword(yyStart);
14572: yyError = yyResult.select(yyError);
14573: if (yyResult.hasValue("goto")) {
14574:
14575: yyBase = yyResult.index;
14576: yyResult = pSymbol(yyBase);
14577: yyError = yyResult.select(yyError);
14578: if (yyResult.hasValue("*")) {
14579: final String v$g$3 = "*";
14580:
14581: yyResult = pJeannieC$CommaExpression(yyResult.index);
14582: yyError = yyResult.select(yyError);
14583: if (yyResult.hasValue()) {
14584: final Node v$g$4 = yyResult.semanticValue();
14585:
14586: yyBase = yyResult.index;
14587: yyResult = pSymbol(yyBase);
14588: yyError = yyResult.select(yyError);
14589: if (yyResult.hasValue(";")) {
14590:
14591: yyValue = GNode.create("GotoStatement",
14592: v$g$3, v$g$4);
14593: yyValue.setLocation(location(yyStart));
14594:
14595: return yyResult.createValue(yyValue,
14596: yyError);
14597: } else {
14598: yyError = yyError.select("\";\" expected",
14599: yyBase);
14600: }
14601: }
14602: } else {
14603: yyError = yyError.select("\"*\" expected", yyBase);
14604: }
14605: }
14606: }
14607:
14608: // Alternative 19.
14609:
14610: yyResult = p$$Shared18(yyStart);
14611: yyError = yyResult.select(yyError);
14612: if (yyResult.hasValue()) {
14613:
14614: yyOption1 = yyResult.index;
14615: yyOpValue1 = null;
14616:
14617: yyResult = p$$Shared29(yyOption1);
14618: yyError = yyResult.select(yyError);
14619: if (yyResult.hasValue()) {
14620: final Node v$el$1 = yyResult.semanticValue();
14621:
14622: yyOption1 = yyResult.index;
14623: yyOpValue1 = v$el$1;
14624: }
14625: { // Start scope for v$g$1.
14626: final Node v$g$1 = yyOpValue1;
14627:
14628: yyBase = yyOption1;
14629: yyResult = pSymbol(yyBase);
14630: yyError = yyResult.select(yyError);
14631: if (yyResult.hasValue("(")) {
14632:
14633: yyResult = pJeannieC$AssemblyArgument(yyResult.index);
14634: yyError = yyResult.select(yyError);
14635: if (yyResult.hasValue()) {
14636: final Node v$g$2 = yyResult.semanticValue();
14637:
14638: yyBase = yyResult.index;
14639: yyResult = pSymbol(yyBase);
14640: yyError = yyResult.select(yyError);
14641: if (yyResult.hasValue(")")) {
14642:
14643: yyBase = yyResult.index;
14644: yyResult = pSymbol(yyBase);
14645: yyError = yyResult.select(yyError);
14646: if (yyResult.hasValue(";")) {
14647: final String v$g$3 = ";";
14648:
14649: yyValue = GNode.create(
14650: "AssemblyStatement", v$g$1,
14651: v$g$2, v$g$3);
14652: yyValue.setLocation(location(yyStart));
14653:
14654: return yyResult.createValue(yyValue,
14655: yyError);
14656: } else {
14657: yyError = yyError.select(
14658: "\";\" expected", yyBase);
14659: }
14660: } else {
14661: yyError = yyError.select("\")\" expected",
14662: yyBase);
14663: }
14664: }
14665: } else {
14666: yyError = yyError.select("\"(\" expected", yyBase);
14667: }
14668: } // End scope for v$g$1.
14669: }
14670:
14671: // Alternative 20.
14672:
14673: yyResult = pSymbol(yyStart);
14674: yyError = yyResult.select(yyError);
14675: if (yyResult.hasValue(";")) {
14676:
14677: yyValue = GNode.create("EmptyStatement", false);
14678: yyValue.setLocation(location(yyStart));
14679:
14680: return yyResult.createValue(yyValue, yyError);
14681: }
14682:
14683: // Done.
14684: yyError = yyError.select("statement expected", yyStart);
14685: return yyError;
14686: }
14687:
14688: // =========================================================================
14689:
14690: /**
14691: * Parse nonterminal xtc.lang.jeannie.JeannieC.Label.
14692: *
14693: * @param yyStart The index.
14694: * @return The result.
14695: * @throws IOException Signals an I/O error.
14696: */
14697: private Result pJeannieC$Label(final int yyStart)
14698: throws IOException {
14699: Result yyResult;
14700: int yyBase;
14701: int yyOption1;
14702: Node yyOpValue1;
14703: Node yyValue;
14704: ParseError yyError = ParseError.DUMMY;
14705:
14706: // Alternative <Label>.
14707:
14708: yyResult = pCIdentifier$Identifier(yyStart);
14709: yyError = yyResult.select(yyError);
14710: if (yyResult.hasValue()) {
14711: final String v$g$1 = yyResult.semanticValue();
14712:
14713: yyBase = yyResult.index;
14714: yyResult = pSymbol(yyBase);
14715: yyError = yyResult.select(yyError);
14716: if (yyResult.hasValue(":")) {
14717:
14718: yyOption1 = yyResult.index;
14719: yyOpValue1 = null;
14720:
14721: yyResult = pJeannieC$AttributeSpecifierList(yyOption1);
14722: yyError = yyResult.select(yyError);
14723: if (yyResult.hasValue()) {
14724: final Node v$el$1 = yyResult.semanticValue();
14725:
14726: yyOption1 = yyResult.index;
14727: yyOpValue1 = v$el$1;
14728: }
14729: { // Start scope for v$g$2.
14730: final Node v$g$2 = yyOpValue1;
14731:
14732: yyValue = GNode.create("NamedLabel", v$g$1, v$g$2);
14733: yyValue.setLocation(location(yyStart));
14734:
14735: return new SemanticValue(yyValue, yyOption1,
14736: yyError);
14737: } // End scope for v$g$2.
14738: } else {
14739: yyError = yyError.select("\":\" expected", yyBase);
14740: }
14741: }
14742:
14743: // Alternative <Range>.
14744:
14745: if (GCC) {
14746:
14747: yyResult = pKeyword(yyStart);
14748: yyError = yyResult.select(yyError);
14749: if (yyResult.hasValue("case")) {
14750:
14751: yyResult = pJeannieC$ConditionalExpression(yyResult.index);
14752: yyError = yyResult.select(yyError);
14753: if (yyResult.hasValue()) {
14754: final Node v$g$1 = yyResult.semanticValue();
14755:
14756: yyBase = yyResult.index;
14757: yyResult = pSymbol(yyBase);
14758: yyError = yyResult.select(yyError);
14759: if (yyResult.hasValue("...")) {
14760:
14761: yyResult = pJeannieC$ConditionalExpression(yyResult.index);
14762: yyError = yyResult.select(yyError);
14763: if (yyResult.hasValue()) {
14764: final Node v$g$2 = yyResult.semanticValue();
14765:
14766: yyBase = yyResult.index;
14767: yyResult = pSymbol(yyBase);
14768: yyError = yyResult.select(yyError);
14769: if (yyResult.hasValue(":")) {
14770:
14771: yyValue = GNode.create("CaseLabel",
14772: v$g$1, v$g$2);
14773: yyValue.setLocation(location(yyStart));
14774:
14775: return yyResult.createValue(yyValue,
14776: yyError);
14777: } else {
14778: yyError = yyError.select(
14779: "\":\" expected", yyBase);
14780: }
14781: }
14782: } else {
14783: yyError = yyError.select("\"...\" expected",
14784: yyBase);
14785: }
14786: }
14787: }
14788: }
14789:
14790: // Alternative <Simple>.
14791:
14792: yyResult = pKeyword(yyStart);
14793: yyError = yyResult.select(yyError);
14794: if (yyResult.hasValue("case")) {
14795:
14796: yyResult = pJeannieC$ConditionalExpression(yyResult.index);
14797: yyError = yyResult.select(yyError);
14798: if (yyResult.hasValue()) {
14799: final Node v$g$3 = yyResult.semanticValue();
14800:
14801: yyBase = yyResult.index;
14802: yyResult = pSymbol(yyBase);
14803: yyError = yyResult.select(yyError);
14804: if (yyResult.hasValue(":")) {
14805:
14806: yyValue = GNode.create("CaseLabel", v$g$3);
14807: yyValue.setLocation(location(yyStart));
14808:
14809: return yyResult.createValue(yyValue, yyError);
14810: } else {
14811: yyError = yyError.select("\":\" expected", yyBase);
14812: }
14813: }
14814: }
14815:
14816: // Alternative 4.
14817:
14818: yyResult = pKeyword(yyStart);
14819: yyError = yyResult.select(yyError);
14820: if (yyResult.hasValue("default")) {
14821:
14822: yyBase = yyResult.index;
14823: yyResult = pSymbol(yyBase);
14824: yyError = yyResult.select(yyError);
14825: if (yyResult.hasValue(":")) {
14826:
14827: yyValue = GNode.create("DefaultLabel", false);
14828: yyValue.setLocation(location(yyStart));
14829:
14830: return yyResult.createValue(yyValue, yyError);
14831: } else {
14832: yyError = yyError.select("\":\" expected", yyBase);
14833: }
14834: }
14835:
14836: // Done.
14837: yyError = yyError.select("label expected", yyStart);
14838: return yyError;
14839: }
14840:
14841: // =========================================================================
14842:
14843: /**
14844: * Parse nonterminal xtc.lang.jeannie.JeannieC.CompoundStatement.
14845: *
14846: * @param yyStart The index.
14847: * @return The result.
14848: * @throws IOException Signals an I/O error.
14849: */
14850: private Result pJeannieC$CompoundStatement(final int yyStart)
14851: throws IOException {
14852:
14853: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
14854: if (null == yyColumn.chunk5)
14855: yyColumn.chunk5 = new Chunk5();
14856: if (null == yyColumn.chunk5.fJeannieC$CompoundStatement)
14857: yyColumn.chunk5.fJeannieC$CompoundStatement = pJeannieC$CompoundStatement$1(yyStart);
14858: return yyColumn.chunk5.fJeannieC$CompoundStatement;
14859: }
14860:
14861: /** Actually parse xtc.lang.jeannie.JeannieC.CompoundStatement. */
14862: private Result pJeannieC$CompoundStatement$1(final int yyStart)
14863: throws IOException {
14864:
14865: Result yyResult;
14866: Node yyValue;
14867: ParseError yyError = ParseError.DUMMY;
14868:
14869: // Alternative <CBlock>.
14870:
14871: yyResult = pJeannieC$CInCBlock(yyStart);
14872: yyError = yyResult.select(yyError);
14873: if (yyResult.hasValue()) {
14874: yyValue = yyResult.semanticValue();
14875:
14876: return yyResult.createValue(yyValue, yyError);
14877: }
14878:
14879: // Alternative <JavaBlock>.
14880:
14881: yyResult = pJeannieC$JavaInCBlock(yyStart);
14882: yyError = yyResult.select(yyError);
14883: if (yyResult.hasValue()) {
14884: yyValue = yyResult.semanticValue();
14885:
14886: return yyResult.createValue(yyValue, yyError);
14887: }
14888:
14889: // Done.
14890: return yyError;
14891: }
14892:
14893: // =========================================================================
14894:
14895: /**
14896: * Parse nonterminal xtc.lang.jeannie.JeannieC.LocalLabelDeclaration.
14897: *
14898: * @param yyStart The index.
14899: * @return The result.
14900: * @throws IOException Signals an I/O error.
14901: */
14902: private Result pJeannieC$LocalLabelDeclaration(final int yyStart)
14903: throws IOException {
14904:
14905: Result yyResult;
14906: int yyBase;
14907: int yyRepetition1;
14908: Pair<String> yyRepValue1;
14909: Node yyValue;
14910: ParseError yyError = ParseError.DUMMY;
14911:
14912: // Alternative 1.
14913:
14914: yyResult = pKeyword(yyStart);
14915: yyError = yyResult.select(yyError);
14916: if (yyResult.hasValue("__label__")) {
14917:
14918: yyResult = pCIdentifier$Identifier(yyResult.index);
14919: yyError = yyResult.select(yyError);
14920: if (yyResult.hasValue()) {
14921: final String v$g$1 = yyResult.semanticValue();
14922:
14923: yyRepetition1 = yyResult.index;
14924: yyRepValue1 = Pair.empty();
14925: while (true) {
14926:
14927: yyBase = yyRepetition1;
14928: yyResult = pSymbol(yyBase);
14929: yyError = yyResult.select(yyError);
14930: if (yyResult.hasValue(",")) {
14931:
14932: yyResult = pCIdentifier$Identifier(yyResult.index);
14933: yyError = yyResult.select(yyError);
14934: if (yyResult.hasValue()) {
14935: final String v$el$1 = yyResult
14936: .semanticValue();
14937:
14938: yyRepetition1 = yyResult.index;
14939: yyRepValue1 = new Pair<String>(v$el$1,
14940: yyRepValue1);
14941: continue;
14942: }
14943: } else {
14944: yyError = yyError.select("\",\" expected",
14945: yyBase);
14946: }
14947: break;
14948: }
14949: { // Start scope for v$g$2.
14950: final Pair<String> v$g$2 = yyRepValue1.reverse();
14951:
14952: yyBase = yyRepetition1;
14953: yyResult = pSymbol(yyBase);
14954: yyError = yyResult.select(yyError);
14955: if (yyResult.hasValue(";")) {
14956:
14957: yyValue = GNode.createFromPair(
14958: "LocalLabelDeclaration", v$g$1, v$g$2);
14959: yyValue.setLocation(location(yyStart));
14960:
14961: return yyResult.createValue(yyValue, yyError);
14962: } else {
14963: yyError = yyError.select("\";\" expected",
14964: yyBase);
14965: }
14966: } // End scope for v$g$2.
14967: }
14968: }
14969:
14970: // Done.
14971: yyError = yyError.select("local label declaration expected",
14972: yyStart);
14973: return yyError;
14974: }
14975:
14976: // =========================================================================
14977:
14978: /**
14979: * Parse nonterminal xtc.lang.jeannie.JeannieC.DeclarationOrStatement.
14980: *
14981: * @param yyStart The index.
14982: * @return The result.
14983: * @throws IOException Signals an I/O error.
14984: */
14985: private Result pJeannieC$DeclarationOrStatement(final int yyStart)
14986: throws IOException {
14987:
14988: Result yyResult;
14989: Node yyValue;
14990: ParseError yyError = ParseError.DUMMY;
14991:
14992: // Start a state modification.
14993: yyState.start();
14994:
14995: // Alternative <Declaration>.
14996:
14997: yyState.mark();
14998:
14999: yyResult = pJeannieC$Declaration(yyStart);
15000: yyError = yyResult.select(yyError);
15001: if (yyResult.hasValue()) {
15002: final Node d = yyResult.semanticValue();
15003:
15004: yyValue = yyState.annotate(d);
15005:
15006: // Commit the state modification.
15007: yyState.commit();
15008:
15009: setLocation(yyValue, yyStart);
15010: return yyResult.createValue(yyValue, yyError);
15011: }
15012:
15013: // Alternative <Statement>.
15014:
15015: yyResult = pJeannieC$Statement(yyStart);
15016: yyError = yyResult.select(yyError);
15017: if (yyResult.hasValue()) {
15018: final Node s = yyResult.semanticValue();
15019:
15020: yyValue = yyState.annotate(s);
15021:
15022: // Commit the state modification.
15023: yyState.commit();
15024:
15025: setLocation(yyValue, yyStart);
15026: return yyResult.createValue(yyValue, yyError);
15027: }
15028:
15029: // Abort the state modification.
15030: yyState.abort();
15031:
15032: // Done.
15033: return yyError;
15034: }
15035:
15036: // =========================================================================
15037:
15038: /**
15039: * Parse nonterminal xtc.lang.jeannie.JeannieC.InitialClause.
15040: *
15041: * @param yyStart The index.
15042: * @return The result.
15043: * @throws IOException Signals an I/O error.
15044: */
15045: private Result pJeannieC$InitialClause(final int yyStart)
15046: throws IOException {
15047:
15048: Result yyResult;
15049: int yyBase;
15050: int yyOption1;
15051: Node yyOpValue1;
15052: Node yyValue;
15053: ParseError yyError = ParseError.DUMMY;
15054:
15055: // Start a state modification.
15056: yyState.start();
15057:
15058: // Alternative <Declaration>.
15059:
15060: yyResult = pJeannieC$Declaration(yyStart);
15061: yyError = yyResult.select(yyError);
15062: if (yyResult.hasValue()) {
15063: yyValue = yyResult.semanticValue();
15064:
15065: // Commit the state modification.
15066: yyState.commit();
15067:
15068: return yyResult.createValue(yyValue, yyError);
15069: }
15070:
15071: // Alternative <Expression>.
15072:
15073: yyOption1 = yyStart;
15074: yyOpValue1 = null;
15075:
15076: yyResult = pJeannieC$CommaExpression(yyOption1);
15077: yyError = yyResult.select(yyError);
15078: if (yyResult.hasValue()) {
15079: final Node v$el$3 = yyResult.semanticValue();
15080:
15081: yyOption1 = yyResult.index;
15082: yyOpValue1 = v$el$3;
15083: }
15084: { // Start scope for yyValue.
15085: yyValue = yyOpValue1;
15086:
15087: yyBase = yyOption1;
15088: yyResult = pSymbol(yyBase);
15089: yyError = yyResult.select(yyError);
15090: if (yyResult.hasValue(";")) {
15091:
15092: // Commit the state modification.
15093: yyState.commit();
15094:
15095: return yyResult.createValue(yyValue, yyError);
15096: } else {
15097: yyError = yyError.select("\";\" expected", yyBase);
15098: }
15099: } // End scope for yyValue.
15100:
15101: // Abort the state modification.
15102: yyState.abort();
15103:
15104: // Done.
15105: return yyError;
15106: }
15107:
15108: // =========================================================================
15109:
15110: /**
15111: * Parse nonterminal xtc.lang.jeannie.JeannieC.CommaExpression.
15112: *
15113: * @param yyStart The index.
15114: * @return The result.
15115: * @throws IOException Signals an I/O error.
15116: */
15117: private Result pJeannieC$CommaExpression(final int yyStart)
15118: throws IOException {
15119:
15120: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
15121: if (null == yyColumn.chunk5)
15122: yyColumn.chunk5 = new Chunk5();
15123: if (null == yyColumn.chunk5.fJeannieC$CommaExpression)
15124: yyColumn.chunk5.fJeannieC$CommaExpression = pJeannieC$CommaExpression$1(yyStart);
15125: return yyColumn.chunk5.fJeannieC$CommaExpression;
15126: }
15127:
15128: /** Actually parse xtc.lang.jeannie.JeannieC.CommaExpression. */
15129: private Result pJeannieC$CommaExpression$1(final int yyStart)
15130: throws IOException {
15131:
15132: Result yyResult;
15133: int yyRepetition1;
15134: Pair<Action<Node>> yyRepValue1;
15135: Node yyValue;
15136: ParseError yyError = ParseError.DUMMY;
15137:
15138: // Alternative <Base>.
15139:
15140: yyResult = pJeannieC$AssignmentExpression(yyStart);
15141: yyError = yyResult.select(yyError);
15142: if (yyResult.hasValue()) {
15143: final Node v$3 = yyResult.semanticValue();
15144:
15145: yyRepetition1 = yyResult.index;
15146: yyRepValue1 = Pair.empty();
15147: while (true) {
15148:
15149: yyResult = pJeannieC$CommaExpression$$Tail1(yyRepetition1);
15150: yyError = yyResult.select(yyError);
15151: if (yyResult.hasValue()) {
15152: final Action<Node> v$4 = yyResult.semanticValue();
15153:
15154: yyRepetition1 = yyResult.index;
15155: yyRepValue1 = new Pair<Action<Node>>(v$4,
15156: yyRepValue1);
15157: continue;
15158: }
15159: break;
15160: }
15161: { // Start scope for v$5.
15162: final Pair<Action<Node>> v$5 = yyRepValue1.reverse();
15163:
15164: yyValue = apply(v$5, v$3, yyStart);
15165:
15166: return new SemanticValue(yyValue, yyRepetition1,
15167: yyError);
15168: } // End scope for v$5.
15169: }
15170:
15171: // Done.
15172: return yyError;
15173: }
15174:
15175: // =========================================================================
15176:
15177: /**
15178: * Parse synthetic nonterminal JeannieC.CommaExpression$$Tail1.
15179: *
15180: * @param yyStart The index.
15181: * @return The result.
15182: * @throws IOException Signals an I/O error.
15183: */
15184: private Result pJeannieC$CommaExpression$$Tail1(final int yyStart)
15185: throws IOException {
15186:
15187: Result yyResult;
15188: Action<Node> yyValue;
15189: ParseError yyError = ParseError.DUMMY;
15190:
15191: // Alternative <Comma>.
15192:
15193: yyResult = pSymbol(yyStart);
15194: yyError = yyResult.select(yyError);
15195: if (yyResult.hasValue(",")) {
15196:
15197: yyResult = pJeannieC$AssignmentExpression(yyResult.index);
15198: yyError = yyResult.select(yyError);
15199: if (yyResult.hasValue()) {
15200: final Node v$g$2 = yyResult.semanticValue();
15201:
15202: yyValue = new Action<Node>() {
15203: public Node run(Node v$1) {
15204: return GNode.create("CommaExpression", v$1,
15205: v$g$2);
15206: }
15207: };
15208:
15209: return yyResult.createValue(yyValue, yyError);
15210: }
15211: }
15212:
15213: // Done.
15214: yyError = yyError.select("comma expression expected", yyStart);
15215: return yyError;
15216: }
15217:
15218: // =========================================================================
15219:
15220: /**
15221: * Parse nonterminal xtc.lang.jeannie.JeannieC.AssignmentExpression.
15222: *
15223: * @param yyStart The index.
15224: * @return The result.
15225: * @throws IOException Signals an I/O error.
15226: */
15227: private Result pJeannieC$AssignmentExpression(final int yyStart)
15228: throws IOException {
15229:
15230: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
15231: if (null == yyColumn.chunk5)
15232: yyColumn.chunk5 = new Chunk5();
15233: if (null == yyColumn.chunk5.fJeannieC$AssignmentExpression)
15234: yyColumn.chunk5.fJeannieC$AssignmentExpression = pJeannieC$AssignmentExpression$1(yyStart);
15235: return yyColumn.chunk5.fJeannieC$AssignmentExpression;
15236: }
15237:
15238: /** Actually parse xtc.lang.jeannie.JeannieC.AssignmentExpression. */
15239: private Result pJeannieC$AssignmentExpression$1(final int yyStart)
15240: throws IOException {
15241:
15242: Result yyResult;
15243: Node yyValue;
15244: ParseError yyError = ParseError.DUMMY;
15245:
15246: // Alternative <Assignment>.
15247:
15248: yyResult = pJeannieC$UnaryExpression(yyStart);
15249: yyError = yyResult.select(yyError);
15250: if (yyResult.hasValue()) {
15251: final Node v$g$1 = yyResult.semanticValue();
15252:
15253: yyResult = p$$Shared11(yyResult.index);
15254: yyError = yyResult.select(yyError);
15255: if (yyResult.hasValue()) {
15256: final String v$g$2 = yyResult.semanticValue();
15257:
15258: yyResult = pJeannieC$AssignmentExpression(yyResult.index);
15259: yyError = yyResult.select(yyError);
15260: if (yyResult.hasValue()) {
15261: final Node v$g$3 = yyResult.semanticValue();
15262:
15263: yyValue = GNode.create("AssignmentExpression",
15264: v$g$1, v$g$2, v$g$3);
15265: yyValue.setLocation(location(yyStart));
15266:
15267: return yyResult.createValue(yyValue, yyError);
15268: }
15269: }
15270: }
15271:
15272: // Alternative <Base>.
15273:
15274: yyResult = pJeannieC$ConditionalExpression(yyStart);
15275: yyError = yyResult.select(yyError);
15276: if (yyResult.hasValue()) {
15277: yyValue = yyResult.semanticValue();
15278:
15279: return yyResult.createValue(yyValue, yyError);
15280: }
15281:
15282: // Done.
15283: return yyError;
15284: }
15285:
15286: // =========================================================================
15287:
15288: /**
15289: * Parse synthetic nonterminal xtc.lang.jeannie.Debugger.$$Shared11.
15290: * This nonterminal represents the duplicate productions
15291: * xtc.lang.jeannie.JeannieC.AssignmentOperator
15292: * and xtc.lang.jeannie.DebuggerC.AssignmentOperator.
15293: *
15294: * @param yyStart The index.
15295: * @return The result.
15296: * @throws IOException Signals an I/O error.
15297: */
15298: private Result p$$Shared11(final int yyStart) throws IOException {
15299: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
15300: if (null == yyColumn.chunk5)
15301: yyColumn.chunk5 = new Chunk5();
15302: if (null == yyColumn.chunk5.f$$Shared11)
15303: yyColumn.chunk5.f$$Shared11 = p$$Shared11$1(yyStart);
15304: return yyColumn.chunk5.f$$Shared11;
15305: }
15306:
15307: /** Actually parse xtc.lang.jeannie.Debugger.$$Shared11. */
15308: private Result p$$Shared11$1(final int yyStart) throws IOException {
15309: Result yyResult;
15310: String yyValue;
15311: ParseError yyError = ParseError.DUMMY;
15312:
15313: // Alternative <Equal>.
15314:
15315: yyResult = pSymbol(yyStart);
15316: yyError = yyResult.select(yyError);
15317: if (yyResult.hasValue("=")) {
15318: yyValue = "=";
15319:
15320: return yyResult.createValue(yyValue, yyError);
15321: }
15322:
15323: // Alternative <PlusEqual>.
15324:
15325: yyResult = pSymbol(yyStart);
15326: yyError = yyResult.select(yyError);
15327: if (yyResult.hasValue("+=")) {
15328: yyValue = "+=";
15329:
15330: return yyResult.createValue(yyValue, yyError);
15331: }
15332:
15333: // Alternative <MinusEqual>.
15334:
15335: yyResult = pSymbol(yyStart);
15336: yyError = yyResult.select(yyError);
15337: if (yyResult.hasValue("-=")) {
15338: yyValue = "-=";
15339:
15340: return yyResult.createValue(yyValue, yyError);
15341: }
15342:
15343: // Alternative <TimesEqual>.
15344:
15345: yyResult = pSymbol(yyStart);
15346: yyError = yyResult.select(yyError);
15347: if (yyResult.hasValue("*=")) {
15348: yyValue = "*=";
15349:
15350: return yyResult.createValue(yyValue, yyError);
15351: }
15352:
15353: // Alternative <OverEqual>.
15354:
15355: yyResult = pSymbol(yyStart);
15356: yyError = yyResult.select(yyError);
15357: if (yyResult.hasValue("/=")) {
15358: yyValue = "/=";
15359:
15360: return yyResult.createValue(yyValue, yyError);
15361: }
15362:
15363: // Alternative <ModuloEqual>.
15364:
15365: yyResult = pSymbol(yyStart);
15366: yyError = yyResult.select(yyError);
15367: if (yyResult.hasValue("%=")) {
15368: yyValue = "%=";
15369:
15370: return yyResult.createValue(yyValue, yyError);
15371: }
15372:
15373: // Alternative <LeftEqual>.
15374:
15375: yyResult = pSymbol(yyStart);
15376: yyError = yyResult.select(yyError);
15377: if (yyResult.hasValue("<<=")) {
15378: yyValue = "<<=";
15379:
15380: return yyResult.createValue(yyValue, yyError);
15381: }
15382:
15383: // Alternative <RightEqual>.
15384:
15385: yyResult = pSymbol(yyStart);
15386: yyError = yyResult.select(yyError);
15387: if (yyResult.hasValue(">>=")) {
15388: yyValue = ">>=";
15389:
15390: return yyResult.createValue(yyValue, yyError);
15391: }
15392:
15393: // Alternative <AndEqual>.
15394:
15395: yyResult = pSymbol(yyStart);
15396: yyError = yyResult.select(yyError);
15397: if (yyResult.hasValue("&=")) {
15398: yyValue = "&=";
15399:
15400: return yyResult.createValue(yyValue, yyError);
15401: }
15402:
15403: // Alternative <XorEqual>.
15404:
15405: yyResult = pSymbol(yyStart);
15406: yyError = yyResult.select(yyError);
15407: if (yyResult.hasValue("^=")) {
15408: yyValue = "^=";
15409:
15410: return yyResult.createValue(yyValue, yyError);
15411: }
15412:
15413: // Alternative <OrEqual>.
15414:
15415: yyResult = pSymbol(yyStart);
15416: yyError = yyResult.select(yyError);
15417: if (yyResult.hasValue("|=")) {
15418: yyValue = "|=";
15419:
15420: return yyResult.createValue(yyValue, yyError);
15421: }
15422:
15423: // Done.
15424: yyError = yyError.select(" expected", yyStart);
15425: return yyError;
15426: }
15427:
15428: // =========================================================================
15429:
15430: /**
15431: * Parse nonterminal xtc.lang.jeannie.JeannieC.ConditionalExpression.
15432: *
15433: * @param yyStart The index.
15434: * @return The result.
15435: * @throws IOException Signals an I/O error.
15436: */
15437: private Result pJeannieC$ConditionalExpression(final int yyStart)
15438: throws IOException {
15439:
15440: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
15441: if (null == yyColumn.chunk5)
15442: yyColumn.chunk5 = new Chunk5();
15443: if (null == yyColumn.chunk5.fJeannieC$ConditionalExpression)
15444: yyColumn.chunk5.fJeannieC$ConditionalExpression = pJeannieC$ConditionalExpression$1(yyStart);
15445: return yyColumn.chunk5.fJeannieC$ConditionalExpression;
15446: }
15447:
15448: /** Actually parse xtc.lang.jeannie.JeannieC.ConditionalExpression. */
15449: private Result pJeannieC$ConditionalExpression$1(final int yyStart)
15450: throws IOException {
15451:
15452: Result yyResult;
15453: int yyBase;
15454: Node yyValue;
15455: ParseError yyError = ParseError.DUMMY;
15456:
15457: // Alternative <Conditional>.
15458:
15459: yyResult = pJeannieC$LogicalOrExpression(yyStart);
15460: yyError = yyResult.select(yyError);
15461: if (yyResult.hasValue()) {
15462: final Node v$g$1 = yyResult.semanticValue();
15463:
15464: yyBase = yyResult.index;
15465: yyResult = pSymbol(yyBase);
15466: yyError = yyResult.select(yyError);
15467: if (yyResult.hasValue("?")) {
15468:
15469: yyResult = pJeannieC$CommaExpression(yyResult.index);
15470: yyError = yyResult.select(yyError);
15471: if (yyResult.hasValue()) {
15472: final Node v$g$2 = yyResult.semanticValue();
15473:
15474: yyBase = yyResult.index;
15475: yyResult = pSymbol(yyBase);
15476: yyError = yyResult.select(yyError);
15477: if (yyResult.hasValue(":")) {
15478:
15479: yyResult = pJeannieC$ConditionalExpression(yyResult.index);
15480: yyError = yyResult.select(yyError);
15481: if (yyResult.hasValue()) {
15482: final Node v$g$3 = yyResult.semanticValue();
15483:
15484: yyValue = GNode.create(
15485: "ConditionalExpression", v$g$1,
15486: v$g$2, v$g$3);
15487: yyValue.setLocation(location(yyStart));
15488:
15489: return yyResult.createValue(yyValue,
15490: yyError);
15491: }
15492: } else {
15493: yyError = yyError.select("\":\" expected",
15494: yyBase);
15495: }
15496: }
15497: } else {
15498: yyError = yyError.select("\"?\" expected", yyBase);
15499: }
15500: }
15501:
15502: // Alternative <IncompleteConditional>.
15503:
15504: if (GCC) {
15505:
15506: yyResult = pJeannieC$LogicalOrExpression(yyStart);
15507: yyError = yyResult.select(yyError);
15508: if (yyResult.hasValue()) {
15509: final Node v$g$4 = yyResult.semanticValue();
15510:
15511: yyBase = yyResult.index;
15512: yyResult = pSymbol(yyBase);
15513: yyError = yyResult.select(yyError);
15514: if (yyResult.hasValue("?")) {
15515:
15516: yyBase = yyResult.index;
15517: yyResult = pSymbol(yyBase);
15518: yyError = yyResult.select(yyError);
15519: if (yyResult.hasValue(":")) {
15520:
15521: yyResult = pJeannieC$ConditionalExpression(yyResult.index);
15522: yyError = yyResult.select(yyError);
15523: if (yyResult.hasValue()) {
15524: final Node v$g$6 = yyResult.semanticValue();
15525:
15526: yyValue = GNode.create(
15527: "ConditionalExpression", v$g$4,
15528: null, v$g$6);
15529: yyValue.setLocation(location(yyStart));
15530:
15531: return yyResult.createValue(yyValue,
15532: yyError);
15533: }
15534: } else {
15535: yyError = yyError.select("\":\" expected",
15536: yyBase);
15537: }
15538: } else {
15539: yyError = yyError.select("\"?\" expected", yyBase);
15540: }
15541: }
15542: }
15543:
15544: // Alternative <Base>.
15545:
15546: yyResult = pJeannieC$LogicalOrExpression(yyStart);
15547: yyError = yyResult.select(yyError);
15548: if (yyResult.hasValue()) {
15549: yyValue = yyResult.semanticValue();
15550:
15551: return yyResult.createValue(yyValue, yyError);
15552: }
15553:
15554: // Done.
15555: yyError = yyError.select("conditional expression expected",
15556: yyStart);
15557: return yyError;
15558: }
15559:
15560: // =========================================================================
15561:
15562: /**
15563: * Parse nonterminal xtc.lang.jeannie.JeannieC.LogicalOrExpression.
15564: *
15565: * @param yyStart The index.
15566: * @return The result.
15567: * @throws IOException Signals an I/O error.
15568: */
15569: private Result pJeannieC$LogicalOrExpression(final int yyStart)
15570: throws IOException {
15571:
15572: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
15573: if (null == yyColumn.chunk5)
15574: yyColumn.chunk5 = new Chunk5();
15575: if (null == yyColumn.chunk5.fJeannieC$LogicalOrExpression)
15576: yyColumn.chunk5.fJeannieC$LogicalOrExpression = pJeannieC$LogicalOrExpression$1(yyStart);
15577: return yyColumn.chunk5.fJeannieC$LogicalOrExpression;
15578: }
15579:
15580: /** Actually parse xtc.lang.jeannie.JeannieC.LogicalOrExpression. */
15581: private Result pJeannieC$LogicalOrExpression$1(final int yyStart)
15582: throws IOException {
15583:
15584: Result yyResult;
15585: int yyRepetition1;
15586: Pair<Action<Node>> yyRepValue1;
15587: Node yyValue;
15588: ParseError yyError = ParseError.DUMMY;
15589:
15590: // Alternative <Base>.
15591:
15592: yyResult = pJeannieC$LogicalAndExpression(yyStart);
15593: yyError = yyResult.select(yyError);
15594: if (yyResult.hasValue()) {
15595: final Node v$3 = yyResult.semanticValue();
15596:
15597: yyRepetition1 = yyResult.index;
15598: yyRepValue1 = Pair.empty();
15599: while (true) {
15600:
15601: yyResult = pJeannieC$LogicalOrExpression$$Tail1(yyRepetition1);
15602: yyError = yyResult.select(yyError);
15603: if (yyResult.hasValue()) {
15604: final Action<Node> v$4 = yyResult.semanticValue();
15605:
15606: yyRepetition1 = yyResult.index;
15607: yyRepValue1 = new Pair<Action<Node>>(v$4,
15608: yyRepValue1);
15609: continue;
15610: }
15611: break;
15612: }
15613: { // Start scope for v$5.
15614: final Pair<Action<Node>> v$5 = yyRepValue1.reverse();
15615:
15616: yyValue = apply(v$5, v$3, yyStart);
15617:
15618: return new SemanticValue(yyValue, yyRepetition1,
15619: yyError);
15620: } // End scope for v$5.
15621: }
15622:
15623: // Done.
15624: return yyError;
15625: }
15626:
15627: // =========================================================================
15628:
15629: /**
15630: * Parse synthetic nonterminal JeannieC.LogicalOrExpression$$Tail1.
15631: *
15632: * @param yyStart The index.
15633: * @return The result.
15634: * @throws IOException Signals an I/O error.
15635: */
15636: private Result pJeannieC$LogicalOrExpression$$Tail1(
15637: final int yyStart) throws IOException {
15638:
15639: Result yyResult;
15640: Action<Node> yyValue;
15641: ParseError yyError = ParseError.DUMMY;
15642:
15643: // Alternative <Or>.
15644:
15645: yyResult = pSymbol(yyStart);
15646: yyError = yyResult.select(yyError);
15647: if (yyResult.hasValue("||")) {
15648:
15649: yyResult = pJeannieC$LogicalAndExpression(yyResult.index);
15650: yyError = yyResult.select(yyError);
15651: if (yyResult.hasValue()) {
15652: final Node v$g$2 = yyResult.semanticValue();
15653:
15654: yyValue = new Action<Node>() {
15655: public Node run(Node v$1) {
15656: return GNode.create("LogicalOrExpression", v$1,
15657: v$g$2);
15658: }
15659: };
15660:
15661: return yyResult.createValue(yyValue, yyError);
15662: }
15663: }
15664:
15665: // Done.
15666: yyError = yyError.select("logical or expression expected",
15667: yyStart);
15668: return yyError;
15669: }
15670:
15671: // =========================================================================
15672:
15673: /**
15674: * Parse nonterminal xtc.lang.jeannie.JeannieC.LogicalAndExpression.
15675: *
15676: * @param yyStart The index.
15677: * @return The result.
15678: * @throws IOException Signals an I/O error.
15679: */
15680: private Result pJeannieC$LogicalAndExpression(final int yyStart)
15681: throws IOException {
15682:
15683: Result yyResult;
15684: int yyRepetition1;
15685: Pair<Action<Node>> yyRepValue1;
15686: Node yyValue;
15687: ParseError yyError = ParseError.DUMMY;
15688:
15689: // Alternative <Base>.
15690:
15691: yyResult = pJeannieC$BitwiseOrExpression(yyStart);
15692: yyError = yyResult.select(yyError);
15693: if (yyResult.hasValue()) {
15694: final Node v$3 = yyResult.semanticValue();
15695:
15696: yyRepetition1 = yyResult.index;
15697: yyRepValue1 = Pair.empty();
15698: while (true) {
15699:
15700: yyResult = pJeannieC$LogicalAndExpression$$Tail1(yyRepetition1);
15701: yyError = yyResult.select(yyError);
15702: if (yyResult.hasValue()) {
15703: final Action<Node> v$4 = yyResult.semanticValue();
15704:
15705: yyRepetition1 = yyResult.index;
15706: yyRepValue1 = new Pair<Action<Node>>(v$4,
15707: yyRepValue1);
15708: continue;
15709: }
15710: break;
15711: }
15712: { // Start scope for v$5.
15713: final Pair<Action<Node>> v$5 = yyRepValue1.reverse();
15714:
15715: yyValue = apply(v$5, v$3, yyStart);
15716:
15717: return new SemanticValue(yyValue, yyRepetition1,
15718: yyError);
15719: } // End scope for v$5.
15720: }
15721:
15722: // Done.
15723: return yyError;
15724: }
15725:
15726: // =========================================================================
15727:
15728: /**
15729: * Parse synthetic nonterminal JeannieC.LogicalAndExpression$$Tail1.
15730: *
15731: * @param yyStart The index.
15732: * @return The result.
15733: * @throws IOException Signals an I/O error.
15734: */
15735: private Result pJeannieC$LogicalAndExpression$$Tail1(
15736: final int yyStart) throws IOException {
15737:
15738: Result yyResult;
15739: Action<Node> yyValue;
15740: ParseError yyError = ParseError.DUMMY;
15741:
15742: // Alternative <And>.
15743:
15744: yyResult = pSymbol(yyStart);
15745: yyError = yyResult.select(yyError);
15746: if (yyResult.hasValue("&&")) {
15747:
15748: yyResult = pJeannieC$BitwiseOrExpression(yyResult.index);
15749: yyError = yyResult.select(yyError);
15750: if (yyResult.hasValue()) {
15751: final Node v$g$2 = yyResult.semanticValue();
15752:
15753: yyValue = new Action<Node>() {
15754: public Node run(Node v$1) {
15755: return GNode.create("LogicalAndExpression",
15756: v$1, v$g$2);
15757: }
15758: };
15759:
15760: return yyResult.createValue(yyValue, yyError);
15761: }
15762: }
15763:
15764: // Done.
15765: yyError = yyError.select("logical and expression expected",
15766: yyStart);
15767: return yyError;
15768: }
15769:
15770: // =========================================================================
15771:
15772: /**
15773: * Parse nonterminal xtc.lang.jeannie.JeannieC.BitwiseOrExpression.
15774: *
15775: * @param yyStart The index.
15776: * @return The result.
15777: * @throws IOException Signals an I/O error.
15778: */
15779: private Result pJeannieC$BitwiseOrExpression(final int yyStart)
15780: throws IOException {
15781:
15782: Result yyResult;
15783: int yyRepetition1;
15784: Pair<Action<Node>> yyRepValue1;
15785: Node yyValue;
15786: ParseError yyError = ParseError.DUMMY;
15787:
15788: // Alternative <Base>.
15789:
15790: yyResult = pJeannieC$BitwiseXorExpression(yyStart);
15791: yyError = yyResult.select(yyError);
15792: if (yyResult.hasValue()) {
15793: final Node v$3 = yyResult.semanticValue();
15794:
15795: yyRepetition1 = yyResult.index;
15796: yyRepValue1 = Pair.empty();
15797: while (true) {
15798:
15799: yyResult = pJeannieC$BitwiseOrExpression$$Tail1(yyRepetition1);
15800: yyError = yyResult.select(yyError);
15801: if (yyResult.hasValue()) {
15802: final Action<Node> v$4 = yyResult.semanticValue();
15803:
15804: yyRepetition1 = yyResult.index;
15805: yyRepValue1 = new Pair<Action<Node>>(v$4,
15806: yyRepValue1);
15807: continue;
15808: }
15809: break;
15810: }
15811: { // Start scope for v$5.
15812: final Pair<Action<Node>> v$5 = yyRepValue1.reverse();
15813:
15814: yyValue = apply(v$5, v$3, yyStart);
15815:
15816: return new SemanticValue(yyValue, yyRepetition1,
15817: yyError);
15818: } // End scope for v$5.
15819: }
15820:
15821: // Done.
15822: return yyError;
15823: }
15824:
15825: // =========================================================================
15826:
15827: /**
15828: * Parse synthetic nonterminal JeannieC.BitwiseOrExpression$$Tail1.
15829: *
15830: * @param yyStart The index.
15831: * @return The result.
15832: * @throws IOException Signals an I/O error.
15833: */
15834: private Result pJeannieC$BitwiseOrExpression$$Tail1(
15835: final int yyStart) throws IOException {
15836:
15837: Result yyResult;
15838: Action<Node> yyValue;
15839: ParseError yyError = ParseError.DUMMY;
15840:
15841: // Alternative <Or>.
15842:
15843: yyResult = pSymbol(yyStart);
15844: yyError = yyResult.select(yyError);
15845: if (yyResult.hasValue("|")) {
15846:
15847: yyResult = pJeannieC$BitwiseXorExpression(yyResult.index);
15848: yyError = yyResult.select(yyError);
15849: if (yyResult.hasValue()) {
15850: final Node v$g$2 = yyResult.semanticValue();
15851:
15852: yyValue = new Action<Node>() {
15853: public Node run(Node v$1) {
15854: return GNode.create("BitwiseOrExpression", v$1,
15855: v$g$2);
15856: }
15857: };
15858:
15859: return yyResult.createValue(yyValue, yyError);
15860: }
15861: }
15862:
15863: // Done.
15864: yyError = yyError.select("bitwise or expression expected",
15865: yyStart);
15866: return yyError;
15867: }
15868:
15869: // =========================================================================
15870:
15871: /**
15872: * Parse nonterminal xtc.lang.jeannie.JeannieC.BitwiseXorExpression.
15873: *
15874: * @param yyStart The index.
15875: * @return The result.
15876: * @throws IOException Signals an I/O error.
15877: */
15878: private Result pJeannieC$BitwiseXorExpression(final int yyStart)
15879: throws IOException {
15880:
15881: Result yyResult;
15882: int yyRepetition1;
15883: Pair<Action<Node>> yyRepValue1;
15884: Node yyValue;
15885: ParseError yyError = ParseError.DUMMY;
15886:
15887: // Alternative <Base>.
15888:
15889: yyResult = pJeannieC$BitwiseAndExpression(yyStart);
15890: yyError = yyResult.select(yyError);
15891: if (yyResult.hasValue()) {
15892: final Node v$3 = yyResult.semanticValue();
15893:
15894: yyRepetition1 = yyResult.index;
15895: yyRepValue1 = Pair.empty();
15896: while (true) {
15897:
15898: yyResult = pJeannieC$BitwiseXorExpression$$Tail1(yyRepetition1);
15899: yyError = yyResult.select(yyError);
15900: if (yyResult.hasValue()) {
15901: final Action<Node> v$4 = yyResult.semanticValue();
15902:
15903: yyRepetition1 = yyResult.index;
15904: yyRepValue1 = new Pair<Action<Node>>(v$4,
15905: yyRepValue1);
15906: continue;
15907: }
15908: break;
15909: }
15910: { // Start scope for v$5.
15911: final Pair<Action<Node>> v$5 = yyRepValue1.reverse();
15912:
15913: yyValue = apply(v$5, v$3, yyStart);
15914:
15915: return new SemanticValue(yyValue, yyRepetition1,
15916: yyError);
15917: } // End scope for v$5.
15918: }
15919:
15920: // Done.
15921: return yyError;
15922: }
15923:
15924: // =========================================================================
15925:
15926: /**
15927: * Parse synthetic nonterminal JeannieC.BitwiseXorExpression$$Tail1.
15928: *
15929: * @param yyStart The index.
15930: * @return The result.
15931: * @throws IOException Signals an I/O error.
15932: */
15933: private Result pJeannieC$BitwiseXorExpression$$Tail1(
15934: final int yyStart) throws IOException {
15935:
15936: Result yyResult;
15937: Action<Node> yyValue;
15938: ParseError yyError = ParseError.DUMMY;
15939:
15940: // Alternative <Xor>.
15941:
15942: yyResult = pSymbol(yyStart);
15943: yyError = yyResult.select(yyError);
15944: if (yyResult.hasValue("^")) {
15945:
15946: yyResult = pJeannieC$BitwiseAndExpression(yyResult.index);
15947: yyError = yyResult.select(yyError);
15948: if (yyResult.hasValue()) {
15949: final Node v$g$2 = yyResult.semanticValue();
15950:
15951: yyValue = new Action<Node>() {
15952: public Node run(Node v$1) {
15953: return GNode.create("BitwiseXorExpression",
15954: v$1, v$g$2);
15955: }
15956: };
15957:
15958: return yyResult.createValue(yyValue, yyError);
15959: }
15960: }
15961:
15962: // Done.
15963: yyError = yyError.select("bitwise xor expression expected",
15964: yyStart);
15965: return yyError;
15966: }
15967:
15968: // =========================================================================
15969:
15970: /**
15971: * Parse nonterminal xtc.lang.jeannie.JeannieC.BitwiseAndExpression.
15972: *
15973: * @param yyStart The index.
15974: * @return The result.
15975: * @throws IOException Signals an I/O error.
15976: */
15977: private Result pJeannieC$BitwiseAndExpression(final int yyStart)
15978: throws IOException {
15979:
15980: Result yyResult;
15981: int yyRepetition1;
15982: Pair<Action<Node>> yyRepValue1;
15983: Node yyValue;
15984: ParseError yyError = ParseError.DUMMY;
15985:
15986: // Alternative <Base>.
15987:
15988: yyResult = pJeannieC$EqualityExpression(yyStart);
15989: yyError = yyResult.select(yyError);
15990: if (yyResult.hasValue()) {
15991: final Node v$3 = yyResult.semanticValue();
15992:
15993: yyRepetition1 = yyResult.index;
15994: yyRepValue1 = Pair.empty();
15995: while (true) {
15996:
15997: yyResult = pJeannieC$BitwiseAndExpression$$Tail1(yyRepetition1);
15998: yyError = yyResult.select(yyError);
15999: if (yyResult.hasValue()) {
16000: final Action<Node> v$4 = yyResult.semanticValue();
16001:
16002: yyRepetition1 = yyResult.index;
16003: yyRepValue1 = new Pair<Action<Node>>(v$4,
16004: yyRepValue1);
16005: continue;
16006: }
16007: break;
16008: }
16009: { // Start scope for v$5.
16010: final Pair<Action<Node>> v$5 = yyRepValue1.reverse();
16011:
16012: yyValue = apply(v$5, v$3, yyStart);
16013:
16014: return new SemanticValue(yyValue, yyRepetition1,
16015: yyError);
16016: } // End scope for v$5.
16017: }
16018:
16019: // Done.
16020: return yyError;
16021: }
16022:
16023: // =========================================================================
16024:
16025: /**
16026: * Parse synthetic nonterminal JeannieC.BitwiseAndExpression$$Tail1.
16027: *
16028: * @param yyStart The index.
16029: * @return The result.
16030: * @throws IOException Signals an I/O error.
16031: */
16032: private Result pJeannieC$BitwiseAndExpression$$Tail1(
16033: final int yyStart) throws IOException {
16034:
16035: Result yyResult;
16036: Action<Node> yyValue;
16037: ParseError yyError = ParseError.DUMMY;
16038:
16039: // Alternative <And>.
16040:
16041: yyResult = pSymbol(yyStart);
16042: yyError = yyResult.select(yyError);
16043: if (yyResult.hasValue("&")) {
16044:
16045: yyResult = pJeannieC$EqualityExpression(yyResult.index);
16046: yyError = yyResult.select(yyError);
16047: if (yyResult.hasValue()) {
16048: final Node v$g$2 = yyResult.semanticValue();
16049:
16050: yyValue = new Action<Node>() {
16051: public Node run(Node v$1) {
16052: return GNode.create("BitwiseAndExpression",
16053: v$1, v$g$2);
16054: }
16055: };
16056:
16057: return yyResult.createValue(yyValue, yyError);
16058: }
16059: }
16060:
16061: // Done.
16062: yyError = yyError.select("bitwise and expression expected",
16063: yyStart);
16064: return yyError;
16065: }
16066:
16067: // =========================================================================
16068:
16069: /**
16070: * Parse nonterminal xtc.lang.jeannie.JeannieC.EqualityExpression.
16071: *
16072: * @param yyStart The index.
16073: * @return The result.
16074: * @throws IOException Signals an I/O error.
16075: */
16076: private Result pJeannieC$EqualityExpression(final int yyStart)
16077: throws IOException {
16078:
16079: Result yyResult;
16080: int yyRepetition1;
16081: Pair<Action<Node>> yyRepValue1;
16082: Node yyValue;
16083: ParseError yyError = ParseError.DUMMY;
16084:
16085: // Alternative <Base>.
16086:
16087: yyResult = pJeannieC$RelationalExpression(yyStart);
16088: yyError = yyResult.select(yyError);
16089: if (yyResult.hasValue()) {
16090: final Node v$4 = yyResult.semanticValue();
16091:
16092: yyRepetition1 = yyResult.index;
16093: yyRepValue1 = Pair.empty();
16094: while (true) {
16095:
16096: yyResult = pJeannieC$EqualityExpression$$Tail1(yyRepetition1);
16097: yyError = yyResult.select(yyError);
16098: if (yyResult.hasValue()) {
16099: final Action<Node> v$5 = yyResult.semanticValue();
16100:
16101: yyRepetition1 = yyResult.index;
16102: yyRepValue1 = new Pair<Action<Node>>(v$5,
16103: yyRepValue1);
16104: continue;
16105: }
16106: break;
16107: }
16108: { // Start scope for v$6.
16109: final Pair<Action<Node>> v$6 = yyRepValue1.reverse();
16110:
16111: yyValue = apply(v$6, v$4, yyStart);
16112:
16113: return new SemanticValue(yyValue, yyRepetition1,
16114: yyError);
16115: } // End scope for v$6.
16116: }
16117:
16118: // Done.
16119: return yyError;
16120: }
16121:
16122: // =========================================================================
16123:
16124: /**
16125: * Parse synthetic nonterminal JeannieC.EqualityExpression$$Tail1.
16126: *
16127: * @param yyStart The index.
16128: * @return The result.
16129: * @throws IOException Signals an I/O error.
16130: */
16131: private Result pJeannieC$EqualityExpression$$Tail1(final int yyStart)
16132: throws IOException {
16133:
16134: Result yyResult;
16135: Action<Node> yyValue;
16136: ParseError yyError = ParseError.DUMMY;
16137:
16138: // Alternative <Recursion>.
16139:
16140: yyResult = p$$Shared12(yyStart);
16141: yyError = yyResult.select(yyError);
16142: if (yyResult.hasValue()) {
16143: final String v$g$2 = yyResult.semanticValue();
16144:
16145: yyResult = pJeannieC$RelationalExpression(yyResult.index);
16146: yyError = yyResult.select(yyError);
16147: if (yyResult.hasValue()) {
16148: final Node v$g$3 = yyResult.semanticValue();
16149:
16150: yyValue = new Action<Node>() {
16151: public Node run(Node v$1) {
16152: return GNode.create("EqualityExpression", v$1,
16153: v$g$2, v$g$3);
16154: }
16155: };
16156:
16157: return yyResult.createValue(yyValue, yyError);
16158: }
16159: }
16160:
16161: // Done.
16162: return yyError;
16163: }
16164:
16165: // =========================================================================
16166:
16167: /**
16168: * Parse synthetic nonterminal xtc.lang.jeannie.Debugger.$$Shared12.
16169: * This nonterminal represents the duplicate productions
16170: * xtc.lang.jeannie.JeannieC.EqualityOperator,
16171: * xtc.lang.jeannie.DebuggerC.EqualityOperator,
16172: * xtc.lang.jeannie.JeannieJava.EqualityOperator,
16173: * and xtc.lang.jeannie.DebuggerJava.EqualityOperator.
16174: *
16175: * @param yyStart The index.
16176: * @return The result.
16177: * @throws IOException Signals an I/O error.
16178: */
16179: private Result p$$Shared12(final int yyStart) throws IOException {
16180: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
16181: if (null == yyColumn.chunk6)
16182: yyColumn.chunk6 = new Chunk6();
16183: if (null == yyColumn.chunk6.f$$Shared12)
16184: yyColumn.chunk6.f$$Shared12 = p$$Shared12$1(yyStart);
16185: return yyColumn.chunk6.f$$Shared12;
16186: }
16187:
16188: /** Actually parse xtc.lang.jeannie.Debugger.$$Shared12. */
16189: private Result p$$Shared12$1(final int yyStart) throws IOException {
16190: Result yyResult;
16191: String yyValue;
16192: ParseError yyError = ParseError.DUMMY;
16193:
16194: // Alternative <Equal>.
16195:
16196: yyResult = pSymbol(yyStart);
16197: yyError = yyResult.select(yyError);
16198: if (yyResult.hasValue("==")) {
16199: yyValue = "==";
16200:
16201: return yyResult.createValue(yyValue, yyError);
16202: }
16203:
16204: // Alternative <NotEqual>.
16205:
16206: yyResult = pSymbol(yyStart);
16207: yyError = yyResult.select(yyError);
16208: if (yyResult.hasValue("!=")) {
16209: yyValue = "!=";
16210:
16211: return yyResult.createValue(yyValue, yyError);
16212: }
16213:
16214: // Done.
16215: yyError = yyError.select(" expected", yyStart);
16216: return yyError;
16217: }
16218:
16219: // =========================================================================
16220:
16221: /**
16222: * Parse nonterminal xtc.lang.jeannie.JeannieC.RelationalExpression.
16223: *
16224: * @param yyStart The index.
16225: * @return The result.
16226: * @throws IOException Signals an I/O error.
16227: */
16228: private Result pJeannieC$RelationalExpression(final int yyStart)
16229: throws IOException {
16230:
16231: Result yyResult;
16232: int yyRepetition1;
16233: Pair<Action<Node>> yyRepValue1;
16234: Node yyValue;
16235: ParseError yyError = ParseError.DUMMY;
16236:
16237: // Alternative <Base>.
16238:
16239: yyResult = pJeannieC$ShiftExpression(yyStart);
16240: yyError = yyResult.select(yyError);
16241: if (yyResult.hasValue()) {
16242: final Node v$4 = yyResult.semanticValue();
16243:
16244: yyRepetition1 = yyResult.index;
16245: yyRepValue1 = Pair.empty();
16246: while (true) {
16247:
16248: yyResult = pJeannieC$RelationalExpression$$Tail1(yyRepetition1);
16249: yyError = yyResult.select(yyError);
16250: if (yyResult.hasValue()) {
16251: final Action<Node> v$5 = yyResult.semanticValue();
16252:
16253: yyRepetition1 = yyResult.index;
16254: yyRepValue1 = new Pair<Action<Node>>(v$5,
16255: yyRepValue1);
16256: continue;
16257: }
16258: break;
16259: }
16260: { // Start scope for v$6.
16261: final Pair<Action<Node>> v$6 = yyRepValue1.reverse();
16262:
16263: yyValue = apply(v$6, v$4, yyStart);
16264:
16265: return new SemanticValue(yyValue, yyRepetition1,
16266: yyError);
16267: } // End scope for v$6.
16268: }
16269:
16270: // Done.
16271: return yyError;
16272: }
16273:
16274: // =========================================================================
16275:
16276: /**
16277: * Parse synthetic nonterminal JeannieC.RelationalExpression$$Tail1.
16278: *
16279: * @param yyStart The index.
16280: * @return The result.
16281: * @throws IOException Signals an I/O error.
16282: */
16283: private Result pJeannieC$RelationalExpression$$Tail1(
16284: final int yyStart) throws IOException {
16285:
16286: Result yyResult;
16287: Action<Node> yyValue;
16288: ParseError yyError = ParseError.DUMMY;
16289:
16290: // Alternative <Recursion>.
16291:
16292: yyResult = p$$Shared13(yyStart);
16293: yyError = yyResult.select(yyError);
16294: if (yyResult.hasValue()) {
16295: final String v$g$2 = yyResult.semanticValue();
16296:
16297: yyResult = pJeannieC$ShiftExpression(yyResult.index);
16298: yyError = yyResult.select(yyError);
16299: if (yyResult.hasValue()) {
16300: final Node v$g$3 = yyResult.semanticValue();
16301:
16302: yyValue = new Action<Node>() {
16303: public Node run(Node v$1) {
16304: return GNode.create("RelationalExpression",
16305: v$1, v$g$2, v$g$3);
16306: }
16307: };
16308:
16309: return yyResult.createValue(yyValue, yyError);
16310: }
16311: }
16312:
16313: // Done.
16314: return yyError;
16315: }
16316:
16317: // =========================================================================
16318:
16319: /**
16320: * Parse synthetic nonterminal xtc.lang.jeannie.Debugger.$$Shared13.
16321: * This nonterminal represents the duplicate productions
16322: * xtc.lang.jeannie.JeannieC.RelationalOperator
16323: * and xtc.lang.jeannie.DebuggerC.RelationalOperator.
16324: *
16325: * @param yyStart The index.
16326: * @return The result.
16327: * @throws IOException Signals an I/O error.
16328: */
16329: private Result p$$Shared13(final int yyStart) throws IOException {
16330: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
16331: if (null == yyColumn.chunk6)
16332: yyColumn.chunk6 = new Chunk6();
16333: if (null == yyColumn.chunk6.f$$Shared13)
16334: yyColumn.chunk6.f$$Shared13 = p$$Shared13$1(yyStart);
16335: return yyColumn.chunk6.f$$Shared13;
16336: }
16337:
16338: /** Actually parse xtc.lang.jeannie.Debugger.$$Shared13. */
16339: private Result p$$Shared13$1(final int yyStart) throws IOException {
16340: Result yyResult;
16341: String yyValue;
16342: ParseError yyError = ParseError.DUMMY;
16343:
16344: // Alternative <LessEqual>.
16345:
16346: yyResult = pSymbol(yyStart);
16347: yyError = yyResult.select(yyError);
16348: if (yyResult.hasValue("<=")) {
16349: yyValue = "<=";
16350:
16351: return yyResult.createValue(yyValue, yyError);
16352: }
16353:
16354: // Alternative <Less>.
16355:
16356: yyResult = pSymbol(yyStart);
16357: yyError = yyResult.select(yyError);
16358: if (yyResult.hasValue("<")) {
16359: yyValue = "<";
16360:
16361: return yyResult.createValue(yyValue, yyError);
16362: }
16363:
16364: // Alternative <GreaterEqual>.
16365:
16366: yyResult = pSymbol(yyStart);
16367: yyError = yyResult.select(yyError);
16368: if (yyResult.hasValue(">=")) {
16369: yyValue = ">=";
16370:
16371: return yyResult.createValue(yyValue, yyError);
16372: }
16373:
16374: // Alternative <Greater>.
16375:
16376: yyResult = pSymbol(yyStart);
16377: yyError = yyResult.select(yyError);
16378: if (yyResult.hasValue(">")) {
16379: yyValue = ">";
16380:
16381: return yyResult.createValue(yyValue, yyError);
16382: }
16383:
16384: // Done.
16385: yyError = yyError.select(" expected", yyStart);
16386: return yyError;
16387: }
16388:
16389: // =========================================================================
16390:
16391: /**
16392: * Parse nonterminal xtc.lang.jeannie.JeannieC.ShiftExpression.
16393: *
16394: * @param yyStart The index.
16395: * @return The result.
16396: * @throws IOException Signals an I/O error.
16397: */
16398: private Result pJeannieC$ShiftExpression(final int yyStart)
16399: throws IOException {
16400:
16401: Result yyResult;
16402: int yyRepetition1;
16403: Pair<Action<Node>> yyRepValue1;
16404: Node yyValue;
16405: ParseError yyError = ParseError.DUMMY;
16406:
16407: // Alternative <Base>.
16408:
16409: yyResult = pJeannieC$AdditiveExpression(yyStart);
16410: yyError = yyResult.select(yyError);
16411: if (yyResult.hasValue()) {
16412: final Node v$4 = yyResult.semanticValue();
16413:
16414: yyRepetition1 = yyResult.index;
16415: yyRepValue1 = Pair.empty();
16416: while (true) {
16417:
16418: yyResult = pJeannieC$ShiftExpression$$Tail1(yyRepetition1);
16419: yyError = yyResult.select(yyError);
16420: if (yyResult.hasValue()) {
16421: final Action<Node> v$5 = yyResult.semanticValue();
16422:
16423: yyRepetition1 = yyResult.index;
16424: yyRepValue1 = new Pair<Action<Node>>(v$5,
16425: yyRepValue1);
16426: continue;
16427: }
16428: break;
16429: }
16430: { // Start scope for v$6.
16431: final Pair<Action<Node>> v$6 = yyRepValue1.reverse();
16432:
16433: yyValue = apply(v$6, v$4, yyStart);
16434:
16435: return new SemanticValue(yyValue, yyRepetition1,
16436: yyError);
16437: } // End scope for v$6.
16438: }
16439:
16440: // Done.
16441: return yyError;
16442: }
16443:
16444: // =========================================================================
16445:
16446: /**
16447: * Parse synthetic nonterminal JeannieC.ShiftExpression$$Tail1.
16448: *
16449: * @param yyStart The index.
16450: * @return The result.
16451: * @throws IOException Signals an I/O error.
16452: */
16453: private Result pJeannieC$ShiftExpression$$Tail1(final int yyStart)
16454: throws IOException {
16455:
16456: Result yyResult;
16457: Action<Node> yyValue;
16458: ParseError yyError = ParseError.DUMMY;
16459:
16460: // Alternative <Recursion>.
16461:
16462: yyResult = p$$Shared14(yyStart);
16463: yyError = yyResult.select(yyError);
16464: if (yyResult.hasValue()) {
16465: final String v$g$2 = yyResult.semanticValue();
16466:
16467: yyResult = pJeannieC$AdditiveExpression(yyResult.index);
16468: yyError = yyResult.select(yyError);
16469: if (yyResult.hasValue()) {
16470: final Node v$g$3 = yyResult.semanticValue();
16471:
16472: yyValue = new Action<Node>() {
16473: public Node run(Node v$1) {
16474: return GNode.create("ShiftExpression", v$1,
16475: v$g$2, v$g$3);
16476: }
16477: };
16478:
16479: return yyResult.createValue(yyValue, yyError);
16480: }
16481: }
16482:
16483: // Done.
16484: return yyError;
16485: }
16486:
16487: // =========================================================================
16488:
16489: /**
16490: * Parse synthetic nonterminal xtc.lang.jeannie.Debugger.$$Shared14.
16491: * This nonterminal represents the duplicate productions
16492: * xtc.lang.jeannie.JeannieC.ShiftOperator
16493: * and xtc.lang.jeannie.DebuggerC.ShiftOperator.
16494: *
16495: * @param yyStart The index.
16496: * @return The result.
16497: * @throws IOException Signals an I/O error.
16498: */
16499: private Result p$$Shared14(final int yyStart) throws IOException {
16500: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
16501: if (null == yyColumn.chunk6)
16502: yyColumn.chunk6 = new Chunk6();
16503: if (null == yyColumn.chunk6.f$$Shared14)
16504: yyColumn.chunk6.f$$Shared14 = p$$Shared14$1(yyStart);
16505: return yyColumn.chunk6.f$$Shared14;
16506: }
16507:
16508: /** Actually parse xtc.lang.jeannie.Debugger.$$Shared14. */
16509: private Result p$$Shared14$1(final int yyStart) throws IOException {
16510: Result yyResult;
16511: String yyValue;
16512: ParseError yyError = ParseError.DUMMY;
16513:
16514: // Alternative <Left>.
16515:
16516: yyResult = pSymbol(yyStart);
16517: yyError = yyResult.select(yyError);
16518: if (yyResult.hasValue("<<")) {
16519: yyValue = "<<";
16520:
16521: return yyResult.createValue(yyValue, yyError);
16522: }
16523:
16524: // Alternative <Right>.
16525:
16526: yyResult = pSymbol(yyStart);
16527: yyError = yyResult.select(yyError);
16528: if (yyResult.hasValue(">>")) {
16529: yyValue = ">>";
16530:
16531: return yyResult.createValue(yyValue, yyError);
16532: }
16533:
16534: // Done.
16535: yyError = yyError.select(" expected", yyStart);
16536: return yyError;
16537: }
16538:
16539: // =========================================================================
16540:
16541: /**
16542: * Parse nonterminal xtc.lang.jeannie.JeannieC.AdditiveExpression.
16543: *
16544: * @param yyStart The index.
16545: * @return The result.
16546: * @throws IOException Signals an I/O error.
16547: */
16548: private Result pJeannieC$AdditiveExpression(final int yyStart)
16549: throws IOException {
16550:
16551: Result yyResult;
16552: int yyRepetition1;
16553: Pair<Action<Node>> yyRepValue1;
16554: Node yyValue;
16555: ParseError yyError = ParseError.DUMMY;
16556:
16557: // Alternative <Base>.
16558:
16559: yyResult = pJeannieC$MultiplicativeExpression(yyStart);
16560: yyError = yyResult.select(yyError);
16561: if (yyResult.hasValue()) {
16562: final Node v$4 = yyResult.semanticValue();
16563:
16564: yyRepetition1 = yyResult.index;
16565: yyRepValue1 = Pair.empty();
16566: while (true) {
16567:
16568: yyResult = pJeannieC$AdditiveExpression$$Tail1(yyRepetition1);
16569: yyError = yyResult.select(yyError);
16570: if (yyResult.hasValue()) {
16571: final Action<Node> v$5 = yyResult.semanticValue();
16572:
16573: yyRepetition1 = yyResult.index;
16574: yyRepValue1 = new Pair<Action<Node>>(v$5,
16575: yyRepValue1);
16576: continue;
16577: }
16578: break;
16579: }
16580: { // Start scope for v$6.
16581: final Pair<Action<Node>> v$6 = yyRepValue1.reverse();
16582:
16583: yyValue = apply(v$6, v$4, yyStart);
16584:
16585: return new SemanticValue(yyValue, yyRepetition1,
16586: yyError);
16587: } // End scope for v$6.
16588: }
16589:
16590: // Done.
16591: return yyError;
16592: }
16593:
16594: // =========================================================================
16595:
16596: /**
16597: * Parse synthetic nonterminal JeannieC.AdditiveExpression$$Tail1.
16598: *
16599: * @param yyStart The index.
16600: * @return The result.
16601: * @throws IOException Signals an I/O error.
16602: */
16603: private Result pJeannieC$AdditiveExpression$$Tail1(final int yyStart)
16604: throws IOException {
16605:
16606: Result yyResult;
16607: Action<Node> yyValue;
16608: ParseError yyError = ParseError.DUMMY;
16609:
16610: // Alternative <Recursion>.
16611:
16612: yyResult = p$$Shared15(yyStart);
16613: yyError = yyResult.select(yyError);
16614: if (yyResult.hasValue()) {
16615: final String v$g$2 = yyResult.semanticValue();
16616:
16617: yyResult = pJeannieC$MultiplicativeExpression(yyResult.index);
16618: yyError = yyResult.select(yyError);
16619: if (yyResult.hasValue()) {
16620: final Node v$g$3 = yyResult.semanticValue();
16621:
16622: yyValue = new Action<Node>() {
16623: public Node run(Node v$1) {
16624: return GNode.create("AdditiveExpression", v$1,
16625: v$g$2, v$g$3);
16626: }
16627: };
16628:
16629: return yyResult.createValue(yyValue, yyError);
16630: }
16631: }
16632:
16633: // Done.
16634: return yyError;
16635: }
16636:
16637: // =========================================================================
16638:
16639: /**
16640: * Parse synthetic nonterminal xtc.lang.jeannie.Debugger.$$Shared15.
16641: * This nonterminal represents the duplicate productions
16642: * xtc.lang.jeannie.JeannieC.AdditiveOperator,
16643: * xtc.lang.jeannie.DebuggerC.AdditiveOperator,
16644: * xtc.lang.jeannie.JeannieJava.AdditiveOperator,
16645: * and xtc.lang.jeannie.DebuggerJava.AdditiveOperator.
16646: *
16647: * @param yyStart The index.
16648: * @return The result.
16649: * @throws IOException Signals an I/O error.
16650: */
16651: private Result p$$Shared15(final int yyStart) throws IOException {
16652: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
16653: if (null == yyColumn.chunk6)
16654: yyColumn.chunk6 = new Chunk6();
16655: if (null == yyColumn.chunk6.f$$Shared15)
16656: yyColumn.chunk6.f$$Shared15 = p$$Shared15$1(yyStart);
16657: return yyColumn.chunk6.f$$Shared15;
16658: }
16659:
16660: /** Actually parse xtc.lang.jeannie.Debugger.$$Shared15. */
16661: private Result p$$Shared15$1(final int yyStart) throws IOException {
16662: Result yyResult;
16663: String yyValue;
16664: ParseError yyError = ParseError.DUMMY;
16665:
16666: // Alternative <Plus>.
16667:
16668: yyResult = pSymbol(yyStart);
16669: yyError = yyResult.select(yyError);
16670: if (yyResult.hasValue("+")) {
16671: yyValue = "+";
16672:
16673: return yyResult.createValue(yyValue, yyError);
16674: }
16675:
16676: // Alternative <Minus>.
16677:
16678: yyResult = pSymbol(yyStart);
16679: yyError = yyResult.select(yyError);
16680: if (yyResult.hasValue("-")) {
16681: yyValue = "-";
16682:
16683: return yyResult.createValue(yyValue, yyError);
16684: }
16685:
16686: // Done.
16687: yyError = yyError.select(" expected", yyStart);
16688: return yyError;
16689: }
16690:
16691: // =========================================================================
16692:
16693: /**
16694: * Parse nonterminal xtc.lang.jeannie.JeannieC.MultiplicativeExpression.
16695: *
16696: * @param yyStart The index.
16697: * @return The result.
16698: * @throws IOException Signals an I/O error.
16699: */
16700: private Result pJeannieC$MultiplicativeExpression(final int yyStart)
16701: throws IOException {
16702:
16703: Result yyResult;
16704: int yyRepetition1;
16705: Pair<Action<Node>> yyRepValue1;
16706: Node yyValue;
16707: ParseError yyError = ParseError.DUMMY;
16708:
16709: // Alternative <Base>.
16710:
16711: yyResult = pJeannieC$CastExpression(yyStart);
16712: yyError = yyResult.select(yyError);
16713: if (yyResult.hasValue()) {
16714: final Node v$4 = yyResult.semanticValue();
16715:
16716: yyRepetition1 = yyResult.index;
16717: yyRepValue1 = Pair.empty();
16718: while (true) {
16719:
16720: yyResult = pJeannieC$MultiplicativeExpression$$Tail1(yyRepetition1);
16721: yyError = yyResult.select(yyError);
16722: if (yyResult.hasValue()) {
16723: final Action<Node> v$5 = yyResult.semanticValue();
16724:
16725: yyRepetition1 = yyResult.index;
16726: yyRepValue1 = new Pair<Action<Node>>(v$5,
16727: yyRepValue1);
16728: continue;
16729: }
16730: break;
16731: }
16732: { // Start scope for v$6.
16733: final Pair<Action<Node>> v$6 = yyRepValue1.reverse();
16734:
16735: yyValue = apply(v$6, v$4, yyStart);
16736:
16737: return new SemanticValue(yyValue, yyRepetition1,
16738: yyError);
16739: } // End scope for v$6.
16740: }
16741:
16742: // Done.
16743: return yyError;
16744: }
16745:
16746: // =========================================================================
16747:
16748: /**
16749: * Parse synthetic nonterminal JeannieC.MultiplicativeExpression$$Tail1.
16750: *
16751: * @param yyStart The index.
16752: * @return The result.
16753: * @throws IOException Signals an I/O error.
16754: */
16755: private Result pJeannieC$MultiplicativeExpression$$Tail1(
16756: final int yyStart) throws IOException {
16757:
16758: Result yyResult;
16759: Action<Node> yyValue;
16760: ParseError yyError = ParseError.DUMMY;
16761:
16762: // Alternative <Recursion>.
16763:
16764: yyResult = p$$Shared16(yyStart);
16765: yyError = yyResult.select(yyError);
16766: if (yyResult.hasValue()) {
16767: final String v$g$2 = yyResult.semanticValue();
16768:
16769: yyResult = pJeannieC$CastExpression(yyResult.index);
16770: yyError = yyResult.select(yyError);
16771: if (yyResult.hasValue()) {
16772: final Node v$g$3 = yyResult.semanticValue();
16773:
16774: yyValue = new Action<Node>() {
16775: public Node run(Node v$1) {
16776: return GNode.create("MultiplicativeExpression",
16777: v$1, v$g$2, v$g$3);
16778: }
16779: };
16780:
16781: return yyResult.createValue(yyValue, yyError);
16782: }
16783: }
16784:
16785: // Done.
16786: return yyError;
16787: }
16788:
16789: // =========================================================================
16790:
16791: /**
16792: * Parse synthetic nonterminal xtc.lang.jeannie.Debugger.$$Shared16.
16793: * This nonterminal represents the duplicate productions
16794: * xtc.lang.jeannie.JeannieC.MultiplicativeOperator,
16795: * xtc.lang.jeannie.DebuggerC.MultiplicativeOperator,
16796: * xtc.lang.jeannie.JeannieJava.MultiplicativeOperator,
16797: * and xtc.lang.jeannie.DebuggerJava.MultiplicativeOperator.
16798: *
16799: * @param yyStart The index.
16800: * @return The result.
16801: * @throws IOException Signals an I/O error.
16802: */
16803: private Result p$$Shared16(final int yyStart) throws IOException {
16804: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
16805: if (null == yyColumn.chunk6)
16806: yyColumn.chunk6 = new Chunk6();
16807: if (null == yyColumn.chunk6.f$$Shared16)
16808: yyColumn.chunk6.f$$Shared16 = p$$Shared16$1(yyStart);
16809: return yyColumn.chunk6.f$$Shared16;
16810: }
16811:
16812: /** Actually parse xtc.lang.jeannie.Debugger.$$Shared16. */
16813: private Result p$$Shared16$1(final int yyStart) throws IOException {
16814: Result yyResult;
16815: String yyValue;
16816: ParseError yyError = ParseError.DUMMY;
16817:
16818: // Alternative <Times>.
16819:
16820: yyResult = pSymbol(yyStart);
16821: yyError = yyResult.select(yyError);
16822: if (yyResult.hasValue("*")) {
16823: yyValue = "*";
16824:
16825: return yyResult.createValue(yyValue, yyError);
16826: }
16827:
16828: // Alternative <Over>.
16829:
16830: yyResult = pSymbol(yyStart);
16831: yyError = yyResult.select(yyError);
16832: if (yyResult.hasValue("/")) {
16833: yyValue = "/";
16834:
16835: return yyResult.createValue(yyValue, yyError);
16836: }
16837:
16838: // Alternative <Modulo>.
16839:
16840: yyResult = pSymbol(yyStart);
16841: yyError = yyResult.select(yyError);
16842: if (yyResult.hasValue("%")) {
16843: yyValue = "%";
16844:
16845: return yyResult.createValue(yyValue, yyError);
16846: }
16847:
16848: // Done.
16849: yyError = yyError.select(" expected", yyStart);
16850: return yyError;
16851: }
16852:
16853: // =========================================================================
16854:
16855: /**
16856: * Parse nonterminal xtc.lang.jeannie.JeannieC.CastExpression.
16857: *
16858: * @param yyStart The index.
16859: * @return The result.
16860: * @throws IOException Signals an I/O error.
16861: */
16862: private Result pJeannieC$CastExpression(final int yyStart)
16863: throws IOException {
16864:
16865: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
16866: if (null == yyColumn.chunk6)
16867: yyColumn.chunk6 = new Chunk6();
16868: if (null == yyColumn.chunk6.fJeannieC$CastExpression)
16869: yyColumn.chunk6.fJeannieC$CastExpression = pJeannieC$CastExpression$1(yyStart);
16870: return yyColumn.chunk6.fJeannieC$CastExpression;
16871: }
16872:
16873: /** Actually parse xtc.lang.jeannie.JeannieC.CastExpression. */
16874: private Result pJeannieC$CastExpression$1(final int yyStart)
16875: throws IOException {
16876:
16877: Result yyResult;
16878: int yyBase;
16879: Node yyValue;
16880: ParseError yyError = ParseError.DUMMY;
16881:
16882: // Alternative <Cast>.
16883:
16884: yyResult = pSymbol(yyStart);
16885: yyError = yyResult.select(yyError);
16886: if (yyResult.hasValue("(")) {
16887:
16888: yyResult = pJeannieC$TypeName(yyResult.index);
16889: yyError = yyResult.select(yyError);
16890: if (yyResult.hasValue()) {
16891: final Node v$g$1 = yyResult.semanticValue();
16892:
16893: yyBase = yyResult.index;
16894: yyResult = pSymbol(yyBase);
16895: yyError = yyResult.select(yyError);
16896: if (yyResult.hasValue(")")) {
16897:
16898: yyResult = pJeannieC$CastExpression(yyResult.index);
16899: yyError = yyResult.select(yyError);
16900: if (yyResult.hasValue()) {
16901: final Node v$g$2 = yyResult.semanticValue();
16902:
16903: yyValue = GNode.create("CastExpression", v$g$1,
16904: v$g$2);
16905: yyValue.setLocation(location(yyStart));
16906:
16907: return yyResult.createValue(yyValue, yyError);
16908: }
16909: } else {
16910: yyError = yyError.select("\")\" expected", yyBase);
16911: }
16912: }
16913: }
16914:
16915: // Alternative <Base>.
16916:
16917: yyResult = pJeannieC$UnaryExpression(yyStart);
16918: yyError = yyResult.select(yyError);
16919: if (yyResult.hasValue()) {
16920: yyValue = yyResult.semanticValue();
16921:
16922: return yyResult.createValue(yyValue, yyError);
16923: }
16924:
16925: // Done.
16926: yyError = yyError.select("cast expression expected", yyStart);
16927: return yyError;
16928: }
16929:
16930: // =========================================================================
16931:
16932: /**
16933: * Parse nonterminal xtc.lang.jeannie.JeannieC.UnaryExpression.
16934: *
16935: * @param yyStart The index.
16936: * @return The result.
16937: * @throws IOException Signals an I/O error.
16938: */
16939: private Result pJeannieC$UnaryExpression(final int yyStart)
16940: throws IOException {
16941:
16942: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
16943: if (null == yyColumn.chunk6)
16944: yyColumn.chunk6 = new Chunk6();
16945: if (null == yyColumn.chunk6.fJeannieC$UnaryExpression)
16946: yyColumn.chunk6.fJeannieC$UnaryExpression = pJeannieC$UnaryExpression$1(yyStart);
16947: return yyColumn.chunk6.fJeannieC$UnaryExpression;
16948: }
16949:
16950: /** Actually parse xtc.lang.jeannie.JeannieC.UnaryExpression. */
16951: private Result pJeannieC$UnaryExpression$1(final int yyStart)
16952: throws IOException {
16953:
16954: Result yyResult;
16955: Result yyPredResult;
16956: boolean yyPredMatched;
16957: int yyBase;
16958: Node yyValue;
16959: ParseError yyError = ParseError.DUMMY;
16960:
16961: // Alternative 1.
16962:
16963: yyResult = pKeyword(yyStart);
16964: yyError = yyResult.select(yyError);
16965: if (yyResult.hasValue("sizeof")) {
16966:
16967: final int yyChoice1 = yyResult.index;
16968:
16969: // Nested alternative 1.
16970:
16971: yyBase = yyChoice1;
16972: yyResult = pSymbol(yyBase);
16973: yyError = yyResult.select(yyError);
16974: if (yyResult.hasValue("(")) {
16975:
16976: yyResult = pJeannieC$TypeName(yyResult.index);
16977: yyError = yyResult.select(yyError);
16978: if (yyResult.hasValue()) {
16979: final Node v$g$1 = yyResult.semanticValue();
16980:
16981: yyBase = yyResult.index;
16982: yyResult = pSymbol(yyBase);
16983: yyError = yyResult.select(yyError);
16984: if (yyResult.hasValue(")")) {
16985:
16986: yyPredMatched = false;
16987:
16988: yyPredResult = pSymbol(yyResult.index);
16989: if (yyPredResult.hasValue("{")) {
16990:
16991: yyPredMatched = true;
16992: }
16993:
16994: if (!yyPredMatched) {
16995:
16996: yyValue = GNode.create("SizeofExpression",
16997: v$g$1);
16998: yyValue.setLocation(location(yyStart));
16999:
17000: return yyResult.createValue(yyValue,
17001: yyError);
17002: } else {
17003: yyError = yyError.select(
17004: "unary expression expected",
17005: yyStart);
17006: }
17007: } else {
17008: yyError = yyError.select("\")\" expected",
17009: yyBase);
17010: }
17011: }
17012: } else {
17013: yyError = yyError.select("\"(\" expected", yyBase);
17014: }
17015:
17016: // Nested alternative 2.
17017:
17018: yyResult = pJeannieC$UnaryExpression(yyChoice1);
17019: yyError = yyResult.select(yyError);
17020: if (yyResult.hasValue()) {
17021: final Node v$g$2 = yyResult.semanticValue();
17022:
17023: yyValue = GNode.create("SizeofExpression", v$g$2);
17024: yyValue.setLocation(location(yyStart));
17025:
17026: return yyResult.createValue(yyValue, yyError);
17027: }
17028: }
17029:
17030: // Alternative 2.
17031:
17032: yyResult = p$$Shared17(yyStart);
17033: yyError = yyResult.select(yyError);
17034: if (yyResult.hasValue()) {
17035:
17036: final int yyChoice1 = yyResult.index;
17037:
17038: // Nested alternative 1.
17039:
17040: yyBase = yyChoice1;
17041: yyResult = pSymbol(yyBase);
17042: yyError = yyResult.select(yyError);
17043: if (yyResult.hasValue("(")) {
17044:
17045: yyResult = pJeannieC$TypeName(yyResult.index);
17046: yyError = yyResult.select(yyError);
17047: if (yyResult.hasValue()) {
17048: final Node v$g$1 = yyResult.semanticValue();
17049:
17050: yyBase = yyResult.index;
17051: yyResult = pSymbol(yyBase);
17052: yyError = yyResult.select(yyError);
17053: if (yyResult.hasValue(")")) {
17054:
17055: yyPredMatched = false;
17056:
17057: yyPredResult = pSymbol(yyResult.index);
17058: if (yyPredResult.hasValue("{")) {
17059:
17060: yyPredMatched = true;
17061: }
17062:
17063: if (!yyPredMatched) {
17064:
17065: yyValue = GNode.create("AlignofExpression",
17066: v$g$1);
17067: yyValue.setLocation(location(yyStart));
17068:
17069: return yyResult.createValue(yyValue,
17070: yyError);
17071: } else {
17072: yyError = yyError.select(
17073: "unary expression expected",
17074: yyStart);
17075: }
17076: } else {
17077: yyError = yyError.select("\")\" expected",
17078: yyBase);
17079: }
17080: }
17081: } else {
17082: yyError = yyError.select("\"(\" expected", yyBase);
17083: }
17084:
17085: // Nested alternative 2.
17086:
17087: yyResult = pJeannieC$UnaryExpression(yyChoice1);
17088: yyError = yyResult.select(yyError);
17089: if (yyResult.hasValue()) {
17090: final Node v$g$2 = yyResult.semanticValue();
17091:
17092: yyValue = GNode.create("AlignofExpression", v$g$2);
17093: yyValue.setLocation(location(yyStart));
17094:
17095: return yyResult.createValue(yyValue, yyError);
17096: }
17097: }
17098:
17099: // Alternative 3.
17100:
17101: yyResult = pKeyword(yyStart);
17102: yyError = yyResult.select(yyError);
17103: if (yyResult.hasValue("__builtin_offsetof")) {
17104:
17105: yyBase = yyResult.index;
17106: yyResult = pSymbol(yyBase);
17107: yyError = yyResult.select(yyError);
17108: if (yyResult.hasValue("(")) {
17109:
17110: yyResult = pJeannieC$TypeName(yyResult.index);
17111: yyError = yyResult.select(yyError);
17112: if (yyResult.hasValue()) {
17113: final Node v$g$1 = yyResult.semanticValue();
17114:
17115: yyBase = yyResult.index;
17116: yyResult = pSymbol(yyBase);
17117: yyError = yyResult.select(yyError);
17118: if (yyResult.hasValue(",")) {
17119:
17120: yyResult = pJeannieC$PostfixExpression(yyResult.index);
17121: yyError = yyResult.select(yyError);
17122: if (yyResult.hasValue()) {
17123: final Node v$g$2 = yyResult.semanticValue();
17124:
17125: yyBase = yyResult.index;
17126: yyResult = pSymbol(yyBase);
17127: yyError = yyResult.select(yyError);
17128: if (yyResult.hasValue(")")) {
17129:
17130: yyValue = GNode.create(
17131: "OffsetofExpression", v$g$1,
17132: v$g$2);
17133: yyValue.setLocation(location(yyStart));
17134:
17135: return yyResult.createValue(yyValue,
17136: yyError);
17137: } else {
17138: yyError = yyError.select(
17139: "\")\" expected", yyBase);
17140: }
17141: }
17142: } else {
17143: yyError = yyError.select("\",\" expected",
17144: yyBase);
17145: }
17146: }
17147: } else {
17148: yyError = yyError.select("\"(\" expected", yyBase);
17149: }
17150: }
17151:
17152: // Alternative 4.
17153:
17154: yyResult = pKeyword(yyStart);
17155: yyError = yyResult.select(yyError);
17156: if (yyResult.hasValue("__builtin_types_compatible_p")) {
17157:
17158: yyBase = yyResult.index;
17159: yyResult = pSymbol(yyBase);
17160: yyError = yyResult.select(yyError);
17161: if (yyResult.hasValue("(")) {
17162:
17163: yyResult = pJeannieC$TypeName(yyResult.index);
17164: yyError = yyResult.select(yyError);
17165: if (yyResult.hasValue()) {
17166: final Node v$g$1 = yyResult.semanticValue();
17167:
17168: yyBase = yyResult.index;
17169: yyResult = pSymbol(yyBase);
17170: yyError = yyResult.select(yyError);
17171: if (yyResult.hasValue(",")) {
17172:
17173: yyResult = pJeannieC$TypeName(yyResult.index);
17174: yyError = yyResult.select(yyError);
17175: if (yyResult.hasValue()) {
17176: final Node v$g$2 = yyResult.semanticValue();
17177:
17178: yyBase = yyResult.index;
17179: yyResult = pSymbol(yyBase);
17180: yyError = yyResult.select(yyError);
17181: if (yyResult.hasValue(")")) {
17182:
17183: yyValue = GNode.create(
17184: "TypeCompatibilityExpression",
17185: v$g$1, v$g$2);
17186: yyValue.setLocation(location(yyStart));
17187:
17188: return yyResult.createValue(yyValue,
17189: yyError);
17190: } else {
17191: yyError = yyError.select(
17192: "\")\" expected", yyBase);
17193: }
17194: }
17195: } else {
17196: yyError = yyError.select("\",\" expected",
17197: yyBase);
17198: }
17199: }
17200: } else {
17201: yyError = yyError.select("\"(\" expected", yyBase);
17202: }
17203: }
17204:
17205: // Alternative 5.
17206:
17207: yyResult = pSymbol(yyStart);
17208: yyError = yyResult.select(yyError);
17209: if (yyResult.hasValue("-")) {
17210:
17211: yyResult = pJeannieC$CastExpression(yyResult.index);
17212: yyError = yyResult.select(yyError);
17213: if (yyResult.hasValue()) {
17214: final Node v$g$1 = yyResult.semanticValue();
17215:
17216: yyValue = GNode.create("UnaryMinusExpression", v$g$1);
17217: yyValue.setLocation(location(yyStart));
17218:
17219: return yyResult.createValue(yyValue, yyError);
17220: }
17221: }
17222:
17223: // Alternative 6.
17224:
17225: yyResult = pSymbol(yyStart);
17226: yyError = yyResult.select(yyError);
17227: if (yyResult.hasValue("+")) {
17228:
17229: yyResult = pJeannieC$CastExpression(yyResult.index);
17230: yyError = yyResult.select(yyError);
17231: if (yyResult.hasValue()) {
17232: final Node v$g$1 = yyResult.semanticValue();
17233:
17234: yyValue = GNode.create("UnaryPlusExpression", v$g$1);
17235: yyValue.setLocation(location(yyStart));
17236:
17237: return yyResult.createValue(yyValue, yyError);
17238: }
17239: }
17240:
17241: // Alternative <JavaInCExpression>.
17242:
17243: yyResult = pJeannieC$JavaInCExpression(yyStart);
17244: yyError = yyResult.select(yyError);
17245: if (yyResult.hasValue()) {
17246: yyValue = yyResult.semanticValue();
17247:
17248: return yyResult.createValue(yyValue, yyError);
17249: }
17250:
17251: // Alternative 8.
17252:
17253: yyResult = pSymbol(yyStart);
17254: yyError = yyResult.select(yyError);
17255: if (yyResult.hasValue("!")) {
17256:
17257: yyResult = pJeannieC$CastExpression(yyResult.index);
17258: yyError = yyResult.select(yyError);
17259: if (yyResult.hasValue()) {
17260: final Node v$g$1 = yyResult.semanticValue();
17261:
17262: yyValue = GNode.create("LogicalNegationExpression",
17263: v$g$1);
17264: yyValue.setLocation(location(yyStart));
17265:
17266: return yyResult.createValue(yyValue, yyError);
17267: }
17268: }
17269:
17270: // Alternative 9.
17271:
17272: yyResult = pSymbol(yyStart);
17273: yyError = yyResult.select(yyError);
17274: if (yyResult.hasValue("~")) {
17275:
17276: yyResult = pJeannieC$CastExpression(yyResult.index);
17277: yyError = yyResult.select(yyError);
17278: if (yyResult.hasValue()) {
17279: final Node v$g$1 = yyResult.semanticValue();
17280:
17281: yyValue = GNode.create("BitwiseNegationExpression",
17282: v$g$1);
17283: yyValue.setLocation(location(yyStart));
17284:
17285: return yyResult.createValue(yyValue, yyError);
17286: }
17287: }
17288:
17289: // Alternative 10.
17290:
17291: yyResult = pSymbol(yyStart);
17292: yyError = yyResult.select(yyError);
17293: if (yyResult.hasValue("&")) {
17294:
17295: yyResult = pJeannieC$CastExpression(yyResult.index);
17296: yyError = yyResult.select(yyError);
17297: if (yyResult.hasValue()) {
17298: final Node v$g$1 = yyResult.semanticValue();
17299:
17300: yyValue = GNode.create("AddressExpression", v$g$1);
17301: yyValue.setLocation(location(yyStart));
17302:
17303: return yyResult.createValue(yyValue, yyError);
17304: }
17305: }
17306:
17307: // Alternative 11.
17308:
17309: if (GCC) {
17310:
17311: yyResult = pSymbol(yyStart);
17312: yyError = yyResult.select(yyError);
17313: if (yyResult.hasValue("&&")) {
17314:
17315: yyResult = pCIdentifier$Identifier(yyResult.index);
17316: yyError = yyResult.select(yyError);
17317: if (yyResult.hasValue()) {
17318: final String v$g$1 = yyResult.semanticValue();
17319:
17320: yyValue = GNode.create("LabelAddressExpression",
17321: v$g$1);
17322: yyValue.setLocation(location(yyStart));
17323:
17324: return yyResult.createValue(yyValue, yyError);
17325: }
17326: }
17327: }
17328:
17329: // Alternative 12.
17330:
17331: yyResult = pSymbol(yyStart);
17332: yyError = yyResult.select(yyError);
17333: if (yyResult.hasValue("*")) {
17334:
17335: yyResult = pJeannieC$CastExpression(yyResult.index);
17336: yyError = yyResult.select(yyError);
17337: if (yyResult.hasValue()) {
17338: final Node v$g$1 = yyResult.semanticValue();
17339:
17340: yyValue = GNode.create("IndirectionExpression", v$g$1);
17341: yyValue.setLocation(location(yyStart));
17342:
17343: return yyResult.createValue(yyValue, yyError);
17344: }
17345: }
17346:
17347: // Alternative 13.
17348:
17349: yyResult = pSymbol(yyStart);
17350: yyError = yyResult.select(yyError);
17351: if (yyResult.hasValue("++")) {
17352:
17353: yyResult = pJeannieC$UnaryExpression(yyResult.index);
17354: yyError = yyResult.select(yyError);
17355: if (yyResult.hasValue()) {
17356: final Node v$g$1 = yyResult.semanticValue();
17357:
17358: yyValue = GNode.create("PreincrementExpression", v$g$1);
17359: yyValue.setLocation(location(yyStart));
17360:
17361: return yyResult.createValue(yyValue, yyError);
17362: }
17363: }
17364:
17365: // Alternative 14.
17366:
17367: yyResult = pSymbol(yyStart);
17368: yyError = yyResult.select(yyError);
17369: if (yyResult.hasValue("--")) {
17370:
17371: yyResult = pJeannieC$UnaryExpression(yyResult.index);
17372: yyError = yyResult.select(yyError);
17373: if (yyResult.hasValue()) {
17374: final Node v$g$1 = yyResult.semanticValue();
17375:
17376: yyValue = GNode.create("PredecrementExpression", v$g$1);
17377: yyValue.setLocation(location(yyStart));
17378:
17379: return yyResult.createValue(yyValue, yyError);
17380: }
17381: }
17382:
17383: // Alternative 15.
17384:
17385: if (GCC) {
17386:
17387: yyResult = pKeyword(yyStart);
17388: yyError = yyResult.select(yyError);
17389: if (yyResult.hasValue("__extension__")) {
17390:
17391: yyResult = pJeannieC$CastExpression(yyResult.index);
17392: yyError = yyResult.select(yyError);
17393: if (yyResult.hasValue()) {
17394: final Node v$g$1 = yyResult.semanticValue();
17395:
17396: yyValue = GNode
17397: .create("ExtensionExpression", v$g$1);
17398: yyValue.setLocation(location(yyStart));
17399:
17400: return yyResult.createValue(yyValue, yyError);
17401: }
17402: }
17403: }
17404:
17405: // Alternative <Base>.
17406:
17407: yyResult = pJeannieC$PostfixExpression(yyStart);
17408: yyError = yyResult.select(yyError);
17409: if (yyResult.hasValue()) {
17410: yyValue = yyResult.semanticValue();
17411:
17412: return yyResult.createValue(yyValue, yyError);
17413: }
17414:
17415: // Done.
17416: yyError = yyError.select("unary expression expected", yyStart);
17417: return yyError;
17418: }
17419:
17420: // =========================================================================
17421:
17422: /**
17423: * Parse synthetic nonterminal xtc.lang.jeannie.Debugger.$$Shared17.
17424: * This nonterminal represents the duplicate productions
17425: * xtc.lang.jeannie.JeannieC.AlignofKeyword
17426: * and xtc.lang.jeannie.DebuggerC.AlignofKeyword.
17427: *
17428: * @param yyStart The index.
17429: * @return The result.
17430: * @throws IOException Signals an I/O error.
17431: */
17432: private Result p$$Shared17(final int yyStart) throws IOException {
17433: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
17434: if (null == yyColumn.chunk6)
17435: yyColumn.chunk6 = new Chunk6();
17436: if (null == yyColumn.chunk6.f$$Shared17)
17437: yyColumn.chunk6.f$$Shared17 = p$$Shared17$1(yyStart);
17438: return yyColumn.chunk6.f$$Shared17;
17439: }
17440:
17441: /** Actually parse xtc.lang.jeannie.Debugger.$$Shared17. */
17442: private Result p$$Shared17$1(final int yyStart) throws IOException {
17443: Result yyResult;
17444: Void yyValue;
17445: ParseError yyError = ParseError.DUMMY;
17446:
17447: // Alternative 1.
17448:
17449: yyResult = pKeyword(yyStart);
17450: yyError = yyResult.select(yyError);
17451: if (yyResult.hasValue("__alignof__")) {
17452:
17453: yyValue = null;
17454:
17455: return yyResult.createValue(yyValue, yyError);
17456: }
17457:
17458: // Alternative 2.
17459:
17460: yyResult = pKeyword(yyStart);
17461: yyError = yyResult.select(yyError);
17462: if (yyResult.hasValue("__alignof")) {
17463:
17464: yyValue = null;
17465:
17466: return yyResult.createValue(yyValue, yyError);
17467: }
17468:
17469: // Done.
17470: yyError = yyError.select(" expected", yyStart);
17471: return yyError;
17472: }
17473:
17474: // =========================================================================
17475:
17476: /**
17477: * Parse nonterminal xtc.lang.jeannie.JeannieC.PostfixExpression.
17478: *
17479: * @param yyStart The index.
17480: * @return The result.
17481: * @throws IOException Signals an I/O error.
17482: */
17483: private Result pJeannieC$PostfixExpression(final int yyStart)
17484: throws IOException {
17485:
17486: Result yyResult;
17487: int yyRepetition1;
17488: Pair<Action<Node>> yyRepValue1;
17489: Node yyValue;
17490: ParseError yyError = ParseError.DUMMY;
17491:
17492: // Alternative <Compound>.
17493:
17494: yyResult = pJeannieC$CompoundLiteral(yyStart);
17495: yyError = yyResult.select(yyError);
17496: if (yyResult.hasValue()) {
17497: final Node v$g$6 = yyResult.semanticValue();
17498:
17499: yyRepetition1 = yyResult.index;
17500: yyRepValue1 = Pair.empty();
17501: while (true) {
17502:
17503: yyResult = pJeannieC$PostfixExpression$$Tail1(yyRepetition1);
17504: yyError = yyResult.select(yyError);
17505: if (yyResult.hasValue()) {
17506: final Action<Node> v$7 = yyResult.semanticValue();
17507:
17508: yyRepetition1 = yyResult.index;
17509: yyRepValue1 = new Pair<Action<Node>>(v$7,
17510: yyRepValue1);
17511: continue;
17512: }
17513: break;
17514: }
17515: { // Start scope for v$8.
17516: final Pair<Action<Node>> v$8 = yyRepValue1.reverse();
17517:
17518: yyValue = apply(v$8, v$g$6, yyStart);
17519:
17520: return new SemanticValue(yyValue, yyRepetition1,
17521: yyError);
17522: } // End scope for v$8.
17523: }
17524:
17525: // Alternative <Primary>.
17526:
17527: yyResult = pJeannieC$PrimaryExpression(yyStart);
17528: yyError = yyResult.select(yyError);
17529: if (yyResult.hasValue()) {
17530: final Node v$g$9 = yyResult.semanticValue();
17531:
17532: yyRepetition1 = yyResult.index;
17533: yyRepValue1 = Pair.empty();
17534: while (true) {
17535:
17536: yyResult = pJeannieC$PostfixExpression$$Tail1(yyRepetition1);
17537: yyError = yyResult.select(yyError);
17538: if (yyResult.hasValue()) {
17539: final Action<Node> v$10 = yyResult.semanticValue();
17540:
17541: yyRepetition1 = yyResult.index;
17542: yyRepValue1 = new Pair<Action<Node>>(v$10,
17543: yyRepValue1);
17544: continue;
17545: }
17546: break;
17547: }
17548: { // Start scope for v$11.
17549: final Pair<Action<Node>> v$11 = yyRepValue1.reverse();
17550:
17551: yyValue = apply(v$11, v$g$9, yyStart);
17552:
17553: return new SemanticValue(yyValue, yyRepetition1,
17554: yyError);
17555: } // End scope for v$11.
17556: }
17557:
17558: // Done.
17559: return yyError;
17560: }
17561:
17562: // =========================================================================
17563:
17564: /**
17565: * Parse synthetic nonterminal JeannieC.PostfixExpression$$Tail1.
17566: *
17567: * @param yyStart The index.
17568: * @return The result.
17569: * @throws IOException Signals an I/O error.
17570: */
17571: private Result pJeannieC$PostfixExpression$$Tail1(final int yyStart)
17572: throws IOException {
17573:
17574: Result yyResult;
17575: int yyBase;
17576: int yyOption1;
17577: Node yyOpValue1;
17578: Action<Node> yyValue;
17579: ParseError yyError = ParseError.DUMMY;
17580:
17581: // Alternative 1.
17582:
17583: yyResult = pSymbol(yyStart);
17584: yyError = yyResult.select(yyError);
17585: if (yyResult.hasValue("[")) {
17586:
17587: yyResult = pJeannieC$CommaExpression(yyResult.index);
17588: yyError = yyResult.select(yyError);
17589: if (yyResult.hasValue()) {
17590: final Node v$g$2 = yyResult.semanticValue();
17591:
17592: yyBase = yyResult.index;
17593: yyResult = pSymbol(yyBase);
17594: yyError = yyResult.select(yyError);
17595: if (yyResult.hasValue("]")) {
17596:
17597: yyValue = new Action<Node>() {
17598: public Node run(Node v$1) {
17599: return GNode.create("SubscriptExpression",
17600: v$1, v$g$2);
17601: }
17602: };
17603:
17604: return yyResult.createValue(yyValue, yyError);
17605: } else {
17606: yyError = yyError.select("\"]\" expected", yyBase);
17607: }
17608: }
17609: }
17610:
17611: // Alternative 2.
17612:
17613: yyResult = pSymbol(yyStart);
17614: yyError = yyResult.select(yyError);
17615: if (yyResult.hasValue(".")) {
17616:
17617: yyResult = pCIdentifier$Identifier(yyResult.index);
17618: yyError = yyResult.select(yyError);
17619: if (yyResult.hasValue()) {
17620: final String v$g$3 = yyResult.semanticValue();
17621:
17622: yyValue = new Action<Node>() {
17623: public Node run(Node v$1) {
17624: return GNode.create("DirectComponentSelection",
17625: v$1, v$g$3);
17626: }
17627: };
17628:
17629: return yyResult.createValue(yyValue, yyError);
17630: }
17631: }
17632:
17633: // Alternative 3.
17634:
17635: yyResult = pSymbol(yyStart);
17636: yyError = yyResult.select(yyError);
17637: if (yyResult.hasValue("->")) {
17638:
17639: yyResult = pCIdentifier$Identifier(yyResult.index);
17640: yyError = yyResult.select(yyError);
17641: if (yyResult.hasValue()) {
17642: final String v$g$4 = yyResult.semanticValue();
17643:
17644: yyValue = new Action<Node>() {
17645: public Node run(Node v$1) {
17646: return GNode.create(
17647: "IndirectComponentSelection", v$1,
17648: v$g$4);
17649: }
17650: };
17651:
17652: return yyResult.createValue(yyValue, yyError);
17653: }
17654: }
17655:
17656: // Alternative 4.
17657:
17658: yyResult = pSymbol(yyStart);
17659: yyError = yyResult.select(yyError);
17660: if (yyResult.hasValue("(")) {
17661:
17662: yyOption1 = yyResult.index;
17663: yyOpValue1 = null;
17664:
17665: yyResult = pJeannieC$ExpressionList(yyOption1);
17666: yyError = yyResult.select(yyError);
17667: if (yyResult.hasValue()) {
17668: final Node v$el$1 = yyResult.semanticValue();
17669:
17670: yyOption1 = yyResult.index;
17671: yyOpValue1 = v$el$1;
17672: }
17673: { // Start scope for v$g$5.
17674: final Node v$g$5 = yyOpValue1;
17675:
17676: yyBase = yyOption1;
17677: yyResult = pSymbol(yyBase);
17678: yyError = yyResult.select(yyError);
17679: if (yyResult.hasValue(")")) {
17680:
17681: yyValue = new Action<Node>() {
17682: public Node run(Node v$1) {
17683: return GNode.create("FunctionCall", v$1,
17684: v$g$5);
17685: }
17686: };
17687:
17688: return yyResult.createValue(yyValue, yyError);
17689: } else {
17690: yyError = yyError.select("\")\" expected", yyBase);
17691: }
17692: } // End scope for v$g$5.
17693: }
17694:
17695: // Alternative 5.
17696:
17697: yyResult = pSymbol(yyStart);
17698: yyError = yyResult.select(yyError);
17699: if (yyResult.hasValue("++")) {
17700:
17701: yyValue = new Action<Node>() {
17702: public Node run(Node v$1) {
17703: return GNode.create("PostincrementExpression", v$1);
17704: }
17705: };
17706:
17707: return yyResult.createValue(yyValue, yyError);
17708: }
17709:
17710: // Alternative 6.
17711:
17712: yyResult = pSymbol(yyStart);
17713: yyError = yyResult.select(yyError);
17714: if (yyResult.hasValue("--")) {
17715:
17716: yyValue = new Action<Node>() {
17717: public Node run(Node v$1) {
17718: return GNode.create("PostdecrementExpression", v$1);
17719: }
17720: };
17721:
17722: return yyResult.createValue(yyValue, yyError);
17723: }
17724:
17725: // Done.
17726: yyError = yyError
17727: .select("postfix expression expected", yyStart);
17728: return yyError;
17729: }
17730:
17731: // =========================================================================
17732:
17733: /**
17734: * Parse nonterminal xtc.lang.jeannie.JeannieC.ExpressionList.
17735: *
17736: * @param yyStart The index.
17737: * @return The result.
17738: * @throws IOException Signals an I/O error.
17739: */
17740: private Result pJeannieC$ExpressionList(final int yyStart)
17741: throws IOException {
17742:
17743: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
17744: if (null == yyColumn.chunk6)
17745: yyColumn.chunk6 = new Chunk6();
17746: if (null == yyColumn.chunk6.fJeannieC$ExpressionList)
17747: yyColumn.chunk6.fJeannieC$ExpressionList = pJeannieC$ExpressionList$1(yyStart);
17748: return yyColumn.chunk6.fJeannieC$ExpressionList;
17749: }
17750:
17751: /** Actually parse xtc.lang.jeannie.JeannieC.ExpressionList. */
17752: private Result pJeannieC$ExpressionList$1(final int yyStart)
17753: throws IOException {
17754:
17755: Result yyResult;
17756: Node yyValue;
17757: ParseError yyError = ParseError.DUMMY;
17758:
17759: // Alternative <Expressions>.
17760:
17761: yyResult = pJeannieC$AssignmentExpression(yyStart);
17762: yyError = yyResult.select(yyError);
17763: if (yyResult.hasValue()) {
17764: final Node v$g$1 = yyResult.semanticValue();
17765:
17766: yyResult = pJeannieC$ExpressionList$$Star1(yyResult.index);
17767: yyError = yyResult.select(yyError);
17768: if (yyResult.hasValue()) {
17769: final Pair<Node> v$g$2 = yyResult.semanticValue();
17770:
17771: yyValue = GNode.createFromPair("ExpressionList", v$g$1,
17772: v$g$2);
17773: yyValue.setLocation(location(yyStart));
17774:
17775: return yyResult.createValue(yyValue, yyError);
17776: }
17777: }
17778:
17779: // Done.
17780: return yyError;
17781: }
17782:
17783: // =========================================================================
17784:
17785: /**
17786: * Parse synthetic nonterminal JeannieC.ExpressionList$$Star1.
17787: *
17788: * @param yyStart The index.
17789: * @return The result.
17790: * @throws IOException Signals an I/O error.
17791: */
17792: private Result pJeannieC$ExpressionList$$Star1(final int yyStart)
17793: throws IOException {
17794:
17795: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
17796: if (null == yyColumn.chunk6)
17797: yyColumn.chunk6 = new Chunk6();
17798: if (null == yyColumn.chunk6.fJeannieC$ExpressionList$$Star1)
17799: yyColumn.chunk6.fJeannieC$ExpressionList$$Star1 = pJeannieC$ExpressionList$$Star1$1(yyStart);
17800: return yyColumn.chunk6.fJeannieC$ExpressionList$$Star1;
17801: }
17802:
17803: /** Actually parse JeannieC.ExpressionList$$Star1. */
17804: private Result pJeannieC$ExpressionList$$Star1$1(final int yyStart)
17805: throws IOException {
17806:
17807: Result yyResult;
17808: Pair<Node> yyValue;
17809: ParseError yyError = ParseError.DUMMY;
17810:
17811: // Alternative 1.
17812:
17813: yyResult = pSymbol(yyStart);
17814: yyError = yyResult.select(yyError);
17815: if (yyResult.hasValue(",")) {
17816:
17817: yyResult = pJeannieC$AssignmentExpression(yyResult.index);
17818: yyError = yyResult.select(yyError);
17819: if (yyResult.hasValue()) {
17820: final Node v$el$1 = yyResult.semanticValue();
17821:
17822: yyResult = pJeannieC$ExpressionList$$Star1(yyResult.index);
17823: yyError = yyResult.select(yyError);
17824: if (yyResult.hasValue()) {
17825: final Pair<Node> v$2 = yyResult.semanticValue();
17826:
17827: yyValue = new Pair<Node>(v$el$1, v$2);
17828:
17829: return yyResult.createValue(yyValue, yyError);
17830: }
17831: }
17832: }
17833:
17834: // Alternative 2.
17835:
17836: yyValue = Pair.empty();
17837:
17838: return new SemanticValue(yyValue, yyStart, yyError);
17839: }
17840:
17841: // =========================================================================
17842:
17843: /**
17844: * Parse nonterminal xtc.lang.jeannie.JeannieC.CompoundLiteral.
17845: *
17846: * @param yyStart The index.
17847: * @return The result.
17848: * @throws IOException Signals an I/O error.
17849: */
17850: private Result pJeannieC$CompoundLiteral(final int yyStart)
17851: throws IOException {
17852:
17853: Result yyResult;
17854: int yyBase;
17855: int yyOption1;
17856: Node yyValue;
17857: ParseError yyError = ParseError.DUMMY;
17858:
17859: // Alternative 1.
17860:
17861: yyResult = pSymbol(yyStart);
17862: yyError = yyResult.select(yyError);
17863: if (yyResult.hasValue("(")) {
17864:
17865: yyResult = pJeannieC$TypeName(yyResult.index);
17866: yyError = yyResult.select(yyError);
17867: if (yyResult.hasValue()) {
17868: final Node v$g$1 = yyResult.semanticValue();
17869:
17870: yyBase = yyResult.index;
17871: yyResult = pSymbol(yyBase);
17872: yyError = yyResult.select(yyError);
17873: if (yyResult.hasValue(")")) {
17874:
17875: yyBase = yyResult.index;
17876: yyResult = pSymbol(yyBase);
17877: yyError = yyResult.select(yyError);
17878: if (yyResult.hasValue("{")) {
17879:
17880: yyResult = pJeannieC$InitializerList(yyResult.index);
17881: yyError = yyResult.select(yyError);
17882: if (yyResult.hasValue()) {
17883: final Node v$g$2 = yyResult.semanticValue();
17884:
17885: yyOption1 = yyResult.index;
17886:
17887: yyBase = yyOption1;
17888: yyResult = pSymbol(yyBase);
17889: yyError = yyResult.select(yyError);
17890: if (yyResult.hasValue(",")) {
17891:
17892: yyOption1 = yyResult.index;
17893: } else {
17894: yyError = yyError.select(
17895: "\",\" expected", yyBase);
17896: }
17897:
17898: yyBase = yyOption1;
17899: yyResult = pSymbol(yyBase);
17900: yyError = yyResult.select(yyError);
17901: if (yyResult.hasValue("}")) {
17902:
17903: yyValue = GNode
17904: .create("CompoundLiteral",
17905: v$g$1, v$g$2);
17906: yyValue.setLocation(location(yyStart));
17907:
17908: return yyResult.createValue(yyValue,
17909: yyError);
17910: } else {
17911: yyError = yyError.select(
17912: "\"}\" expected", yyBase);
17913: }
17914: }
17915: } else {
17916: yyError = yyError.select("\"{\" expected",
17917: yyBase);
17918: }
17919: } else {
17920: yyError = yyError.select("\")\" expected", yyBase);
17921: }
17922: }
17923: }
17924:
17925: // Done.
17926: yyError = yyError.select("compound literal expected", yyStart);
17927: return yyError;
17928: }
17929:
17930: // =========================================================================
17931:
17932: /**
17933: * Parse nonterminal xtc.lang.jeannie.JeannieC.PrimaryExpression.
17934: *
17935: * @param yyStart The index.
17936: * @return The result.
17937: * @throws IOException Signals an I/O error.
17938: */
17939: private Result pJeannieC$PrimaryExpression(final int yyStart)
17940: throws IOException {
17941:
17942: Result yyResult;
17943: int yyBase;
17944: Node yyValue;
17945: ParseError yyError = ParseError.DUMMY;
17946:
17947: // Alternative <Constant>.
17948:
17949: yyResult = pConstant(yyStart);
17950: yyError = yyResult.select(yyError);
17951: if (yyResult.hasValue()) {
17952: yyValue = yyResult.semanticValue();
17953:
17954: return yyResult.createValue(yyValue, yyError);
17955: }
17956:
17957: // Alternative 2.
17958:
17959: yyResult = pCIdentifier$Identifier(yyStart);
17960: yyError = yyResult.select(yyError);
17961: if (yyResult.hasValue()) {
17962: final String v$g$1 = yyResult.semanticValue();
17963:
17964: yyValue = GNode.create("PrimaryIdentifier", v$g$1);
17965: yyValue.setLocation(location(yyStart));
17966:
17967: return yyResult.createValue(yyValue, yyError);
17968: }
17969:
17970: // Alternative 3.
17971:
17972: if (GCC) {
17973:
17974: yyResult = pSymbol(yyStart);
17975: yyError = yyResult.select(yyError);
17976: if (yyResult.hasValue("(")) {
17977:
17978: yyResult = pJeannieC$CompoundStatement(yyResult.index);
17979: yyError = yyResult.select(yyError);
17980: if (yyResult.hasValue()) {
17981: final Node v$g$1 = yyResult.semanticValue();
17982:
17983: yyBase = yyResult.index;
17984: yyResult = pSymbol(yyBase);
17985: yyError = yyResult.select(yyError);
17986: if (yyResult.hasValue(")")) {
17987:
17988: yyValue = GNode.create("StatementAsExpression",
17989: v$g$1);
17990: yyValue.setLocation(location(yyStart));
17991:
17992: return yyResult.createValue(yyValue, yyError);
17993: } else {
17994: yyError = yyError.select("\")\" expected",
17995: yyBase);
17996: }
17997: }
17998: }
17999: }
18000:
18001: // Alternative 4.
18002:
18003: yyResult = pKeyword(yyStart);
18004: yyError = yyResult.select(yyError);
18005: if (yyResult.hasValue("__builtin_va_arg")) {
18006:
18007: yyBase = yyResult.index;
18008: yyResult = pSymbol(yyBase);
18009: yyError = yyResult.select(yyError);
18010: if (yyResult.hasValue("(")) {
18011:
18012: yyResult = pJeannieC$AssignmentExpression(yyResult.index);
18013: yyError = yyResult.select(yyError);
18014: if (yyResult.hasValue()) {
18015: final Node v$g$1 = yyResult.semanticValue();
18016:
18017: yyBase = yyResult.index;
18018: yyResult = pSymbol(yyBase);
18019: yyError = yyResult.select(yyError);
18020: if (yyResult.hasValue(",")) {
18021:
18022: yyResult = pJeannieC$TypeName(yyResult.index);
18023: yyError = yyResult.select(yyError);
18024: if (yyResult.hasValue()) {
18025: final Node v$g$2 = yyResult.semanticValue();
18026:
18027: yyBase = yyResult.index;
18028: yyResult = pSymbol(yyBase);
18029: yyError = yyResult.select(yyError);
18030: if (yyResult.hasValue(")")) {
18031:
18032: yyValue = GNode.create(
18033: "VariableArgumentAccess",
18034: v$g$1, v$g$2);
18035: yyValue.setLocation(location(yyStart));
18036:
18037: return yyResult.createValue(yyValue,
18038: yyError);
18039: } else {
18040: yyError = yyError.select(
18041: "\")\" expected", yyBase);
18042: }
18043: }
18044: } else {
18045: yyError = yyError.select("\",\" expected",
18046: yyBase);
18047: }
18048: }
18049: } else {
18050: yyError = yyError.select("\"(\" expected", yyBase);
18051: }
18052: }
18053:
18054: // Alternative <ParenthesizedExpression>.
18055:
18056: yyResult = pSymbol(yyStart);
18057: yyError = yyResult.select(yyError);
18058: if (yyResult.hasValue("(")) {
18059:
18060: yyResult = pJeannieC$CommaExpression(yyResult.index);
18061: yyError = yyResult.select(yyError);
18062: if (yyResult.hasValue()) {
18063: yyValue = yyResult.semanticValue();
18064:
18065: yyBase = yyResult.index;
18066: yyResult = pSymbol(yyBase);
18067: yyError = yyResult.select(yyError);
18068: if (yyResult.hasValue(")")) {
18069:
18070: return yyResult.createValue(yyValue, yyError);
18071: } else {
18072: yyError = yyError.select("\")\" expected", yyBase);
18073: }
18074: }
18075: }
18076:
18077: // Done.
18078: yyError = yyError
18079: .select("primary expression expected", yyStart);
18080: return yyError;
18081: }
18082:
18083: // =========================================================================
18084:
18085: /**
18086: * Parse nonterminal xtc.lang.jeannie.JeannieC.PrimaryIdentifier.
18087: *
18088: * @param yyStart The index.
18089: * @return The result.
18090: * @throws IOException Signals an I/O error.
18091: */
18092: private Result pJeannieC$PrimaryIdentifier(final int yyStart)
18093: throws IOException {
18094:
18095: Result yyResult;
18096: Node yyValue;
18097: ParseError yyError = ParseError.DUMMY;
18098:
18099: // Alternative 1.
18100:
18101: yyResult = pCIdentifier$Identifier(yyStart);
18102: yyError = yyResult.select(yyError);
18103: if (yyResult.hasValue()) {
18104: final String v$g$1 = yyResult.semanticValue();
18105:
18106: yyValue = GNode.create("PrimaryIdentifier", v$g$1);
18107: yyValue.setLocation(location(yyStart));
18108:
18109: return yyResult.createValue(yyValue, yyError);
18110: }
18111:
18112: // Done.
18113: return yyError;
18114: }
18115:
18116: // =========================================================================
18117:
18118: /**
18119: * Parse nonterminal xtc.lang.jeannie.JeannieC.SimpleAssemblyExpression.
18120: *
18121: * @param yyStart The index.
18122: * @return The result.
18123: * @throws IOException Signals an I/O error.
18124: */
18125: private Result pJeannieC$SimpleAssemblyExpression(final int yyStart)
18126: throws IOException {
18127:
18128: Result yyResult;
18129: int yyBase;
18130: Node yyValue;
18131: ParseError yyError = ParseError.DUMMY;
18132:
18133: // Alternative 1.
18134:
18135: yyResult = p$$Shared18(yyStart);
18136: yyError = yyResult.select(yyError);
18137: if (yyResult.hasValue()) {
18138:
18139: yyBase = yyResult.index;
18140: yyResult = pSymbol(yyBase);
18141: yyError = yyResult.select(yyError);
18142: if (yyResult.hasValue("(")) {
18143:
18144: yyResult = pCConstant$StringConstant(yyResult.index);
18145: yyError = yyResult.select(yyError);
18146: if (yyResult.hasValue()) {
18147: final Node v$g$1 = yyResult.semanticValue();
18148:
18149: yyBase = yyResult.index;
18150: yyResult = pSymbol(yyBase);
18151: yyError = yyResult.select(yyError);
18152: if (yyResult.hasValue(")")) {
18153:
18154: yyValue = GNode.create(
18155: "SimpleAssemblyExpression", v$g$1);
18156: yyValue.setLocation(location(yyStart));
18157:
18158: return yyResult.createValue(yyValue, yyError);
18159: } else {
18160: yyError = yyError.select("\")\" expected",
18161: yyBase);
18162: }
18163: }
18164: } else {
18165: yyError = yyError.select("\"(\" expected", yyBase);
18166: }
18167: }
18168:
18169: // Done.
18170: return yyError;
18171: }
18172:
18173: // =========================================================================
18174:
18175: /**
18176: * Parse nonterminal xtc.lang.jeannie.JeannieC.AssemblyArgument.
18177: *
18178: * @param yyStart The index.
18179: * @return The result.
18180: * @throws IOException Signals an I/O error.
18181: */
18182: private Result pJeannieC$AssemblyArgument(final int yyStart)
18183: throws IOException {
18184:
18185: Result yyResult;
18186: int yyBase;
18187: int yyOption1;
18188: Node yyOpValue1;
18189: Node yyValue;
18190: ParseError yyError = ParseError.DUMMY;
18191:
18192: // Alternative 1.
18193:
18194: yyResult = pCConstant$StringConstant(yyStart);
18195: yyError = yyResult.select(yyError);
18196: if (yyResult.hasValue()) {
18197: final Node v$g$1 = yyResult.semanticValue();
18198:
18199: final int yyChoice1 = yyResult.index;
18200:
18201: // Nested alternative 1.
18202:
18203: yyBase = yyChoice1;
18204: yyResult = pSymbol(yyBase);
18205: yyError = yyResult.select(yyError);
18206: if (yyResult.hasValue(":")) {
18207:
18208: yyOption1 = yyResult.index;
18209: yyOpValue1 = null;
18210:
18211: yyResult = pJeannieC$AssemblyOperands(yyOption1);
18212: yyError = yyResult.select(yyError);
18213: if (yyResult.hasValue()) {
18214: final Node v$el$1 = yyResult.semanticValue();
18215:
18216: yyOption1 = yyResult.index;
18217: yyOpValue1 = v$el$1;
18218: }
18219: { // Start scope for v$g$2.
18220: final Node v$g$2 = yyOpValue1;
18221:
18222: final int yyChoice2 = yyOption1;
18223:
18224: // Nested alternative 1.
18225:
18226: yyBase = yyChoice2;
18227: yyResult = pSymbol(yyBase);
18228: yyError = yyResult.select(yyError);
18229: if (yyResult.hasValue(":")) {
18230:
18231: yyOption1 = yyResult.index;
18232: yyOpValue1 = null;
18233:
18234: yyResult = pJeannieC$AssemblyOperands(yyOption1);
18235: yyError = yyResult.select(yyError);
18236: if (yyResult.hasValue()) {
18237: final Node v$el$2 = yyResult
18238: .semanticValue();
18239:
18240: yyOption1 = yyResult.index;
18241: yyOpValue1 = v$el$2;
18242: }
18243: { // Start scope for v$g$3.
18244: final Node v$g$3 = yyOpValue1;
18245:
18246: final int yyChoice3 = yyOption1;
18247:
18248: // Nested alternative 1.
18249:
18250: yyBase = yyChoice3;
18251: yyResult = pSymbol(yyBase);
18252: yyError = yyResult.select(yyError);
18253: if (yyResult.hasValue(":")) {
18254:
18255: yyResult = pJeannieC$AssemblyClobbers(yyResult.index);
18256: yyError = yyResult.select(yyError);
18257: if (yyResult.hasValue()) {
18258: final Node v$g$4 = yyResult
18259: .semanticValue();
18260:
18261: yyValue = GNode.create(
18262: "AssemblyArgument", v$g$1,
18263: v$g$2, v$g$3, v$g$4);
18264: yyValue
18265: .setLocation(location(yyStart));
18266:
18267: return yyResult.createValue(
18268: yyValue, yyError);
18269: }
18270: } else {
18271: yyError = yyError.select(
18272: "\":\" expected", yyBase);
18273: }
18274:
18275: // Nested alternative 2.
18276:
18277: yyValue = GNode.create("AssemblyArgument",
18278: v$g$1, v$g$2, v$g$3);
18279: yyValue.setLocation(location(yyStart));
18280:
18281: return new SemanticValue(yyValue,
18282: yyChoice3, yyError);
18283: } // End scope for v$g$3.
18284: } else {
18285: yyError = yyError.select("\":\" expected",
18286: yyBase);
18287: }
18288:
18289: // Nested alternative 2.
18290:
18291: yyValue = GNode.create("AssemblyArgument", v$g$1,
18292: v$g$2);
18293: yyValue.setLocation(location(yyStart));
18294:
18295: return new SemanticValue(yyValue, yyChoice2,
18296: yyError);
18297: } // End scope for v$g$2.
18298: } else {
18299: yyError = yyError.select("\":\" expected", yyBase);
18300: }
18301:
18302: // Nested alternative 2.
18303:
18304: yyValue = GNode.create("AssemblyArgument", v$g$1);
18305: yyValue.setLocation(location(yyStart));
18306:
18307: return new SemanticValue(yyValue, yyChoice1, yyError);
18308: }
18309:
18310: // Done.
18311: return yyError;
18312: }
18313:
18314: // =========================================================================
18315:
18316: /**
18317: * Parse nonterminal xtc.lang.jeannie.JeannieC.AssemblyOperands.
18318: *
18319: * @param yyStart The index.
18320: * @return The result.
18321: * @throws IOException Signals an I/O error.
18322: */
18323: private Result pJeannieC$AssemblyOperands(final int yyStart)
18324: throws IOException {
18325:
18326: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
18327: if (null == yyColumn.chunk7)
18328: yyColumn.chunk7 = new Chunk7();
18329: if (null == yyColumn.chunk7.fJeannieC$AssemblyOperands)
18330: yyColumn.chunk7.fJeannieC$AssemblyOperands = pJeannieC$AssemblyOperands$1(yyStart);
18331: return yyColumn.chunk7.fJeannieC$AssemblyOperands;
18332: }
18333:
18334: /** Actually parse xtc.lang.jeannie.JeannieC.AssemblyOperands. */
18335: private Result pJeannieC$AssemblyOperands$1(final int yyStart)
18336: throws IOException {
18337:
18338: Result yyResult;
18339: Node yyValue;
18340: ParseError yyError = ParseError.DUMMY;
18341:
18342: // Alternative 1.
18343:
18344: yyResult = pJeannieC$AssemblyOperand(yyStart);
18345: yyError = yyResult.select(yyError);
18346: if (yyResult.hasValue()) {
18347: final Node v$g$1 = yyResult.semanticValue();
18348:
18349: yyResult = pJeannieC$AssemblyOperands$$Star1(yyResult.index);
18350: yyError = yyResult.select(yyError);
18351: if (yyResult.hasValue()) {
18352: final Pair<Node> v$g$2 = yyResult.semanticValue();
18353:
18354: yyValue = GNode.createFromPair("AssemblyOperands",
18355: v$g$1, v$g$2);
18356: yyValue.setLocation(location(yyStart));
18357:
18358: return yyResult.createValue(yyValue, yyError);
18359: }
18360: }
18361:
18362: // Done.
18363: return yyError;
18364: }
18365:
18366: // =========================================================================
18367:
18368: /**
18369: * Parse synthetic nonterminal JeannieC.AssemblyOperands$$Star1.
18370: *
18371: * @param yyStart The index.
18372: * @return The result.
18373: * @throws IOException Signals an I/O error.
18374: */
18375: private Result pJeannieC$AssemblyOperands$$Star1(final int yyStart)
18376: throws IOException {
18377:
18378: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
18379: if (null == yyColumn.chunk7)
18380: yyColumn.chunk7 = new Chunk7();
18381: if (null == yyColumn.chunk7.fJeannieC$AssemblyOperands$$Star1)
18382: yyColumn.chunk7.fJeannieC$AssemblyOperands$$Star1 = pJeannieC$AssemblyOperands$$Star1$1(yyStart);
18383: return yyColumn.chunk7.fJeannieC$AssemblyOperands$$Star1;
18384: }
18385:
18386: /** Actually parse JeannieC.AssemblyOperands$$Star1. */
18387: private Result pJeannieC$AssemblyOperands$$Star1$1(final int yyStart)
18388: throws IOException {
18389:
18390: Result yyResult;
18391: Pair<Node> yyValue;
18392: ParseError yyError = ParseError.DUMMY;
18393:
18394: // Alternative 1.
18395:
18396: yyResult = pSymbol(yyStart);
18397: yyError = yyResult.select(yyError);
18398: if (yyResult.hasValue(",")) {
18399:
18400: yyResult = pJeannieC$AssemblyOperand(yyResult.index);
18401: yyError = yyResult.select(yyError);
18402: if (yyResult.hasValue()) {
18403: final Node v$el$1 = yyResult.semanticValue();
18404:
18405: yyResult = pJeannieC$AssemblyOperands$$Star1(yyResult.index);
18406: yyError = yyResult.select(yyError);
18407: if (yyResult.hasValue()) {
18408: final Pair<Node> v$2 = yyResult.semanticValue();
18409:
18410: yyValue = new Pair<Node>(v$el$1, v$2);
18411:
18412: return yyResult.createValue(yyValue, yyError);
18413: }
18414: }
18415: }
18416:
18417: // Alternative 2.
18418:
18419: yyValue = Pair.empty();
18420:
18421: return new SemanticValue(yyValue, yyStart, yyError);
18422: }
18423:
18424: // =========================================================================
18425:
18426: /**
18427: * Parse nonterminal xtc.lang.jeannie.JeannieC.AssemblyOperand.
18428: *
18429: * @param yyStart The index.
18430: * @return The result.
18431: * @throws IOException Signals an I/O error.
18432: */
18433: private Result pJeannieC$AssemblyOperand(final int yyStart)
18434: throws IOException {
18435:
18436: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
18437: if (null == yyColumn.chunk7)
18438: yyColumn.chunk7 = new Chunk7();
18439: if (null == yyColumn.chunk7.fJeannieC$AssemblyOperand)
18440: yyColumn.chunk7.fJeannieC$AssemblyOperand = pJeannieC$AssemblyOperand$1(yyStart);
18441: return yyColumn.chunk7.fJeannieC$AssemblyOperand;
18442: }
18443:
18444: /** Actually parse xtc.lang.jeannie.JeannieC.AssemblyOperand. */
18445: private Result pJeannieC$AssemblyOperand$1(final int yyStart)
18446: throws IOException {
18447:
18448: Result yyResult;
18449: int yyBase;
18450: int yyOption1;
18451: String yyOpValue1;
18452: Node yyValue;
18453: ParseError yyError = ParseError.DUMMY;
18454:
18455: // Alternative 1.
18456:
18457: yyOption1 = yyStart;
18458: yyOpValue1 = null;
18459:
18460: yyBase = yyOption1;
18461: yyResult = pSymbol(yyBase);
18462: yyError = yyResult.select(yyError);
18463: if (yyResult.hasValue("[")) {
18464:
18465: yyResult = pCIdentifier$Word(yyResult.index);
18466: yyError = yyResult.select(yyError);
18467: if (yyResult.hasValue()) {
18468: final String v$el$1 = yyResult.semanticValue();
18469:
18470: yyBase = yyResult.index;
18471: yyResult = pSymbol(yyBase);
18472: yyError = yyResult.select(yyError);
18473: if (yyResult.hasValue("]")) {
18474:
18475: yyOption1 = yyResult.index;
18476: yyOpValue1 = v$el$1;
18477: } else {
18478: yyError = yyError.select("\"]\" expected", yyBase);
18479: }
18480: }
18481: } else {
18482: yyError = yyError.select("\"[\" expected", yyBase);
18483: }
18484: { // Start scope for v$g$1.
18485: final String v$g$1 = yyOpValue1;
18486:
18487: yyResult = pCConstant$StringConstant(yyOption1);
18488: yyError = yyResult.select(yyError);
18489: if (yyResult.hasValue()) {
18490: final Node v$g$2 = yyResult.semanticValue();
18491:
18492: yyBase = yyResult.index;
18493: yyResult = pSymbol(yyBase);
18494: yyError = yyResult.select(yyError);
18495: if (yyResult.hasValue("(")) {
18496:
18497: yyResult = pJeannieC$CommaExpression(yyResult.index);
18498: yyError = yyResult.select(yyError);
18499: if (yyResult.hasValue()) {
18500: final Node v$g$3 = yyResult.semanticValue();
18501:
18502: yyBase = yyResult.index;
18503: yyResult = pSymbol(yyBase);
18504: yyError = yyResult.select(yyError);
18505: if (yyResult.hasValue(")")) {
18506:
18507: yyValue = GNode.create("AssemblyOperand",
18508: v$g$1, v$g$2, v$g$3);
18509: yyValue.setLocation(location(yyStart));
18510:
18511: return yyResult.createValue(yyValue,
18512: yyError);
18513: } else {
18514: yyError = yyError.select("\")\" expected",
18515: yyBase);
18516: }
18517: }
18518: } else {
18519: yyError = yyError.select("\"(\" expected", yyBase);
18520: }
18521: }
18522: } // End scope for v$g$1.
18523:
18524: // Done.
18525: return yyError;
18526: }
18527:
18528: // =========================================================================
18529:
18530: /**
18531: * Parse nonterminal xtc.lang.jeannie.JeannieC.AssemblyClobbers.
18532: *
18533: * @param yyStart The index.
18534: * @return The result.
18535: * @throws IOException Signals an I/O error.
18536: */
18537: private Result pJeannieC$AssemblyClobbers(final int yyStart)
18538: throws IOException {
18539:
18540: Result yyResult;
18541: int yyBase;
18542: int yyRepetition1;
18543: Pair<Node> yyRepValue1;
18544: Node yyValue;
18545: ParseError yyError = ParseError.DUMMY;
18546:
18547: // Alternative 1.
18548:
18549: yyResult = pCConstant$StringConstant(yyStart);
18550: yyError = yyResult.select(yyError);
18551: if (yyResult.hasValue()) {
18552: final Node v$g$1 = yyResult.semanticValue();
18553:
18554: yyRepetition1 = yyResult.index;
18555: yyRepValue1 = Pair.empty();
18556: while (true) {
18557:
18558: yyBase = yyRepetition1;
18559: yyResult = pSymbol(yyBase);
18560: yyError = yyResult.select(yyError);
18561: if (yyResult.hasValue(",")) {
18562:
18563: yyResult = pCConstant$StringConstant(yyResult.index);
18564: yyError = yyResult.select(yyError);
18565: if (yyResult.hasValue()) {
18566: final Node v$el$1 = yyResult.semanticValue();
18567:
18568: yyRepetition1 = yyResult.index;
18569: yyRepValue1 = new Pair<Node>(v$el$1,
18570: yyRepValue1);
18571: continue;
18572: }
18573: } else {
18574: yyError = yyError.select("\",\" expected", yyBase);
18575: }
18576: break;
18577: }
18578: { // Start scope for v$g$2.
18579: final Pair<Node> v$g$2 = yyRepValue1.reverse();
18580:
18581: yyValue = GNode.createFromPair("AssemblyClobbers",
18582: v$g$1, v$g$2);
18583: yyValue.setLocation(location(yyStart));
18584:
18585: return new SemanticValue(yyValue, yyRepetition1,
18586: yyError);
18587: } // End scope for v$g$2.
18588: }
18589:
18590: // Done.
18591: return yyError;
18592: }
18593:
18594: // =========================================================================
18595:
18596: /**
18597: * Parse synthetic nonterminal xtc.lang.jeannie.Debugger.$$Shared18.
18598: * This nonterminal represents the duplicate productions
18599: * xtc.lang.jeannie.JeannieC.AsmKeyword
18600: * and xtc.lang.jeannie.DebuggerC.AsmKeyword.
18601: *
18602: * @param yyStart The index.
18603: * @return The result.
18604: * @throws IOException Signals an I/O error.
18605: */
18606: private Result p$$Shared18(final int yyStart) throws IOException {
18607: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
18608: if (null == yyColumn.chunk7)
18609: yyColumn.chunk7 = new Chunk7();
18610: if (null == yyColumn.chunk7.f$$Shared18)
18611: yyColumn.chunk7.f$$Shared18 = p$$Shared18$1(yyStart);
18612: return yyColumn.chunk7.f$$Shared18;
18613: }
18614:
18615: /** Actually parse xtc.lang.jeannie.Debugger.$$Shared18. */
18616: private Result p$$Shared18$1(final int yyStart) throws IOException {
18617: Result yyResult;
18618: Void yyValue;
18619: ParseError yyError = ParseError.DUMMY;
18620:
18621: // Alternative 1.
18622:
18623: yyResult = pKeyword(yyStart);
18624: yyError = yyResult.select(yyError);
18625: if (yyResult.hasValue("asm")) {
18626:
18627: yyValue = null;
18628:
18629: return yyResult.createValue(yyValue, yyError);
18630: }
18631:
18632: // Alternative 2.
18633:
18634: yyResult = pKeyword(yyStart);
18635: yyError = yyResult.select(yyError);
18636: if (yyResult.hasValue("__asm")) {
18637:
18638: yyValue = null;
18639:
18640: return yyResult.createValue(yyValue, yyError);
18641: }
18642:
18643: // Alternative 3.
18644:
18645: yyResult = pKeyword(yyStart);
18646: yyError = yyResult.select(yyError);
18647: if (yyResult.hasValue("__asm__")) {
18648:
18649: yyValue = null;
18650:
18651: return yyResult.createValue(yyValue, yyError);
18652: }
18653:
18654: // Done.
18655: yyError = yyError.select(" expected", yyStart);
18656: return yyError;
18657: }
18658:
18659: // =========================================================================
18660:
18661: /**
18662: * Parse nonterminal xtc.lang.jeannie.JeannieC.WithStatement.
18663: *
18664: * @param yyStart The index.
18665: * @return The result.
18666: * @throws IOException Signals an I/O error.
18667: */
18668: private Result pJeannieC$WithStatement(final int yyStart)
18669: throws IOException {
18670:
18671: Result yyResult;
18672: int yyBase;
18673: Node yyValue;
18674: ParseError yyError = ParseError.DUMMY;
18675:
18676: // Alternative 1.
18677:
18678: yyResult = pKeyword(yyStart);
18679: yyError = yyResult.select(yyError);
18680: if (yyResult.hasValue("_with")) {
18681:
18682: yyResult = pPushScope(yyResult.index);
18683: yyError = yyResult.select(yyError);
18684: if (yyResult.hasValue()) {
18685:
18686: yyBase = yyResult.index;
18687: yyResult = pSymbol(yyBase);
18688: yyError = yyResult.select(yyError);
18689: if (yyResult.hasValue("(")) {
18690:
18691: yyResult = pJeannieC$WithInitializer(yyResult.index);
18692: yyError = yyResult.select(yyError);
18693: if (yyResult.hasValue()) {
18694: final Node v$g$1 = yyResult.semanticValue();
18695:
18696: yyBase = yyResult.index;
18697: yyResult = pSymbol(yyBase);
18698: yyError = yyResult.select(yyError);
18699: if (yyResult.hasValue(")")) {
18700:
18701: yyResult = pJeannieC$CInCBlock(yyResult.index);
18702: yyError = yyResult.select(yyError);
18703: if (yyResult.hasValue()) {
18704: final Node v$g$2 = yyResult
18705: .semanticValue();
18706:
18707: yyResult = pPopScope(yyResult.index);
18708: yyError = yyResult.select(yyError);
18709: if (yyResult.hasValue()) {
18710:
18711: yyValue = GNode.create(
18712: "WithStatement", v$g$1,
18713: v$g$2);
18714: yyValue
18715: .setLocation(location(yyStart));
18716:
18717: return yyResult.createValue(
18718: yyValue, yyError);
18719: }
18720: }
18721: } else {
18722: yyError = yyError.select("\")\" expected",
18723: yyBase);
18724: }
18725: }
18726: } else {
18727: yyError = yyError.select("\"(\" expected", yyBase);
18728: }
18729: }
18730: }
18731:
18732: // Done.
18733: yyError = yyError.select("with statement expected", yyStart);
18734: return yyError;
18735: }
18736:
18737: // =========================================================================
18738:
18739: /**
18740: * Parse nonterminal xtc.lang.jeannie.JeannieC.WithInitializer.
18741: *
18742: * @param yyStart The index.
18743: * @return The result.
18744: * @throws IOException Signals an I/O error.
18745: */
18746: private Result pJeannieC$WithInitializer(final int yyStart)
18747: throws IOException {
18748:
18749: Result yyResult;
18750: Node yyValue;
18751: ParseError yyError = ParseError.DUMMY;
18752:
18753: // Alternative <Declaration>.
18754:
18755: yyResult = pJeannieC$DeclarationNoSemicolon(yyStart);
18756: yyError = yyResult.select(yyError);
18757: if (yyResult.hasValue()) {
18758: yyValue = yyResult.semanticValue();
18759:
18760: return yyResult.createValue(yyValue, yyError);
18761: }
18762:
18763: // Alternative <Assignment>.
18764:
18765: yyResult = pJeannieC$AssignmentExpression(yyStart);
18766: yyError = yyResult.select(yyError);
18767: if (yyResult.hasValue()) {
18768: yyValue = yyResult.semanticValue();
18769:
18770: return yyResult.createValue(yyValue, yyError);
18771: }
18772:
18773: // Done.
18774: return yyError;
18775: }
18776:
18777: // =========================================================================
18778:
18779: /**
18780: * Parse nonterminal xtc.lang.jeannie.JeannieC.DeclarationNoSemicolon.
18781: *
18782: * @param yyStart The index.
18783: * @return The result.
18784: * @throws IOException Signals an I/O error.
18785: */
18786: private Result pJeannieC$DeclarationNoSemicolon(final int yyStart)
18787: throws IOException {
18788:
18789: Result yyResult;
18790: int yyOption1;
18791: Node yyOpValue1;
18792: Node yyValue;
18793: ParseError yyError = ParseError.DUMMY;
18794:
18795: // Alternative 1.
18796:
18797: yyResult = pJeannieC$DeclarationSpecifiers(yyStart);
18798: yyError = yyResult.select(yyError);
18799: if (yyResult.hasValue()) {
18800: final Node v$g$2 = yyResult.semanticValue();
18801:
18802: yyOption1 = yyResult.index;
18803: yyOpValue1 = null;
18804:
18805: yyResult = pJeannieC$InitializedDeclaratorList(yyOption1);
18806: yyError = yyResult.select(yyError);
18807: if (yyResult.hasValue()) {
18808: final Node v$el$1 = yyResult.semanticValue();
18809:
18810: yyOption1 = yyResult.index;
18811: yyOpValue1 = v$el$1;
18812: }
18813: { // Start scope for l.
18814: final Node l = yyOpValue1;
18815:
18816: if (yyState.isValid(l)) {
18817:
18818: yyValue = GNode.create("Declaration", null, v$g$2,
18819: l);
18820: yyValue.setLocation(location(yyStart));
18821:
18822: return new SemanticValue(yyValue, yyOption1,
18823: yyError);
18824: }
18825: } // End scope for l.
18826: }
18827:
18828: // Done.
18829: yyError = yyError.select("declaration no semicolon expected",
18830: yyStart);
18831: return yyError;
18832: }
18833:
18834: // =========================================================================
18835:
18836: /**
18837: * Parse nonterminal xtc.lang.jeannie.JeannieC.CancelStatement.
18838: *
18839: * @param yyStart The index.
18840: * @return The result.
18841: * @throws IOException Signals an I/O error.
18842: */
18843: private Result pJeannieC$CancelStatement(final int yyStart)
18844: throws IOException {
18845:
18846: Result yyResult;
18847: int yyBase;
18848: Node yyValue;
18849: ParseError yyError = ParseError.DUMMY;
18850:
18851: // Alternative 1.
18852:
18853: yyResult = pKeyword(yyStart);
18854: yyError = yyResult.select(yyError);
18855: if (yyResult.hasValue("_cancel")) {
18856:
18857: yyResult = pJeannieC$PrimaryIdentifier(yyResult.index);
18858: yyError = yyResult.select(yyError);
18859: if (yyResult.hasValue()) {
18860: final Node v$g$1 = yyResult.semanticValue();
18861:
18862: yyBase = yyResult.index;
18863: yyResult = pSymbol(yyBase);
18864: yyError = yyResult.select(yyError);
18865: if (yyResult.hasValue(";")) {
18866:
18867: yyValue = GNode.create("CancelStatement", v$g$1);
18868: yyValue.setLocation(location(yyStart));
18869:
18870: return yyResult.createValue(yyValue, yyError);
18871: } else {
18872: yyError = yyError.select("\";\" expected", yyBase);
18873: }
18874: }
18875: }
18876:
18877: // Done.
18878: yyError = yyError.select("cancel statement expected", yyStart);
18879: return yyError;
18880: }
18881:
18882: // =========================================================================
18883:
18884: /**
18885: * Parse nonterminal xtc.lang.jeannie.JeannieC.CommitStatement.
18886: *
18887: * @param yyStart The index.
18888: * @return The result.
18889: * @throws IOException Signals an I/O error.
18890: */
18891: private Result pJeannieC$CommitStatement(final int yyStart)
18892: throws IOException {
18893:
18894: Result yyResult;
18895: int yyBase;
18896: Node yyValue;
18897: ParseError yyError = ParseError.DUMMY;
18898:
18899: // Alternative 1.
18900:
18901: yyResult = pKeyword(yyStart);
18902: yyError = yyResult.select(yyError);
18903: if (yyResult.hasValue("_commit")) {
18904:
18905: yyResult = pJeannieC$PrimaryIdentifier(yyResult.index);
18906: yyError = yyResult.select(yyError);
18907: if (yyResult.hasValue()) {
18908: final Node v$g$1 = yyResult.semanticValue();
18909:
18910: yyBase = yyResult.index;
18911: yyResult = pSymbol(yyBase);
18912: yyError = yyResult.select(yyError);
18913: if (yyResult.hasValue(";")) {
18914:
18915: yyValue = GNode.create("CommitStatement", v$g$1);
18916: yyValue.setLocation(location(yyStart));
18917:
18918: return yyResult.createValue(yyValue, yyError);
18919: } else {
18920: yyError = yyError.select("\";\" expected", yyBase);
18921: }
18922: }
18923: }
18924:
18925: // Done.
18926: yyError = yyError.select("commit statement expected", yyStart);
18927: return yyError;
18928: }
18929:
18930: // =========================================================================
18931:
18932: /**
18933: * Parse synthetic nonterminal xtc.lang.jeannie.Debugger.$$Shared25.
18934: * This nonterminal represents the duplicate productions
18935: * xtc.lang.jeannie.JeannieC.JavaInC and xtc.lang.jeannie.DebuggerC.JavaInC.
18936: *
18937: * @param yyStart The index.
18938: * @return The result.
18939: * @throws IOException Signals an I/O error.
18940: */
18941: private Result p$$Shared25(final int yyStart) throws IOException {
18942: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
18943: if (null == yyColumn.chunk7)
18944: yyColumn.chunk7 = new Chunk7();
18945: if (null == yyColumn.chunk7.f$$Shared25)
18946: yyColumn.chunk7.f$$Shared25 = p$$Shared25$1(yyStart);
18947: return yyColumn.chunk7.f$$Shared25;
18948: }
18949:
18950: /** Actually parse xtc.lang.jeannie.Debugger.$$Shared25. */
18951: private Result p$$Shared25$1(final int yyStart) throws IOException {
18952: int yyC;
18953: int yyIndex;
18954: Result yyResult;
18955: int yyBase;
18956: Void yyValue;
18957: ParseError yyError = ParseError.DUMMY;
18958:
18959: // Alternative 1.
18960:
18961: yyResult = pSymbol(yyStart);
18962: yyError = yyResult.select(yyError);
18963: if (yyResult.hasValue("`")) {
18964:
18965: final int yyChoice1 = yyResult.index;
18966:
18967: // Nested alternative 1.
18968:
18969: yyBase = yyChoice1;
18970: yyResult = pSymbol(yyBase);
18971: yyError = yyResult.select(yyError);
18972: if (yyResult.hasValue(".")) {
18973:
18974: yyBase = yyResult.index;
18975: yyC = character(yyBase);
18976: if ('J' == yyC) {
18977: yyIndex = yyResult.index + 1;
18978:
18979: yyC = character(yyIndex);
18980: if ('a' == yyC) {
18981: yyIndex = yyIndex + 1;
18982:
18983: yyC = character(yyIndex);
18984: if ('v' == yyC) {
18985: yyIndex = yyIndex + 1;
18986:
18987: yyC = character(yyIndex);
18988: if ('a' == yyC) {
18989: yyIndex = yyIndex + 1;
18990:
18991: yyResult = pSpacing(yyIndex);
18992: yyError = yyResult.select(yyError);
18993: if (yyResult.hasValue()) {
18994:
18995: yyValue = null;
18996:
18997: return yyResult.createValue(
18998: yyValue, yyError);
18999: }
19000: } else {
19001: yyError = yyError.select(
19002: "\"Java\" expected", yyBase);
19003: }
19004: } else {
19005: yyError = yyError.select(
19006: "\"Java\" expected", yyBase);
19007: }
19008: } else {
19009: yyError = yyError.select("\"Java\" expected",
19010: yyBase);
19011: }
19012: } else {
19013: yyError = yyError.select("\"Java\" expected",
19014: yyBase);
19015: }
19016: } else {
19017: yyError = yyError.select("\".\" expected", yyBase);
19018: }
19019:
19020: // Nested alternative 2.
19021:
19022: yyValue = null;
19023:
19024: return new SemanticValue(yyValue, yyChoice1, yyError);
19025: }
19026:
19027: // Done.
19028: yyError = yyError.select(" expected", yyStart);
19029: return yyError;
19030: }
19031:
19032: // =========================================================================
19033:
19034: /**
19035: * Parse nonterminal xtc.lang.jeannie.JeannieC.CInCBlock.
19036: *
19037: * @param yyStart The index.
19038: * @return The result.
19039: * @throws IOException Signals an I/O error.
19040: */
19041: private Result pJeannieC$CInCBlock(final int yyStart)
19042: throws IOException {
19043: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
19044: if (null == yyColumn.chunk7)
19045: yyColumn.chunk7 = new Chunk7();
19046: if (null == yyColumn.chunk7.fJeannieC$CInCBlock)
19047: yyColumn.chunk7.fJeannieC$CInCBlock = pJeannieC$CInCBlock$1(yyStart);
19048: return yyColumn.chunk7.fJeannieC$CInCBlock;
19049: }
19050:
19051: /** Actually parse xtc.lang.jeannie.JeannieC.CInCBlock. */
19052: private Result pJeannieC$CInCBlock$1(final int yyStart)
19053: throws IOException {
19054: int yyC;
19055: int yyIndex;
19056: Result yyResult;
19057: int yyBase;
19058: Node yyValue;
19059: ParseError yyError = ParseError.DUMMY;
19060:
19061: // Alternative 1.
19062:
19063: yyResult = pSymbol(yyStart);
19064: yyError = yyResult.select(yyError);
19065: if (yyResult.hasValue("{")) {
19066:
19067: yyResult = pPushScope(yyResult.index);
19068: yyError = yyResult.select(yyError);
19069: if (yyResult.hasValue()) {
19070:
19071: yyResult = pJeannieC$CInCBlock$$Star1(yyResult.index);
19072: yyError = yyResult.select(yyError);
19073: if (yyResult.hasValue()) {
19074: final Pair<Node> v$g$1 = yyResult.semanticValue();
19075:
19076: yyResult = pJeannieC$CInCBlock$$Star2(yyResult.index);
19077: yyError = yyResult.select(yyError);
19078: if (yyResult.hasValue()) {
19079: final Pair<Node> v$g$2 = yyResult
19080: .semanticValue();
19081:
19082: yyResult = p$$Shared6(yyResult.index);
19083: yyError = yyResult.select(yyError);
19084: if (yyResult.hasValue()) {
19085: final Node v$g$3 = yyResult.semanticValue();
19086:
19087: yyBase = yyResult.index;
19088: yyC = character(yyBase);
19089: if ('}' == yyC) {
19090: yyIndex = yyResult.index + 1;
19091:
19092: yyResult = pSpacing(yyIndex);
19093: yyError = yyResult.select(yyError);
19094: if (yyResult.hasValue()) {
19095:
19096: yyResult = pPopScope(yyResult.index);
19097: yyError = yyResult.select(yyError);
19098: if (yyResult.hasValue()) {
19099:
19100: yyValue = GNode.create(
19101: "CInCBlock",
19102: v$g$1.size()
19103: + v$g$2.size()
19104: + 1).addAll(
19105: v$g$1).addAll(v$g$2)
19106: .add(v$g$3);
19107: yyValue
19108: .setLocation(location(yyStart));
19109:
19110: return yyResult.createValue(
19111: yyValue, yyError);
19112: }
19113: }
19114: } else {
19115: yyError = yyError.select(
19116: "\"}\" expected", yyBase);
19117: }
19118: }
19119: }
19120: }
19121: }
19122: }
19123:
19124: // Done.
19125: yyError = yyError.select("c in c block expected", yyStart);
19126: return yyError;
19127: }
19128:
19129: // =========================================================================
19130:
19131: /**
19132: * Parse synthetic nonterminal JeannieC.CInCBlock$$Star1.
19133: *
19134: * @param yyStart The index.
19135: * @return The result.
19136: * @throws IOException Signals an I/O error.
19137: */
19138: private Result pJeannieC$CInCBlock$$Star1(final int yyStart)
19139: throws IOException {
19140:
19141: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
19142: if (null == yyColumn.chunk7)
19143: yyColumn.chunk7 = new Chunk7();
19144: if (null == yyColumn.chunk7.fJeannieC$CInCBlock$$Star1)
19145: yyColumn.chunk7.fJeannieC$CInCBlock$$Star1 = pJeannieC$CInCBlock$$Star1$1(yyStart);
19146: return yyColumn.chunk7.fJeannieC$CInCBlock$$Star1;
19147: }
19148:
19149: /** Actually parse JeannieC.CInCBlock$$Star1. */
19150: private Result pJeannieC$CInCBlock$$Star1$1(final int yyStart)
19151: throws IOException {
19152:
19153: Result yyResult;
19154: Pair<Node> yyValue;
19155: ParseError yyError = ParseError.DUMMY;
19156:
19157: // Alternative 1.
19158:
19159: yyResult = pJeannieC$LocalLabelDeclaration(yyStart);
19160: yyError = yyResult.select(yyError);
19161: if (yyResult.hasValue()) {
19162: final Node v$el$1 = yyResult.semanticValue();
19163:
19164: yyResult = pJeannieC$CInCBlock$$Star1(yyResult.index);
19165: yyError = yyResult.select(yyError);
19166: if (yyResult.hasValue()) {
19167: final Pair<Node> v$2 = yyResult.semanticValue();
19168:
19169: yyValue = new Pair<Node>(v$el$1, v$2);
19170:
19171: return yyResult.createValue(yyValue, yyError);
19172: }
19173: }
19174:
19175: // Alternative 2.
19176:
19177: yyValue = Pair.empty();
19178:
19179: return new SemanticValue(yyValue, yyStart, yyError);
19180: }
19181:
19182: // =========================================================================
19183:
19184: /**
19185: * Parse synthetic nonterminal JeannieC.CInCBlock$$Star2.
19186: *
19187: * @param yyStart The index.
19188: * @return The result.
19189: * @throws IOException Signals an I/O error.
19190: */
19191: private Result pJeannieC$CInCBlock$$Star2(final int yyStart)
19192: throws IOException {
19193:
19194: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
19195: if (null == yyColumn.chunk7)
19196: yyColumn.chunk7 = new Chunk7();
19197: if (null == yyColumn.chunk7.fJeannieC$CInCBlock$$Star2)
19198: yyColumn.chunk7.fJeannieC$CInCBlock$$Star2 = pJeannieC$CInCBlock$$Star2$1(yyStart);
19199: return yyColumn.chunk7.fJeannieC$CInCBlock$$Star2;
19200: }
19201:
19202: /** Actually parse JeannieC.CInCBlock$$Star2. */
19203: private Result pJeannieC$CInCBlock$$Star2$1(final int yyStart)
19204: throws IOException {
19205:
19206: Result yyResult;
19207: Pair<Node> yyValue;
19208: ParseError yyError = ParseError.DUMMY;
19209:
19210: // Alternative 1.
19211:
19212: yyResult = pJeannieC$DeclarationOrStatement(yyStart);
19213: yyError = yyResult.select(yyError);
19214: if (yyResult.hasValue()) {
19215: final Node v$el$3 = yyResult.semanticValue();
19216:
19217: yyResult = pJeannieC$CInCBlock$$Star2(yyResult.index);
19218: yyError = yyResult.select(yyError);
19219: if (yyResult.hasValue()) {
19220: final Pair<Node> v$4 = yyResult.semanticValue();
19221:
19222: yyValue = new Pair<Node>(v$el$3, v$4);
19223:
19224: return yyResult.createValue(yyValue, yyError);
19225: }
19226: }
19227:
19228: // Alternative 2.
19229:
19230: yyValue = Pair.empty();
19231:
19232: return new SemanticValue(yyValue, yyStart, yyError);
19233: }
19234:
19235: // =========================================================================
19236:
19237: /**
19238: * Parse nonterminal xtc.lang.jeannie.JeannieC.JavaInCBlock.
19239: *
19240: * @param yyStart The index.
19241: * @return The result.
19242: * @throws IOException Signals an I/O error.
19243: */
19244: private Result pJeannieC$JavaInCBlock(final int yyStart)
19245: throws IOException {
19246:
19247: Result yyResult;
19248: Node yyValue;
19249: ParseError yyError = ParseError.DUMMY;
19250:
19251: // Alternative 1.
19252:
19253: yyResult = p$$Shared25(yyStart);
19254: yyError = yyResult.select(yyError);
19255: if (yyResult.hasValue()) {
19256:
19257: yyResult = pJeannieJava$JavaInJavaBlock(yyResult.index);
19258: yyError = yyResult.select(yyError);
19259: if (yyResult.hasValue()) {
19260: final Node v$g$1 = yyResult.semanticValue();
19261:
19262: yyValue = GNode.create("JavaInCBlock", v$g$1);
19263: yyValue.setLocation(location(yyStart));
19264:
19265: return yyResult.createValue(yyValue, yyError);
19266: }
19267: }
19268:
19269: // Done.
19270: return yyError;
19271: }
19272:
19273: // =========================================================================
19274:
19275: /**
19276: * Parse nonterminal xtc.lang.jeannie.JeannieC.JavaInCExpression.
19277: *
19278: * @param yyStart The index.
19279: * @return The result.
19280: * @throws IOException Signals an I/O error.
19281: */
19282: private Result pJeannieC$JavaInCExpression(final int yyStart)
19283: throws IOException {
19284:
19285: Result yyResult;
19286: Node yyValue;
19287: ParseError yyError = ParseError.DUMMY;
19288:
19289: // Alternative 1.
19290:
19291: yyResult = p$$Shared25(yyStart);
19292: yyError = yyResult.select(yyError);
19293: if (yyResult.hasValue()) {
19294:
19295: yyResult = pJeannieJava$UnaryExpression(yyResult.index);
19296: yyError = yyResult.select(yyError);
19297: if (yyResult.hasValue()) {
19298: final Node v$g$1 = yyResult.semanticValue();
19299:
19300: yyValue = GNode.create("JavaInCExpression", v$g$1);
19301: yyValue.setLocation(location(yyStart));
19302:
19303: return yyResult.createValue(yyValue, yyError);
19304: }
19305: }
19306:
19307: // Done.
19308: return yyError;
19309: }
19310:
19311: // =========================================================================
19312:
19313: /**
19314: * Parse nonterminal xtc.lang.jeannie.JeannieC.JavaInCStatement.
19315: *
19316: * @param yyStart The index.
19317: * @return The result.
19318: * @throws IOException Signals an I/O error.
19319: */
19320: private Result pJeannieC$JavaInCStatement(final int yyStart)
19321: throws IOException {
19322:
19323: Result yyResult;
19324: Node yyValue;
19325: ParseError yyError = ParseError.DUMMY;
19326:
19327: // Alternative 1.
19328:
19329: yyResult = p$$Shared25(yyStart);
19330: yyError = yyResult.select(yyError);
19331: if (yyResult.hasValue()) {
19332:
19333: final int yyChoice1 = yyResult.index;
19334:
19335: // Nested alternative 1.
19336:
19337: yyResult = pJeannieJava$TryCatchFinallyStatement(yyChoice1);
19338: yyError = yyResult.select(yyError);
19339: if (yyResult.hasValue()) {
19340: final Node v$g$1 = yyResult.semanticValue();
19341:
19342: yyValue = GNode.create("JavaInCStatement", v$g$1);
19343: yyValue.setLocation(location(yyStart));
19344:
19345: return yyResult.createValue(yyValue, yyError);
19346: }
19347:
19348: // Nested alternative 2.
19349:
19350: yyResult = pJeannieJava$SynchronizedStatement(yyChoice1);
19351: yyError = yyResult.select(yyError);
19352: if (yyResult.hasValue()) {
19353: final Node v$g$2 = yyResult.semanticValue();
19354:
19355: yyValue = GNode.create("JavaInCStatement", v$g$2);
19356: yyValue.setLocation(location(yyStart));
19357:
19358: return yyResult.createValue(yyValue, yyError);
19359: }
19360:
19361: // Nested alternative 3.
19362:
19363: yyResult = pJeannieJava$ThrowStatement(yyChoice1);
19364: yyError = yyResult.select(yyError);
19365: if (yyResult.hasValue()) {
19366: final Node v$g$3 = yyResult.semanticValue();
19367:
19368: yyValue = GNode.create("JavaInCStatement", v$g$3);
19369: yyValue.setLocation(location(yyStart));
19370:
19371: return yyResult.createValue(yyValue, yyError);
19372: }
19373: }
19374:
19375: // Done.
19376: return yyError;
19377: }
19378:
19379: // =========================================================================
19380:
19381: /**
19382: * Parse nonterminal xtc.lang.jeannie.JeannieC.JavaThrows.
19383: *
19384: * @param yyStart The index.
19385: * @return The result.
19386: * @throws IOException Signals an I/O error.
19387: */
19388: private Result pJeannieC$JavaThrows(final int yyStart)
19389: throws IOException {
19390: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
19391: if (null == yyColumn.chunk7)
19392: yyColumn.chunk7 = new Chunk7();
19393: if (null == yyColumn.chunk7.fJeannieC$JavaThrows)
19394: yyColumn.chunk7.fJeannieC$JavaThrows = pJeannieC$JavaThrows$1(yyStart);
19395: return yyColumn.chunk7.fJeannieC$JavaThrows;
19396: }
19397:
19398: /** Actually parse xtc.lang.jeannie.JeannieC.JavaThrows. */
19399: private Result pJeannieC$JavaThrows$1(final int yyStart)
19400: throws IOException {
19401:
19402: Result yyResult;
19403: int yyOption1;
19404: Node yyOpValue1;
19405: Node yyValue;
19406: ParseError yyError = ParseError.DUMMY;
19407:
19408: // Alternative 1.
19409:
19410: yyOption1 = yyStart;
19411: yyOpValue1 = null;
19412:
19413: yyResult = p$$Shared25(yyOption1);
19414: yyError = yyResult.select(yyError);
19415: if (yyResult.hasValue()) {
19416:
19417: yyResult = pJeannieJava$ThrowsClause(yyResult.index);
19418: yyError = yyResult.select(yyError);
19419: if (yyResult.hasValue()) {
19420: final Node v$el$1 = yyResult.semanticValue();
19421:
19422: yyOption1 = yyResult.index;
19423: yyOpValue1 = v$el$1;
19424: }
19425: }
19426: { // Start scope for v$g$1.
19427: final Node v$g$1 = yyOpValue1;
19428:
19429: yyValue = GNode.create("JavaThrows", v$g$1);
19430: yyValue.setLocation(location(yyStart));
19431:
19432: return new SemanticValue(yyValue, yyOption1, yyError);
19433: } // End scope for v$g$1.
19434: }
19435:
19436: // =========================================================================
19437:
19438: /**
19439: * Parse nonterminal xtc.lang.jeannie.JeannieC.JavaType.
19440: *
19441: * @param yyStart The index.
19442: * @return The result.
19443: * @throws IOException Signals an I/O error.
19444: */
19445: private Result pJeannieC$JavaType(final int yyStart)
19446: throws IOException {
19447: Result yyResult;
19448: Node yyValue;
19449: ParseError yyError = ParseError.DUMMY;
19450:
19451: // Alternative 1.
19452:
19453: yyResult = p$$Shared25(yyStart);
19454: yyError = yyResult.select(yyError);
19455: if (yyResult.hasValue()) {
19456:
19457: yyResult = pJavaType$TypeName(yyResult.index);
19458: yyError = yyResult.select(yyError);
19459: if (yyResult.hasValue()) {
19460: final Node v$g$1 = yyResult.semanticValue();
19461:
19462: yyValue = GNode.create("JavaType", v$g$1);
19463: yyValue.setLocation(location(yyStart));
19464:
19465: return yyResult.createValue(yyValue, yyError);
19466: }
19467: }
19468:
19469: // Done.
19470: return yyError;
19471: }
19472:
19473: // =========================================================================
19474:
19475: /**
19476: * Parse nonterminal xtc.lang.jeannie.DebuggerC.Declaration.
19477: *
19478: * @param yyStart The index.
19479: * @return The result.
19480: * @throws IOException Signals an I/O error.
19481: */
19482: private Result pDebuggerC$Declaration(final int yyStart)
19483: throws IOException {
19484:
19485: Result yyResult;
19486: int yyBase;
19487: int yyOption1;
19488: Object yyOpValue1;
19489: Node yyValue;
19490: ParseError yyError = ParseError.DUMMY;
19491:
19492: // Alternative 1.
19493:
19494: yyOption1 = yyStart;
19495: yyOpValue1 = null;
19496:
19497: yyBase = yyOption1;
19498: yyResult = pKeyword(yyBase);
19499: yyError = yyResult.select(yyError);
19500: if (yyResult.hasValue("__extension__")) {
19501: final String v$el$1 = "__extension__";
19502:
19503: yyOption1 = yyResult.index;
19504: yyOpValue1 = v$el$1;
19505: } else {
19506: yyError = yyError.select("\"__extension__\" expected",
19507: yyBase);
19508: }
19509: { // Start scope for v$g$1.
19510: final String v$g$1 = cast(yyOpValue1);
19511:
19512: yyResult = pDebuggerC$DeclarationSpecifiers(yyOption1);
19513: yyError = yyResult.select(yyError);
19514: if (yyResult.hasValue()) {
19515: final Node v$g$2 = yyResult.semanticValue();
19516:
19517: yyOption1 = yyResult.index;
19518: yyOpValue1 = null;
19519:
19520: yyResult = pDebuggerC$InitializedDeclaratorList(yyOption1);
19521: yyError = yyResult.select(yyError);
19522: if (yyResult.hasValue()) {
19523: final Node v$el$2 = yyResult.semanticValue();
19524:
19525: yyOption1 = yyResult.index;
19526: yyOpValue1 = v$el$2;
19527: }
19528: { // Start scope for l.
19529: final Node l = cast(yyOpValue1);
19530:
19531: if (yyState.isValid(l)) {
19532:
19533: yyBase = yyOption1;
19534: yyResult = pSymbol(yyBase);
19535: yyError = yyResult.select(yyError);
19536: if (yyResult.hasValue(";")) {
19537:
19538: yyValue = GNode.create("Declaration",
19539: v$g$1, v$g$2, l);
19540: yyValue.setLocation(location(yyStart));
19541:
19542: return yyResult.createValue(yyValue,
19543: yyError);
19544: } else {
19545: yyError = yyError.select("\";\" expected",
19546: yyBase);
19547: }
19548: }
19549: } // End scope for l.
19550: }
19551: } // End scope for v$g$1.
19552:
19553: // Done.
19554: yyError = yyError.select("declaration expected", yyStart);
19555: return yyError;
19556: }
19557:
19558: // =========================================================================
19559:
19560: /**
19561: * Parse nonterminal xtc.lang.jeannie.DebuggerC.DeclarationSpecifiers.
19562: *
19563: * @param yyStart The index.
19564: * @return The result.
19565: * @throws IOException Signals an I/O error.
19566: */
19567: private Result pDebuggerC$DeclarationSpecifiers(final int yyStart)
19568: throws IOException {
19569:
19570: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
19571: if (null == yyColumn.chunk7)
19572: yyColumn.chunk7 = new Chunk7();
19573: if (null == yyColumn.chunk7.fDebuggerC$DeclarationSpecifiers)
19574: yyColumn.chunk7.fDebuggerC$DeclarationSpecifiers = pDebuggerC$DeclarationSpecifiers$1(yyStart);
19575: return yyColumn.chunk7.fDebuggerC$DeclarationSpecifiers;
19576: }
19577:
19578: /** Actually parse xtc.lang.jeannie.DebuggerC.DeclarationSpecifiers. */
19579: private Result pDebuggerC$DeclarationSpecifiers$1(final int yyStart)
19580: throws IOException {
19581:
19582: Result yyResult;
19583: Node yyValue;
19584: ParseError yyError = ParseError.DUMMY;
19585:
19586: // Alternative 1.
19587:
19588: yyResult = pDebuggerC$DeclarationSpecifierPlus(yyStart);
19589: yyError = yyResult.select(yyError);
19590: if (yyResult.hasValue()) {
19591: final Pair<Node> v$g$1 = yyResult.semanticValue();
19592:
19593: yyValue = GNode.createFromPair("DeclarationSpecifiers",
19594: v$g$1);
19595: yyValue.setLocation(location(yyStart));
19596:
19597: return yyResult.createValue(yyValue, yyError);
19598: }
19599:
19600: // Done.
19601: return yyError;
19602: }
19603:
19604: // =========================================================================
19605:
19606: /**
19607: * Parse nonterminal xtc.lang.jeannie.DebuggerC.DeclarationSpecifierPlus.
19608: *
19609: * @param yyStart The index.
19610: * @return The result.
19611: * @throws IOException Signals an I/O error.
19612: */
19613: private Result pDebuggerC$DeclarationSpecifierPlus(final int yyStart)
19614: throws IOException {
19615:
19616: Result yyResult;
19617: int yyRepetition1;
19618: boolean yyRepeated1;
19619: Pair<Node> yyRepValue1;
19620: Pair<Node> yyValue;
19621: ParseError yyError = ParseError.DUMMY;
19622:
19623: // Alternative 1.
19624:
19625: yyRepetition1 = yyStart;
19626: yyRepeated1 = false;
19627: yyRepValue1 = Pair.empty();
19628: while (true) {
19629:
19630: yyResult = pDebuggerC$DeclarationSpecifier(yyRepetition1);
19631: yyError = yyResult.select(yyError);
19632: if (yyResult.hasValue()) {
19633: final Node v$el$1 = yyResult.semanticValue();
19634:
19635: yyRepetition1 = yyResult.index;
19636: yyRepeated1 = true;
19637: yyRepValue1 = new Pair<Node>(v$el$1, yyRepValue1);
19638: continue;
19639: }
19640: break;
19641: }
19642:
19643: if (yyRepeated1) {
19644: yyValue = yyRepValue1.reverse();
19645:
19646: return new SemanticValue(yyValue, yyRepetition1, yyError);
19647: }
19648:
19649: // Done.
19650: return yyError;
19651: }
19652:
19653: // =========================================================================
19654:
19655: /**
19656: * Parse nonterminal xtc.lang.jeannie.DebuggerC.DeclarationSpecifier.
19657: *
19658: * @param yyStart The index.
19659: * @return The result.
19660: * @throws IOException Signals an I/O error.
19661: */
19662: private Result pDebuggerC$DeclarationSpecifier(final int yyStart)
19663: throws IOException {
19664:
19665: Result yyResult;
19666: Node yyValue;
19667: ParseError yyError = ParseError.DUMMY;
19668:
19669: // Alternative <StorageClass>.
19670:
19671: yyResult = p$$Shared28(yyStart);
19672: yyError = yyResult.select(yyError);
19673: if (yyResult.hasValue()) {
19674: yyValue = yyResult.semanticValue();
19675:
19676: return yyResult.createValue(yyValue, yyError);
19677: }
19678:
19679: // Alternative <TypeSpecifier>.
19680:
19681: yyResult = pDebuggerC$TypeSpecifier(yyStart);
19682: yyError = yyResult.select(yyError);
19683: if (yyResult.hasValue()) {
19684: yyValue = yyResult.semanticValue();
19685:
19686: yyResult = pTypeSpecContext(yyResult.index);
19687: yyError = yyResult.select(yyError);
19688: if (yyResult.hasValue()) {
19689:
19690: return yyResult.createValue(yyValue, yyError);
19691: }
19692: }
19693:
19694: // Alternative <TypeQualifier>.
19695:
19696: yyResult = p$$Shared29(yyStart);
19697: yyError = yyResult.select(yyError);
19698: if (yyResult.hasValue()) {
19699: yyValue = yyResult.semanticValue();
19700:
19701: return yyResult.createValue(yyValue, yyError);
19702: }
19703:
19704: // Alternative 4.
19705:
19706: yyResult = pKeyword(yyStart);
19707: yyError = yyResult.select(yyError);
19708: if (yyResult.hasValue("inline")) {
19709: final String v$g$1 = "inline";
19710:
19711: yyValue = GNode.create("FunctionSpecifier", v$g$1);
19712: yyValue.setLocation(location(yyStart));
19713:
19714: return yyResult.createValue(yyValue, yyError);
19715: }
19716:
19717: // Alternative 5.
19718:
19719: yyResult = pKeyword(yyStart);
19720: yyError = yyResult.select(yyError);
19721: if (yyResult.hasValue("__inline")) {
19722: final String v$g$2 = "__inline";
19723:
19724: yyValue = GNode.create("FunctionSpecifier", v$g$2);
19725: yyValue.setLocation(location(yyStart));
19726:
19727: return yyResult.createValue(yyValue, yyError);
19728: }
19729:
19730: // Alternative 6.
19731:
19732: yyResult = pKeyword(yyStart);
19733: yyError = yyResult.select(yyError);
19734: if (yyResult.hasValue("__inline__")) {
19735: final String v$g$3 = "__inline__";
19736:
19737: yyValue = GNode.create("FunctionSpecifier", v$g$3);
19738: yyValue.setLocation(location(yyStart));
19739:
19740: return yyResult.createValue(yyValue, yyError);
19741: }
19742:
19743: // Alternative <Attribute>.
19744:
19745: yyResult = pDebuggerC$AttributeSpecifier(yyStart);
19746: yyError = yyResult.select(yyError);
19747: if (yyResult.hasValue()) {
19748: yyValue = yyResult.semanticValue();
19749:
19750: return yyResult.createValue(yyValue, yyError);
19751: }
19752:
19753: // Done.
19754: yyError = yyError.select("declaration specifier expected",
19755: yyStart);
19756: return yyError;
19757: }
19758:
19759: // =========================================================================
19760:
19761: /**
19762: * Parse nonterminal xtc.lang.jeannie.DebuggerC.InitializedDeclaratorList.
19763: *
19764: * @param yyStart The index.
19765: * @return The result.
19766: * @throws IOException Signals an I/O error.
19767: */
19768: private Result pDebuggerC$InitializedDeclaratorList(
19769: final int yyStart) throws IOException {
19770:
19771: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
19772: if (null == yyColumn.chunk8)
19773: yyColumn.chunk8 = new Chunk8();
19774: if (null == yyColumn.chunk8.fDebuggerC$InitializedDeclaratorList)
19775: yyColumn.chunk8.fDebuggerC$InitializedDeclaratorList = pDebuggerC$InitializedDeclaratorList$1(yyStart);
19776: return yyColumn.chunk8.fDebuggerC$InitializedDeclaratorList;
19777: }
19778:
19779: /** Actually parse xtc.lang.jeannie.DebuggerC.InitializedDeclaratorList. */
19780: private Result pDebuggerC$InitializedDeclaratorList$1(
19781: final int yyStart) throws IOException {
19782:
19783: Result yyResult;
19784: Node yyValue;
19785: ParseError yyError = ParseError.DUMMY;
19786:
19787: // Alternative <List>.
19788:
19789: yyResult = pDebuggerC$InitializedDeclarator(yyStart);
19790: yyError = yyResult.select(yyError);
19791: if (yyResult.hasValue()) {
19792: final Node v$g$1 = yyResult.semanticValue();
19793:
19794: yyResult = pDebuggerC$InitializedDeclaratorList$$Star1(yyResult.index);
19795: yyError = yyResult.select(yyError);
19796: if (yyResult.hasValue()) {
19797: final Pair<Node> v$g$2 = yyResult.semanticValue();
19798:
19799: yyValue = GNode.createFromPair(
19800: "InitializedDeclaratorList", v$g$1, v$g$2);
19801: yyValue.setLocation(location(yyStart));
19802:
19803: return yyResult.createValue(yyValue, yyError);
19804: }
19805: }
19806:
19807: // Done.
19808: return yyError;
19809: }
19810:
19811: // =========================================================================
19812:
19813: /**
19814: * Parse synthetic nonterminal DebuggerC.InitializedDeclaratorList$$Star1.
19815: *
19816: * @param yyStart The index.
19817: * @return The result.
19818: * @throws IOException Signals an I/O error.
19819: */
19820: private Result pDebuggerC$InitializedDeclaratorList$$Star1(
19821: final int yyStart) throws IOException {
19822:
19823: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
19824: if (null == yyColumn.chunk8)
19825: yyColumn.chunk8 = new Chunk8();
19826: if (null == yyColumn.chunk8.fDebuggerC$InitializedDeclaratorList$$Star1)
19827: yyColumn.chunk8.fDebuggerC$InitializedDeclaratorList$$Star1 = pDebuggerC$InitializedDeclaratorList$$Star1$1(yyStart);
19828: return yyColumn.chunk8.fDebuggerC$InitializedDeclaratorList$$Star1;
19829: }
19830:
19831: /** Actually parse DebuggerC.InitializedDeclaratorList$$Star1. */
19832: private Result pDebuggerC$InitializedDeclaratorList$$Star1$1(
19833: final int yyStart) throws IOException {
19834:
19835: Result yyResult;
19836: Pair<Node> yyValue;
19837: ParseError yyError = ParseError.DUMMY;
19838:
19839: // Alternative 1.
19840:
19841: yyResult = pSymbol(yyStart);
19842: yyError = yyResult.select(yyError);
19843: if (yyResult.hasValue(",")) {
19844:
19845: yyResult = pDebuggerC$InitializedDeclarator(yyResult.index);
19846: yyError = yyResult.select(yyError);
19847: if (yyResult.hasValue()) {
19848: final Node v$el$1 = yyResult.semanticValue();
19849:
19850: yyResult = pDebuggerC$InitializedDeclaratorList$$Star1(yyResult.index);
19851: yyError = yyResult.select(yyError);
19852: if (yyResult.hasValue()) {
19853: final Pair<Node> v$2 = yyResult.semanticValue();
19854:
19855: yyValue = new Pair<Node>(v$el$1, v$2);
19856:
19857: return yyResult.createValue(yyValue, yyError);
19858: }
19859: }
19860: }
19861:
19862: // Alternative 2.
19863:
19864: yyValue = Pair.empty();
19865:
19866: return new SemanticValue(yyValue, yyStart, yyError);
19867: }
19868:
19869: // =========================================================================
19870:
19871: /**
19872: * Parse nonterminal xtc.lang.jeannie.DebuggerC.InitializedDeclarator.
19873: *
19874: * @param yyStart The index.
19875: * @return The result.
19876: * @throws IOException Signals an I/O error.
19877: */
19878: private Result pDebuggerC$InitializedDeclarator(final int yyStart)
19879: throws IOException {
19880:
19881: Result yyResult;
19882: int yyBase;
19883: int yyOption1;
19884: Node yyOpValue1;
19885: Node yyValue;
19886: ParseError yyError = ParseError.DUMMY;
19887:
19888: // Alternative 1.
19889:
19890: yyOption1 = yyStart;
19891: yyOpValue1 = null;
19892:
19893: yyResult = pDebuggerC$AttributeSpecifierList(yyOption1);
19894: yyError = yyResult.select(yyError);
19895: if (yyResult.hasValue()) {
19896: final Node v$el$1 = yyResult.semanticValue();
19897:
19898: yyOption1 = yyResult.index;
19899: yyOpValue1 = v$el$1;
19900: }
19901: { // Start scope for v$g$1.
19902: final Node v$g$1 = yyOpValue1;
19903:
19904: yyResult = pDebuggerC$Declarator(yyOption1);
19905: yyError = yyResult.select(yyError);
19906: if (yyResult.hasValue()) {
19907: final Node v$g$2 = yyResult.semanticValue();
19908:
19909: yyOption1 = yyResult.index;
19910: yyOpValue1 = null;
19911:
19912: yyResult = pDebuggerC$SimpleAssemblyExpression(yyOption1);
19913: yyError = yyResult.select(yyError);
19914: if (yyResult.hasValue()) {
19915: final Node v$el$2 = yyResult.semanticValue();
19916:
19917: yyOption1 = yyResult.index;
19918: yyOpValue1 = v$el$2;
19919: }
19920: { // Start scope for v$g$3.
19921: final Node v$g$3 = yyOpValue1;
19922:
19923: yyOpValue1 = null;
19924:
19925: yyResult = pDebuggerC$AttributeSpecifierList(yyOption1);
19926: yyError = yyResult.select(yyError);
19927: if (yyResult.hasValue()) {
19928: final Node v$el$3 = yyResult.semanticValue();
19929:
19930: yyOption1 = yyResult.index;
19931: yyOpValue1 = v$el$3;
19932: }
19933: { // Start scope for v$g$4.
19934: final Node v$g$4 = yyOpValue1;
19935:
19936: yyOpValue1 = null;
19937:
19938: yyBase = yyOption1;
19939: yyResult = pSymbol(yyBase);
19940: yyError = yyResult.select(yyError);
19941: if (yyResult.hasValue("=")) {
19942:
19943: yyResult = pDebuggerC$Initializer(yyResult.index);
19944: yyError = yyResult.select(yyError);
19945: if (yyResult.hasValue()) {
19946: final Node v$el$4 = yyResult
19947: .semanticValue();
19948:
19949: yyOption1 = yyResult.index;
19950: yyOpValue1 = v$el$4;
19951: }
19952: } else {
19953: yyError = yyError.select("\"=\" expected",
19954: yyBase);
19955: }
19956: { // Start scope for v$g$5.
19957: final Node v$g$5 = yyOpValue1;
19958:
19959: yyValue = GNode.create(
19960: "InitializedDeclarator", v$g$1,
19961: v$g$2, v$g$3, v$g$4, v$g$5);
19962: yyValue.setLocation(location(yyStart));
19963:
19964: return new SemanticValue(yyValue,
19965: yyOption1, yyError);
19966: } // End scope for v$g$5.
19967: } // End scope for v$g$4.
19968: } // End scope for v$g$3.
19969: }
19970: } // End scope for v$g$1.
19971:
19972: // Done.
19973: return yyError;
19974: }
19975:
19976: // =========================================================================
19977:
19978: /**
19979: * Parse nonterminal xtc.lang.jeannie.DebuggerC.TypeSpecifier.
19980: *
19981: * @param yyStart The index.
19982: * @return The result.
19983: * @throws IOException Signals an I/O error.
19984: */
19985: private Result pDebuggerC$TypeSpecifier(final int yyStart)
19986: throws IOException {
19987:
19988: Result yyResult;
19989: int yyBase;
19990: Node yyValue;
19991: ParseError yyError = ParseError.DUMMY;
19992:
19993: // Alternative <Enumeration>.
19994:
19995: yyResult = pDebuggerC$EnumerationTypeSpecifier(yyStart);
19996: yyError = yyResult.select(yyError);
19997: if (yyResult.hasValue()) {
19998: yyValue = yyResult.semanticValue();
19999:
20000: return yyResult.createValue(yyValue, yyError);
20001: }
20002:
20003: // Alternative <Structure>.
20004:
20005: yyResult = pDebuggerC$StructureTypeSpecifier(yyStart);
20006: yyError = yyResult.select(yyError);
20007: if (yyResult.hasValue()) {
20008: yyValue = yyResult.semanticValue();
20009:
20010: return yyResult.createValue(yyValue, yyError);
20011: }
20012:
20013: // Alternative <Union>.
20014:
20015: yyResult = pDebuggerC$UnionTypeSpecifier(yyStart);
20016: yyError = yyResult.select(yyError);
20017: if (yyResult.hasValue()) {
20018: yyValue = yyResult.semanticValue();
20019:
20020: return yyResult.createValue(yyValue, yyError);
20021: }
20022:
20023: // Alternative <Floating>.
20024:
20025: yyResult = p$$Shared30(yyStart);
20026: yyError = yyResult.select(yyError);
20027: if (yyResult.hasValue()) {
20028: yyValue = yyResult.semanticValue();
20029:
20030: return yyResult.createValue(yyValue, yyError);
20031: }
20032:
20033: // Alternative <Integer>.
20034:
20035: yyResult = p$$Shared31(yyStart);
20036: yyError = yyResult.select(yyError);
20037: if (yyResult.hasValue()) {
20038: yyValue = yyResult.semanticValue();
20039:
20040: return yyResult.createValue(yyValue, yyError);
20041: }
20042:
20043: // Alternative <JavaTyp>.
20044:
20045: yyResult = pDebuggerC$JavaType(yyStart);
20046: yyError = yyResult.select(yyError);
20047: if (yyResult.hasValue()) {
20048: yyValue = yyResult.semanticValue();
20049:
20050: return yyResult.createValue(yyValue, yyError);
20051: }
20052:
20053: // Alternative 7.
20054:
20055: yyResult = pCIdentifier$Identifier(yyStart);
20056: yyError = yyResult.select(yyError);
20057: if (yyResult.hasValue()) {
20058: final String id = yyResult.semanticValue();
20059:
20060: if (yyState.isType(toText(id))) {
20061:
20062: yyValue = GNode.create("TypedefName", id);
20063: yyValue.setLocation(location(yyStart));
20064:
20065: return yyResult.createValue(yyValue, yyError);
20066: }
20067: }
20068:
20069: // Alternative 8.
20070:
20071: yyResult = p$$Shared9(yyStart);
20072: yyError = yyResult.select(yyError);
20073: if (yyResult.hasValue()) {
20074:
20075: yyBase = yyResult.index;
20076: yyResult = pSymbol(yyBase);
20077: yyError = yyResult.select(yyError);
20078: if (yyResult.hasValue("(")) {
20079:
20080: final int yyChoice1 = yyResult.index;
20081:
20082: // Nested alternative 1.
20083:
20084: yyResult = pDebuggerC$TypeName(yyChoice1);
20085: yyError = yyResult.select(yyError);
20086: if (yyResult.hasValue()) {
20087: final Node v$g$1 = yyResult.semanticValue();
20088:
20089: yyBase = yyResult.index;
20090: yyResult = pSymbol(yyBase);
20091: yyError = yyResult.select(yyError);
20092: if (yyResult.hasValue(")")) {
20093:
20094: yyValue = GNode
20095: .create("TypeofSpecifier", v$g$1);
20096: yyValue.setLocation(location(yyStart));
20097:
20098: return yyResult.createValue(yyValue, yyError);
20099: } else {
20100: yyError = yyError.select("\")\" expected",
20101: yyBase);
20102: }
20103: }
20104:
20105: // Nested alternative 2.
20106:
20107: yyResult = pDebuggerC$CommaExpression(yyChoice1);
20108: yyError = yyResult.select(yyError);
20109: if (yyResult.hasValue()) {
20110: final Node v$g$2 = yyResult.semanticValue();
20111:
20112: yyBase = yyResult.index;
20113: yyResult = pSymbol(yyBase);
20114: yyError = yyResult.select(yyError);
20115: if (yyResult.hasValue(")")) {
20116:
20117: yyValue = GNode
20118: .create("TypeofSpecifier", v$g$2);
20119: yyValue.setLocation(location(yyStart));
20120:
20121: return yyResult.createValue(yyValue, yyError);
20122: } else {
20123: yyError = yyError.select("\")\" expected",
20124: yyBase);
20125: }
20126: }
20127: } else {
20128: yyError = yyError.select("\"(\" expected", yyBase);
20129: }
20130: }
20131:
20132: // Alternative 9.
20133:
20134: yyResult = pKeyword(yyStart);
20135: yyError = yyResult.select(yyError);
20136: if (yyResult.hasValue("void")) {
20137:
20138: yyValue = GNode.create("VoidTypeSpecifier", false);
20139: yyValue.setLocation(location(yyStart));
20140:
20141: return yyResult.createValue(yyValue, yyError);
20142: }
20143:
20144: // Alternative 10.
20145:
20146: yyResult = pKeyword(yyStart);
20147: yyError = yyResult.select(yyError);
20148: if (yyResult.hasValue("__builtin_va_list")) {
20149:
20150: yyValue = GNode.create("VarArgListSpecifier", false);
20151: yyValue.setLocation(location(yyStart));
20152:
20153: return yyResult.createValue(yyValue, yyError);
20154: }
20155:
20156: // Done.
20157: yyError = yyError.select("type specifier expected", yyStart);
20158: return yyError;
20159: }
20160:
20161: // =========================================================================
20162:
20163: /**
20164: * Parse nonterminal xtc.lang.jeannie.DebuggerC.EnumerationTypeSpecifier.
20165: *
20166: * @param yyStart The index.
20167: * @return The result.
20168: * @throws IOException Signals an I/O error.
20169: */
20170: private Result pDebuggerC$EnumerationTypeSpecifier(final int yyStart)
20171: throws IOException {
20172:
20173: Result yyResult;
20174: int yyBase;
20175: int yyOption1;
20176: Object yyOpValue1;
20177: Node yyValue;
20178: ParseError yyError = ParseError.DUMMY;
20179:
20180: // Alternative 1.
20181:
20182: yyResult = pKeyword(yyStart);
20183: yyError = yyResult.select(yyError);
20184: if (yyResult.hasValue("enum")) {
20185:
20186: yyOption1 = yyResult.index;
20187: yyOpValue1 = null;
20188:
20189: yyResult = pDebuggerC$AttributeSpecifierList(yyOption1);
20190: yyError = yyResult.select(yyError);
20191: if (yyResult.hasValue()) {
20192: final Node v$el$1 = yyResult.semanticValue();
20193:
20194: yyOption1 = yyResult.index;
20195: yyOpValue1 = v$el$1;
20196: }
20197: { // Start scope for v$g$1.
20198: final Node v$g$1 = cast(yyOpValue1);
20199:
20200: final int yyChoice1 = yyOption1;
20201:
20202: // Nested alternative 1.
20203:
20204: yyOption1 = yyChoice1;
20205: yyOpValue1 = null;
20206:
20207: yyResult = pCIdentifier$Identifier(yyOption1);
20208: yyError = yyResult.select(yyError);
20209: if (yyResult.hasValue()) {
20210: final String v$el$2 = yyResult.semanticValue();
20211:
20212: yyOption1 = yyResult.index;
20213: yyOpValue1 = v$el$2;
20214: }
20215: { // Start scope for v$g$2.
20216: final String v$g$2 = cast(yyOpValue1);
20217:
20218: yyBase = yyOption1;
20219: yyResult = pSymbol(yyBase);
20220: yyError = yyResult.select(yyError);
20221: if (yyResult.hasValue("{")) {
20222:
20223: yyResult = pDebuggerC$EnumeratorList(yyResult.index);
20224: yyError = yyResult.select(yyError);
20225: if (yyResult.hasValue()) {
20226: final Node v$g$3 = yyResult.semanticValue();
20227:
20228: yyOption1 = yyResult.index;
20229:
20230: yyBase = yyOption1;
20231: yyResult = pSymbol(yyBase);
20232: yyError = yyResult.select(yyError);
20233: if (yyResult.hasValue(",")) {
20234:
20235: yyOption1 = yyResult.index;
20236: } else {
20237: yyError = yyError.select(
20238: "\",\" expected", yyBase);
20239: }
20240:
20241: yyBase = yyOption1;
20242: yyResult = pSymbol(yyBase);
20243: yyError = yyResult.select(yyError);
20244: if (yyResult.hasValue("}")) {
20245:
20246: yyOption1 = yyResult.index;
20247: yyOpValue1 = null;
20248:
20249: yyResult = pDebuggerC$AttributeSpecifierList(yyOption1);
20250: yyError = yyResult.select(yyError);
20251: if (yyResult.hasValue()) {
20252: final Node v$el$3 = yyResult
20253: .semanticValue();
20254:
20255: yyOption1 = yyResult.index;
20256: yyOpValue1 = v$el$3;
20257: }
20258: { // Start scope for v$g$4.
20259: final Node v$g$4 = cast(yyOpValue1);
20260:
20261: yyValue = GNode
20262: .create(
20263: "EnumerationTypeDefinition",
20264: v$g$1, v$g$2,
20265: v$g$3, v$g$4);
20266: yyValue
20267: .setLocation(location(yyStart));
20268:
20269: return new SemanticValue(yyValue,
20270: yyOption1, yyError);
20271: } // End scope for v$g$4.
20272: } else {
20273: yyError = yyError.select(
20274: "\"}\" expected", yyBase);
20275: }
20276: }
20277: } else {
20278: yyError = yyError.select("\"{\" expected",
20279: yyBase);
20280: }
20281: } // End scope for v$g$2.
20282:
20283: // Nested alternative 2.
20284:
20285: yyResult = pCIdentifier$Identifier(yyChoice1);
20286: yyError = yyResult.select(yyError);
20287: if (yyResult.hasValue()) {
20288: final String v$g$2 = yyResult.semanticValue();
20289:
20290: yyValue = GNode.create("EnumerationTypeReference",
20291: v$g$1, v$g$2);
20292: yyValue.setLocation(location(yyStart));
20293:
20294: return yyResult.createValue(yyValue, yyError);
20295: }
20296: } // End scope for v$g$1.
20297: }
20298:
20299: // Done.
20300: yyError = yyError.select("enumeration type specifier expected",
20301: yyStart);
20302: return yyError;
20303: }
20304:
20305: // =========================================================================
20306:
20307: /**
20308: * Parse nonterminal xtc.lang.jeannie.DebuggerC.EnumeratorList.
20309: *
20310: * @param yyStart The index.
20311: * @return The result.
20312: * @throws IOException Signals an I/O error.
20313: */
20314: private Result pDebuggerC$EnumeratorList(final int yyStart)
20315: throws IOException {
20316:
20317: Result yyResult;
20318: int yyBase;
20319: int yyRepetition1;
20320: Pair<Node> yyRepValue1;
20321: Node yyValue;
20322: ParseError yyError = ParseError.DUMMY;
20323:
20324: // Alternative <List>.
20325:
20326: yyResult = pDebuggerC$Enumerator(yyStart);
20327: yyError = yyResult.select(yyError);
20328: if (yyResult.hasValue()) {
20329: final Node v$g$1 = yyResult.semanticValue();
20330:
20331: yyRepetition1 = yyResult.index;
20332: yyRepValue1 = Pair.empty();
20333: while (true) {
20334:
20335: yyBase = yyRepetition1;
20336: yyResult = pSymbol(yyBase);
20337: yyError = yyResult.select(yyError);
20338: if (yyResult.hasValue(",")) {
20339:
20340: yyResult = pDebuggerC$Enumerator(yyResult.index);
20341: yyError = yyResult.select(yyError);
20342: if (yyResult.hasValue()) {
20343: final Node v$el$1 = yyResult.semanticValue();
20344:
20345: yyRepetition1 = yyResult.index;
20346: yyRepValue1 = new Pair<Node>(v$el$1,
20347: yyRepValue1);
20348: continue;
20349: }
20350: } else {
20351: yyError = yyError.select("\",\" expected", yyBase);
20352: }
20353: break;
20354: }
20355: { // Start scope for v$g$2.
20356: final Pair<Node> v$g$2 = yyRepValue1.reverse();
20357:
20358: yyValue = GNode.createFromPair("EnumeratorList", v$g$1,
20359: v$g$2);
20360: yyValue.setLocation(location(yyStart));
20361:
20362: return new SemanticValue(yyValue, yyRepetition1,
20363: yyError);
20364: } // End scope for v$g$2.
20365: }
20366:
20367: // Done.
20368: return yyError;
20369: }
20370:
20371: // =========================================================================
20372:
20373: /**
20374: * Parse nonterminal xtc.lang.jeannie.DebuggerC.Enumerator.
20375: *
20376: * @param yyStart The index.
20377: * @return The result.
20378: * @throws IOException Signals an I/O error.
20379: */
20380: private Result pDebuggerC$Enumerator(final int yyStart)
20381: throws IOException {
20382: Result yyResult;
20383: int yyBase;
20384: int yyOption1;
20385: Node yyOpValue1;
20386: Node yyValue;
20387: ParseError yyError = ParseError.DUMMY;
20388:
20389: // Alternative <Enumerator>.
20390:
20391: yyResult = pCIdentifier$Identifier(yyStart);
20392: yyError = yyResult.select(yyError);
20393: if (yyResult.hasValue()) {
20394: final String id = yyResult.semanticValue();
20395:
20396: yyState.bind(toText(id), false);
20397:
20398: yyOption1 = yyResult.index;
20399: yyOpValue1 = null;
20400:
20401: yyBase = yyOption1;
20402: yyResult = pSymbol(yyBase);
20403: yyError = yyResult.select(yyError);
20404: if (yyResult.hasValue("=")) {
20405:
20406: yyResult = pDebuggerC$ConditionalExpression(yyResult.index);
20407: yyError = yyResult.select(yyError);
20408: if (yyResult.hasValue()) {
20409: final Node v$el$1 = yyResult.semanticValue();
20410:
20411: yyOption1 = yyResult.index;
20412: yyOpValue1 = v$el$1;
20413: }
20414: } else {
20415: yyError = yyError.select("\"=\" expected", yyBase);
20416: }
20417: { // Start scope for v$g$1.
20418: final Node v$g$1 = yyOpValue1;
20419:
20420: yyValue = GNode.create("Enumerator", id, v$g$1);
20421: yyValue.setLocation(location(yyStart));
20422:
20423: return new SemanticValue(yyValue, yyOption1, yyError);
20424: } // End scope for v$g$1.
20425: }
20426:
20427: // Done.
20428: return yyError;
20429: }
20430:
20431: // =========================================================================
20432:
20433: /**
20434: * Parse nonterminal xtc.lang.jeannie.DebuggerC.StructureTypeSpecifier.
20435: *
20436: * @param yyStart The index.
20437: * @return The result.
20438: * @throws IOException Signals an I/O error.
20439: */
20440: private Result pDebuggerC$StructureTypeSpecifier(final int yyStart)
20441: throws IOException {
20442:
20443: Result yyResult;
20444: int yyBase;
20445: int yyOption1;
20446: Object yyOpValue1;
20447: Node yyValue;
20448: ParseError yyError = ParseError.DUMMY;
20449:
20450: // Alternative 1.
20451:
20452: yyResult = pKeyword(yyStart);
20453: yyError = yyResult.select(yyError);
20454: if (yyResult.hasValue("struct")) {
20455:
20456: yyOption1 = yyResult.index;
20457: yyOpValue1 = null;
20458:
20459: yyResult = pDebuggerC$AttributeSpecifierList(yyOption1);
20460: yyError = yyResult.select(yyError);
20461: if (yyResult.hasValue()) {
20462: final Node v$el$1 = yyResult.semanticValue();
20463:
20464: yyOption1 = yyResult.index;
20465: yyOpValue1 = v$el$1;
20466: }
20467: { // Start scope for v$g$1.
20468: final Node v$g$1 = cast(yyOpValue1);
20469:
20470: final int yyChoice1 = yyOption1;
20471:
20472: // Nested alternative 1.
20473:
20474: yyOption1 = yyChoice1;
20475: yyOpValue1 = null;
20476:
20477: yyResult = pCIdentifier$Identifier(yyOption1);
20478: yyError = yyResult.select(yyError);
20479: if (yyResult.hasValue()) {
20480: final String v$el$2 = yyResult.semanticValue();
20481:
20482: yyOption1 = yyResult.index;
20483: yyOpValue1 = v$el$2;
20484: }
20485: { // Start scope for v$g$2.
20486: final String v$g$2 = cast(yyOpValue1);
20487:
20488: yyBase = yyOption1;
20489: yyResult = pSymbol(yyBase);
20490: yyError = yyResult.select(yyError);
20491: if (yyResult.hasValue("{")) {
20492:
20493: yyResult = pPushScope(yyResult.index);
20494: yyError = yyResult.select(yyError);
20495: if (yyResult.hasValue()) {
20496:
20497: yyResult = pEnterStructure(yyResult.index);
20498: yyError = yyResult.select(yyError);
20499: if (yyResult.hasValue()) {
20500:
20501: yyResult = pDebuggerC$StructureDeclarationList(yyResult.index);
20502: yyError = yyResult.select(yyError);
20503: if (yyResult.hasValue()) {
20504: final Node v$g$3 = yyResult
20505: .semanticValue();
20506:
20507: yyBase = yyResult.index;
20508: yyResult = pSymbol(yyBase);
20509: yyError = yyResult.select(yyError);
20510: if (yyResult.hasValue("}")) {
20511:
20512: yyResult = pExitStructure(yyResult.index);
20513: yyError = yyResult
20514: .select(yyError);
20515: if (yyResult.hasValue()) {
20516:
20517: yyResult = pPopScope(yyResult.index);
20518: yyError = yyResult
20519: .select(yyError);
20520: if (yyResult.hasValue()) {
20521:
20522: yyOption1 = yyResult.index;
20523: yyOpValue1 = null;
20524:
20525: yyResult = pDebuggerC$AttributeSpecifierList(yyOption1);
20526: yyError = yyResult
20527: .select(yyError);
20528: if (yyResult.hasValue()) {
20529: final Node v$el$3 = yyResult
20530: .semanticValue();
20531:
20532: yyOption1 = yyResult.index;
20533: yyOpValue1 = v$el$3;
20534: }
20535: { // Start scope for v$g$4.
20536: final Node v$g$4 = cast(yyOpValue1);
20537:
20538: yyValue = GNode
20539: .create(
20540: "StructureTypeDefinition",
20541: v$g$1,
20542: v$g$2,
20543: v$g$3,
20544: v$g$4);
20545: yyValue
20546: .setLocation(location(yyStart));
20547:
20548: return new SemanticValue(
20549: yyValue,
20550: yyOption1,
20551: yyError);
20552: } // End scope for v$g$4.
20553: }
20554: }
20555: } else {
20556: yyError = yyError.select(
20557: "\"}\" expected",
20558: yyBase);
20559: }
20560: }
20561: }
20562: }
20563: } else {
20564: yyError = yyError.select("\"{\" expected",
20565: yyBase);
20566: }
20567: } // End scope for v$g$2.
20568:
20569: // Nested alternative 2.
20570:
20571: yyResult = pCIdentifier$Identifier(yyChoice1);
20572: yyError = yyResult.select(yyError);
20573: if (yyResult.hasValue()) {
20574: final String v$g$2 = yyResult.semanticValue();
20575:
20576: yyValue = GNode.create("StructureTypeReference",
20577: v$g$1, v$g$2);
20578: yyValue.setLocation(location(yyStart));
20579:
20580: return yyResult.createValue(yyValue, yyError);
20581: }
20582: } // End scope for v$g$1.
20583: }
20584:
20585: // Done.
20586: yyError = yyError.select("structure type specifier expected",
20587: yyStart);
20588: return yyError;
20589: }
20590:
20591: // =========================================================================
20592:
20593: /**
20594: * Parse nonterminal xtc.lang.jeannie.DebuggerC.UnionTypeSpecifier.
20595: *
20596: * @param yyStart The index.
20597: * @return The result.
20598: * @throws IOException Signals an I/O error.
20599: */
20600: private Result pDebuggerC$UnionTypeSpecifier(final int yyStart)
20601: throws IOException {
20602:
20603: Result yyResult;
20604: int yyBase;
20605: int yyOption1;
20606: Object yyOpValue1;
20607: Node yyValue;
20608: ParseError yyError = ParseError.DUMMY;
20609:
20610: // Alternative 1.
20611:
20612: yyResult = pKeyword(yyStart);
20613: yyError = yyResult.select(yyError);
20614: if (yyResult.hasValue("union")) {
20615:
20616: yyOption1 = yyResult.index;
20617: yyOpValue1 = null;
20618:
20619: yyResult = pDebuggerC$AttributeSpecifierList(yyOption1);
20620: yyError = yyResult.select(yyError);
20621: if (yyResult.hasValue()) {
20622: final Node v$el$1 = yyResult.semanticValue();
20623:
20624: yyOption1 = yyResult.index;
20625: yyOpValue1 = v$el$1;
20626: }
20627: { // Start scope for v$g$1.
20628: final Node v$g$1 = cast(yyOpValue1);
20629:
20630: final int yyChoice1 = yyOption1;
20631:
20632: // Nested alternative 1.
20633:
20634: yyOption1 = yyChoice1;
20635: yyOpValue1 = null;
20636:
20637: yyResult = pCIdentifier$Identifier(yyOption1);
20638: yyError = yyResult.select(yyError);
20639: if (yyResult.hasValue()) {
20640: final String v$el$2 = yyResult.semanticValue();
20641:
20642: yyOption1 = yyResult.index;
20643: yyOpValue1 = v$el$2;
20644: }
20645: { // Start scope for v$g$2.
20646: final String v$g$2 = cast(yyOpValue1);
20647:
20648: yyBase = yyOption1;
20649: yyResult = pSymbol(yyBase);
20650: yyError = yyResult.select(yyError);
20651: if (yyResult.hasValue("{")) {
20652:
20653: yyResult = pPushScope(yyResult.index);
20654: yyError = yyResult.select(yyError);
20655: if (yyResult.hasValue()) {
20656:
20657: yyResult = pEnterStructure(yyResult.index);
20658: yyError = yyResult.select(yyError);
20659: if (yyResult.hasValue()) {
20660:
20661: yyResult = pDebuggerC$StructureDeclarationList(yyResult.index);
20662: yyError = yyResult.select(yyError);
20663: if (yyResult.hasValue()) {
20664: final Node v$g$3 = yyResult
20665: .semanticValue();
20666:
20667: yyBase = yyResult.index;
20668: yyResult = pSymbol(yyBase);
20669: yyError = yyResult.select(yyError);
20670: if (yyResult.hasValue("}")) {
20671:
20672: yyResult = pExitStructure(yyResult.index);
20673: yyError = yyResult
20674: .select(yyError);
20675: if (yyResult.hasValue()) {
20676:
20677: yyResult = pPopScope(yyResult.index);
20678: yyError = yyResult
20679: .select(yyError);
20680: if (yyResult.hasValue()) {
20681:
20682: yyOption1 = yyResult.index;
20683: yyOpValue1 = null;
20684:
20685: yyResult = pDebuggerC$AttributeSpecifierList(yyOption1);
20686: yyError = yyResult
20687: .select(yyError);
20688: if (yyResult.hasValue()) {
20689: final Node v$el$3 = yyResult
20690: .semanticValue();
20691:
20692: yyOption1 = yyResult.index;
20693: yyOpValue1 = v$el$3;
20694: }
20695: { // Start scope for v$g$4.
20696: final Node v$g$4 = cast(yyOpValue1);
20697:
20698: yyValue = GNode
20699: .create(
20700: "UnionTypeDefinition",
20701: v$g$1,
20702: v$g$2,
20703: v$g$3,
20704: v$g$4);
20705: yyValue
20706: .setLocation(location(yyStart));
20707:
20708: return new SemanticValue(
20709: yyValue,
20710: yyOption1,
20711: yyError);
20712: } // End scope for v$g$4.
20713: }
20714: }
20715: } else {
20716: yyError = yyError.select(
20717: "\"}\" expected",
20718: yyBase);
20719: }
20720: }
20721: }
20722: }
20723: } else {
20724: yyError = yyError.select("\"{\" expected",
20725: yyBase);
20726: }
20727: } // End scope for v$g$2.
20728:
20729: // Nested alternative 2.
20730:
20731: yyResult = pCIdentifier$Identifier(yyChoice1);
20732: yyError = yyResult.select(yyError);
20733: if (yyResult.hasValue()) {
20734: final String v$g$2 = yyResult.semanticValue();
20735:
20736: yyValue = GNode.create("UnionTypeReference", v$g$1,
20737: v$g$2);
20738: yyValue.setLocation(location(yyStart));
20739:
20740: return yyResult.createValue(yyValue, yyError);
20741: }
20742: } // End scope for v$g$1.
20743: }
20744:
20745: // Done.
20746: yyError = yyError.select("union type specifier expected",
20747: yyStart);
20748: return yyError;
20749: }
20750:
20751: // =========================================================================
20752:
20753: /**
20754: * Parse nonterminal xtc.lang.jeannie.DebuggerC.StructureDeclarationList.
20755: *
20756: * @param yyStart The index.
20757: * @return The result.
20758: * @throws IOException Signals an I/O error.
20759: */
20760: private Result pDebuggerC$StructureDeclarationList(final int yyStart)
20761: throws IOException {
20762:
20763: Result yyResult;
20764: int yyRepetition1;
20765: boolean yyRepeated1;
20766: Pair<Node> yyRepValue1;
20767: Node yyValue;
20768: ParseError yyError = ParseError.DUMMY;
20769:
20770: // Alternative <Regular>.
20771:
20772: yyRepetition1 = yyStart;
20773: yyRepeated1 = false;
20774: yyRepValue1 = Pair.empty();
20775: while (true) {
20776:
20777: yyResult = pDebuggerC$AnnotatedStructureDeclaration(yyRepetition1);
20778: yyError = yyResult.select(yyError);
20779: if (yyResult.hasValue()) {
20780: final Node v$el$1 = yyResult.semanticValue();
20781:
20782: yyRepetition1 = yyResult.index;
20783: yyRepeated1 = true;
20784: yyRepValue1 = new Pair<Node>(v$el$1, yyRepValue1);
20785: continue;
20786: }
20787: break;
20788: }
20789:
20790: if (yyRepeated1) {
20791: final Pair<Node> v$g$1 = yyRepValue1.reverse();
20792:
20793: yyResult = p$$Shared6(yyRepetition1);
20794: yyError = yyResult.select(yyError);
20795: if (yyResult.hasValue()) {
20796: final Node v$g$2 = yyResult.semanticValue();
20797:
20798: yyValue = GNode.create("StructureDeclarationList",
20799: v$g$1.size() + 1).addAll(v$g$1).add(v$g$2);
20800: yyValue.setLocation(location(yyStart));
20801:
20802: return yyResult.createValue(yyValue, yyError);
20803: }
20804: }
20805:
20806: // Alternative <Empty>.
20807:
20808: if (GCC) {
20809:
20810: yyResult = p$$Shared6(yyStart);
20811: yyError = yyResult.select(yyError);
20812: if (yyResult.hasValue()) {
20813: final Node v$g$3 = yyResult.semanticValue();
20814:
20815: yyValue = GNode.create("StructureDeclarationList",
20816: v$g$3);
20817: yyValue.setLocation(location(yyStart));
20818:
20819: return yyResult.createValue(yyValue, yyError);
20820: }
20821: }
20822:
20823: // Done.
20824: yyError = yyError.select("structure declaration list expected",
20825: yyStart);
20826: return yyError;
20827: }
20828:
20829: // =========================================================================
20830:
20831: /**
20832: * Parse nonterminal
20833: * xtc.lang.jeannie.DebuggerC.AnnotatedStructureDeclaration.
20834: *
20835: * @param yyStart The index.
20836: * @return The result.
20837: * @throws IOException Signals an I/O error.
20838: */
20839: private Result pDebuggerC$AnnotatedStructureDeclaration(
20840: final int yyStart) throws IOException {
20841:
20842: Result yyResult;
20843: Node yyValue;
20844: ParseError yyError = ParseError.DUMMY;
20845:
20846: // Start a state modification.
20847: yyState.start();
20848:
20849: // Alternative 1.
20850:
20851: yyState.mark();
20852:
20853: yyResult = pDebuggerC$StructureDeclaration(yyStart);
20854: yyError = yyResult.select(yyError);
20855: if (yyResult.hasValue()) {
20856: final Node d = yyResult.semanticValue();
20857:
20858: yyValue = yyState.annotate(d);
20859:
20860: // Commit the state modification.
20861: yyState.commit();
20862:
20863: setLocation(yyValue, yyStart);
20864: return yyResult.createValue(yyValue, yyError);
20865: }
20866:
20867: // Abort the state modification.
20868: yyState.abort();
20869:
20870: // Done.
20871: return yyError;
20872: }
20873:
20874: // =========================================================================
20875:
20876: /**
20877: * Parse nonterminal xtc.lang.jeannie.DebuggerC.StructureDeclaration.
20878: *
20879: * @param yyStart The index.
20880: * @return The result.
20881: * @throws IOException Signals an I/O error.
20882: */
20883: private Result pDebuggerC$StructureDeclaration(final int yyStart)
20884: throws IOException {
20885:
20886: Result yyResult;
20887: int yyBase;
20888: int yyRepetition1;
20889: boolean yyRepeated1;
20890: int yyOption1;
20891: String yyOpValue1;
20892: Node yyValue;
20893: ParseError yyError = ParseError.DUMMY;
20894:
20895: // Alternative <Declaration>.
20896:
20897: yyOption1 = yyStart;
20898: yyOpValue1 = null;
20899:
20900: yyBase = yyOption1;
20901: yyResult = pKeyword(yyBase);
20902: yyError = yyResult.select(yyError);
20903: if (yyResult.hasValue("__extension__")) {
20904: final String v$el$1 = "__extension__";
20905:
20906: yyOption1 = yyResult.index;
20907: yyOpValue1 = v$el$1;
20908: } else {
20909: yyError = yyError.select("\"__extension__\" expected",
20910: yyBase);
20911: }
20912: { // Start scope for v$g$1.
20913: final String v$g$1 = yyOpValue1;
20914:
20915: yyResult = pDebuggerC$SpecifierQualifierList(yyOption1);
20916: yyError = yyResult.select(yyError);
20917: if (yyResult.hasValue()) {
20918: final Node v$g$2 = yyResult.semanticValue();
20919:
20920: yyResult = pDebuggerC$OptionalStructureDeclaratorList(yyResult.index);
20921: yyError = yyResult.select(yyError);
20922: if (yyResult.hasValue()) {
20923: final Node v$g$3 = yyResult.semanticValue();
20924:
20925: yyBase = yyResult.index;
20926: yyResult = pSymbol(yyBase);
20927: yyError = yyResult.select(yyError);
20928: if (yyResult.hasValue(";")) {
20929:
20930: yyOption1 = yyResult.index;
20931:
20932: if (GCC) {
20933:
20934: yyRepetition1 = yyOption1;
20935: yyRepeated1 = false;
20936: while (true) {
20937:
20938: yyBase = yyRepetition1;
20939: yyResult = pSymbol(yyBase);
20940: yyError = yyResult.select(yyError);
20941: if (yyResult.hasValue(";")) {
20942:
20943: yyRepetition1 = yyResult.index;
20944: yyRepeated1 = true;
20945: continue;
20946: } else {
20947: yyError = yyError.select(
20948: "\";\" expected", yyBase);
20949: }
20950: break;
20951: }
20952:
20953: if (yyRepeated1) {
20954:
20955: yyOption1 = yyRepetition1;
20956: }
20957: }
20958:
20959: yyValue = GNode.create("StructureDeclaration",
20960: v$g$1, v$g$2, v$g$3);
20961: yyValue.setLocation(location(yyStart));
20962:
20963: return new SemanticValue(yyValue, yyOption1,
20964: yyError);
20965: } else {
20966: yyError = yyError.select("\";\" expected",
20967: yyBase);
20968: }
20969: }
20970: }
20971: } // End scope for v$g$1.
20972:
20973: // Done.
20974: yyError = yyError.select("structure declaration expected",
20975: yyStart);
20976: return yyError;
20977: }
20978:
20979: // =========================================================================
20980:
20981: /**
20982: * Parse nonterminal xtc.lang.jeannie.DebuggerC.SpecifierQualifierList.
20983: *
20984: * @param yyStart The index.
20985: * @return The result.
20986: * @throws IOException Signals an I/O error.
20987: */
20988: private Result pDebuggerC$SpecifierQualifierList(final int yyStart)
20989: throws IOException {
20990:
20991: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
20992: if (null == yyColumn.chunk8)
20993: yyColumn.chunk8 = new Chunk8();
20994: if (null == yyColumn.chunk8.fDebuggerC$SpecifierQualifierList)
20995: yyColumn.chunk8.fDebuggerC$SpecifierQualifierList = pDebuggerC$SpecifierQualifierList$1(yyStart);
20996: return yyColumn.chunk8.fDebuggerC$SpecifierQualifierList;
20997: }
20998:
20999: /** Actually parse xtc.lang.jeannie.DebuggerC.SpecifierQualifierList. */
21000: private Result pDebuggerC$SpecifierQualifierList$1(final int yyStart)
21001: throws IOException {
21002:
21003: Result yyResult;
21004: Node yyValue;
21005: ParseError yyError = ParseError.DUMMY;
21006:
21007: // Alternative 1.
21008:
21009: yyResult = pDebuggerC$SpecifierQualifierPlus(yyStart);
21010: yyError = yyResult.select(yyError);
21011: if (yyResult.hasValue()) {
21012: final Pair<Node> v$g$1 = yyResult.semanticValue();
21013:
21014: yyValue = GNode.createFromPair("SpecifierQualifierList",
21015: v$g$1);
21016: yyValue.setLocation(location(yyStart));
21017:
21018: return yyResult.createValue(yyValue, yyError);
21019: }
21020:
21021: // Done.
21022: return yyError;
21023: }
21024:
21025: // =========================================================================
21026:
21027: /**
21028: * Parse nonterminal xtc.lang.jeannie.DebuggerC.SpecifierQualifierPlus.
21029: *
21030: * @param yyStart The index.
21031: * @return The result.
21032: * @throws IOException Signals an I/O error.
21033: */
21034: private Result pDebuggerC$SpecifierQualifierPlus(final int yyStart)
21035: throws IOException {
21036:
21037: Result yyResult;
21038: int yyRepetition1;
21039: boolean yyRepeated1;
21040: Pair<Node> yyRepValue1;
21041: Pair<Node> yyValue;
21042: ParseError yyError = ParseError.DUMMY;
21043:
21044: // Alternative 1.
21045:
21046: yyRepetition1 = yyStart;
21047: yyRepeated1 = false;
21048: yyRepValue1 = Pair.empty();
21049: while (true) {
21050:
21051: yyResult = pDebuggerC$SpecifierQualifier(yyRepetition1);
21052: yyError = yyResult.select(yyError);
21053: if (yyResult.hasValue()) {
21054: final Node v$el$1 = yyResult.semanticValue();
21055:
21056: yyRepetition1 = yyResult.index;
21057: yyRepeated1 = true;
21058: yyRepValue1 = new Pair<Node>(v$el$1, yyRepValue1);
21059: continue;
21060: }
21061: break;
21062: }
21063:
21064: if (yyRepeated1) {
21065: yyValue = yyRepValue1.reverse();
21066:
21067: return new SemanticValue(yyValue, yyRepetition1, yyError);
21068: }
21069:
21070: // Done.
21071: return yyError;
21072: }
21073:
21074: // =========================================================================
21075:
21076: /**
21077: * Parse nonterminal xtc.lang.jeannie.DebuggerC.SpecifierQualifier.
21078: *
21079: * @param yyStart The index.
21080: * @return The result.
21081: * @throws IOException Signals an I/O error.
21082: */
21083: private Result pDebuggerC$SpecifierQualifier(final int yyStart)
21084: throws IOException {
21085:
21086: Result yyResult;
21087: Node yyValue;
21088: ParseError yyError = ParseError.DUMMY;
21089:
21090: // Alternative <TypeSpecifier>.
21091:
21092: yyResult = pDebuggerC$TypeSpecifier(yyStart);
21093: yyError = yyResult.select(yyError);
21094: if (yyResult.hasValue()) {
21095: yyValue = yyResult.semanticValue();
21096:
21097: yyResult = pTypeSpecContext(yyResult.index);
21098: yyError = yyResult.select(yyError);
21099: if (yyResult.hasValue()) {
21100:
21101: return yyResult.createValue(yyValue, yyError);
21102: }
21103: }
21104:
21105: // Alternative <TypeQualifier>.
21106:
21107: yyResult = p$$Shared29(yyStart);
21108: yyError = yyResult.select(yyError);
21109: if (yyResult.hasValue()) {
21110: yyValue = yyResult.semanticValue();
21111:
21112: return yyResult.createValue(yyValue, yyError);
21113: }
21114:
21115: // Alternative <Attribute>.
21116:
21117: yyResult = pDebuggerC$AttributeSpecifier(yyStart);
21118: yyError = yyResult.select(yyError);
21119: if (yyResult.hasValue()) {
21120: yyValue = yyResult.semanticValue();
21121:
21122: return yyResult.createValue(yyValue, yyError);
21123: }
21124:
21125: // Done.
21126: return yyError;
21127: }
21128:
21129: // =========================================================================
21130:
21131: /**
21132: * Parse nonterminal
21133: * xtc.lang.jeannie.DebuggerC.OptionalStructureDeclaratorList.
21134: *
21135: * @param yyStart The index.
21136: * @return The result.
21137: * @throws IOException Signals an I/O error.
21138: */
21139: private Result pDebuggerC$OptionalStructureDeclaratorList(
21140: final int yyStart) throws IOException {
21141:
21142: Result yyResult;
21143: Node yyValue;
21144: ParseError yyError = ParseError.DUMMY;
21145:
21146: // Alternative <List>.
21147:
21148: yyResult = pDebuggerC$StructureDeclaratorList(yyStart);
21149: yyError = yyResult.select(yyError);
21150: if (yyResult.hasValue()) {
21151: yyValue = yyResult.semanticValue();
21152:
21153: return yyResult.createValue(yyValue, yyError);
21154: }
21155:
21156: // Alternative <Null>.
21157:
21158: if (GCC) {
21159: { // Start scope for yyValue.
21160: yyValue = null;
21161:
21162: return new SemanticValue(yyValue, yyStart, yyError);
21163: } // End scope for yyValue.
21164: }
21165:
21166: // Done.
21167: yyError = yyError.select(
21168: "optional structure declarator list expected", yyStart);
21169: return yyError;
21170: }
21171:
21172: // =========================================================================
21173:
21174: /**
21175: * Parse nonterminal xtc.lang.jeannie.DebuggerC.StructureDeclaratorList.
21176: *
21177: * @param yyStart The index.
21178: * @return The result.
21179: * @throws IOException Signals an I/O error.
21180: */
21181: private Result pDebuggerC$StructureDeclaratorList(final int yyStart)
21182: throws IOException {
21183:
21184: Result yyResult;
21185: int yyBase;
21186: int yyRepetition1;
21187: Pair<Node> yyRepValue1;
21188: Node yyValue;
21189: ParseError yyError = ParseError.DUMMY;
21190:
21191: // Alternative <List>.
21192:
21193: yyResult = pDebuggerC$StructureDeclarator(yyStart);
21194: yyError = yyResult.select(yyError);
21195: if (yyResult.hasValue()) {
21196: final Node v$g$1 = yyResult.semanticValue();
21197:
21198: yyRepetition1 = yyResult.index;
21199: yyRepValue1 = Pair.empty();
21200: while (true) {
21201:
21202: yyBase = yyRepetition1;
21203: yyResult = pSymbol(yyBase);
21204: yyError = yyResult.select(yyError);
21205: if (yyResult.hasValue(",")) {
21206:
21207: yyResult = pDebuggerC$StructureDeclarator(yyResult.index);
21208: yyError = yyResult.select(yyError);
21209: if (yyResult.hasValue()) {
21210: final Node v$el$1 = yyResult.semanticValue();
21211:
21212: yyRepetition1 = yyResult.index;
21213: yyRepValue1 = new Pair<Node>(v$el$1,
21214: yyRepValue1);
21215: continue;
21216: }
21217: } else {
21218: yyError = yyError.select("\",\" expected", yyBase);
21219: }
21220: break;
21221: }
21222: { // Start scope for v$g$2.
21223: final Pair<Node> v$g$2 = yyRepValue1.reverse();
21224:
21225: yyValue = GNode.createFromPair(
21226: "StructureDeclaratorList", v$g$1, v$g$2);
21227: yyValue.setLocation(location(yyStart));
21228:
21229: return new SemanticValue(yyValue, yyRepetition1,
21230: yyError);
21231: } // End scope for v$g$2.
21232: }
21233:
21234: // Done.
21235: return yyError;
21236: }
21237:
21238: // =========================================================================
21239:
21240: /**
21241: * Parse nonterminal xtc.lang.jeannie.DebuggerC.StructureDeclarator.
21242: *
21243: * @param yyStart The index.
21244: * @return The result.
21245: * @throws IOException Signals an I/O error.
21246: */
21247: private Result pDebuggerC$StructureDeclarator(final int yyStart)
21248: throws IOException {
21249:
21250: Result yyResult;
21251: int yyBase;
21252: int yyOption1;
21253: Node yyOpValue1;
21254: Node yyValue;
21255: ParseError yyError = ParseError.DUMMY;
21256:
21257: // Alternative 1.
21258:
21259: yyOption1 = yyStart;
21260: yyOpValue1 = null;
21261:
21262: yyResult = pDebuggerC$AttributeSpecifierList(yyOption1);
21263: yyError = yyResult.select(yyError);
21264: if (yyResult.hasValue()) {
21265: final Node v$el$1 = yyResult.semanticValue();
21266:
21267: yyOption1 = yyResult.index;
21268: yyOpValue1 = v$el$1;
21269: }
21270: { // Start scope for v$g$1.
21271: final Node v$g$1 = yyOpValue1;
21272:
21273: yyOpValue1 = null;
21274:
21275: yyResult = pDebuggerC$Declarator(yyOption1);
21276: yyError = yyResult.select(yyError);
21277: if (yyResult.hasValue()) {
21278: final Node v$el$2 = yyResult.semanticValue();
21279:
21280: yyOption1 = yyResult.index;
21281: yyOpValue1 = v$el$2;
21282: }
21283: { // Start scope for v$g$2.
21284: final Node v$g$2 = yyOpValue1;
21285:
21286: yyBase = yyOption1;
21287: yyResult = pSymbol(yyBase);
21288: yyError = yyResult.select(yyError);
21289: if (yyResult.hasValue(":")) {
21290:
21291: yyResult = pDebuggerC$ConditionalExpression(yyResult.index);
21292: yyError = yyResult.select(yyError);
21293: if (yyResult.hasValue()) {
21294: final Node v$g$3 = yyResult.semanticValue();
21295:
21296: yyOption1 = yyResult.index;
21297: yyOpValue1 = null;
21298:
21299: yyResult = pDebuggerC$AttributeSpecifierList(yyOption1);
21300: yyError = yyResult.select(yyError);
21301: if (yyResult.hasValue()) {
21302: final Node v$el$3 = yyResult
21303: .semanticValue();
21304:
21305: yyOption1 = yyResult.index;
21306: yyOpValue1 = v$el$3;
21307: }
21308: { // Start scope for v$g$4.
21309: final Node v$g$4 = yyOpValue1;
21310:
21311: yyValue = GNode.create("BitField", v$g$1,
21312: v$g$2, v$g$3, v$g$4);
21313: yyValue.setLocation(location(yyStart));
21314:
21315: return new SemanticValue(yyValue,
21316: yyOption1, yyError);
21317: } // End scope for v$g$4.
21318: }
21319: } else {
21320: yyError = yyError.select("\":\" expected", yyBase);
21321: }
21322: } // End scope for v$g$2.
21323: } // End scope for v$g$1.
21324:
21325: // Alternative <Simple>.
21326:
21327: yyResult = pDebuggerC$AttributedDeclarator(yyStart);
21328: yyError = yyResult.select(yyError);
21329: if (yyResult.hasValue()) {
21330: yyValue = yyResult.semanticValue();
21331:
21332: return yyResult.createValue(yyValue, yyError);
21333: }
21334:
21335: // Done.
21336: return yyError;
21337: }
21338:
21339: // =========================================================================
21340:
21341: /**
21342: * Parse nonterminal xtc.lang.jeannie.DebuggerC.AttributedDeclarator.
21343: *
21344: * @param yyStart The index.
21345: * @return The result.
21346: * @throws IOException Signals an I/O error.
21347: */
21348: private Result pDebuggerC$AttributedDeclarator(final int yyStart)
21349: throws IOException {
21350:
21351: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
21352: if (null == yyColumn.chunk8)
21353: yyColumn.chunk8 = new Chunk8();
21354: if (null == yyColumn.chunk8.fDebuggerC$AttributedDeclarator)
21355: yyColumn.chunk8.fDebuggerC$AttributedDeclarator = pDebuggerC$AttributedDeclarator$1(yyStart);
21356: return yyColumn.chunk8.fDebuggerC$AttributedDeclarator;
21357: }
21358:
21359: /** Actually parse xtc.lang.jeannie.DebuggerC.AttributedDeclarator. */
21360: private Result pDebuggerC$AttributedDeclarator$1(final int yyStart)
21361: throws IOException {
21362:
21363: Result yyResult;
21364: int yyOption1;
21365: Node yyOpValue1;
21366: Node yyValue;
21367: ParseError yyError = ParseError.DUMMY;
21368:
21369: // Alternative 1.
21370:
21371: yyOption1 = yyStart;
21372: yyOpValue1 = null;
21373:
21374: yyResult = pDebuggerC$AttributeSpecifierList(yyOption1);
21375: yyError = yyResult.select(yyError);
21376: if (yyResult.hasValue()) {
21377: final Node v$el$1 = yyResult.semanticValue();
21378:
21379: yyOption1 = yyResult.index;
21380: yyOpValue1 = v$el$1;
21381: }
21382: { // Start scope for v$g$1.
21383: final Node v$g$1 = yyOpValue1;
21384:
21385: yyResult = pDebuggerC$Declarator(yyOption1);
21386: yyError = yyResult.select(yyError);
21387: if (yyResult.hasValue()) {
21388: final Node v$g$2 = yyResult.semanticValue();
21389:
21390: yyOption1 = yyResult.index;
21391: yyOpValue1 = null;
21392:
21393: yyResult = pDebuggerC$AttributeSpecifierList(yyOption1);
21394: yyError = yyResult.select(yyError);
21395: if (yyResult.hasValue()) {
21396: final Node v$el$2 = yyResult.semanticValue();
21397:
21398: yyOption1 = yyResult.index;
21399: yyOpValue1 = v$el$2;
21400: }
21401: { // Start scope for v$g$3.
21402: final Node v$g$3 = yyOpValue1;
21403:
21404: yyValue = GNode.create("AttributedDeclarator",
21405: v$g$1, v$g$2, v$g$3);
21406: yyValue.setLocation(location(yyStart));
21407:
21408: return new SemanticValue(yyValue, yyOption1,
21409: yyError);
21410: } // End scope for v$g$3.
21411: }
21412: } // End scope for v$g$1.
21413:
21414: // Done.
21415: return yyError;
21416: }
21417:
21418: // =========================================================================
21419:
21420: /**
21421: * Parse nonterminal xtc.lang.jeannie.DebuggerC.Declarator.
21422: *
21423: * @param yyStart The index.
21424: * @return The result.
21425: * @throws IOException Signals an I/O error.
21426: */
21427: private Result pDebuggerC$Declarator(final int yyStart)
21428: throws IOException {
21429: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
21430: if (null == yyColumn.chunk8)
21431: yyColumn.chunk8 = new Chunk8();
21432: if (null == yyColumn.chunk8.fDebuggerC$Declarator)
21433: yyColumn.chunk8.fDebuggerC$Declarator = pDebuggerC$Declarator$1(yyStart);
21434: return yyColumn.chunk8.fDebuggerC$Declarator;
21435: }
21436:
21437: /** Actually parse xtc.lang.jeannie.DebuggerC.Declarator. */
21438: private Result pDebuggerC$Declarator$1(final int yyStart)
21439: throws IOException {
21440:
21441: Result yyResult;
21442: Node yyValue;
21443: ParseError yyError = ParseError.DUMMY;
21444:
21445: // Alternative <Pointer>.
21446:
21447: yyResult = pDebuggerC$PointerDeclarator(yyStart);
21448: yyError = yyResult.select(yyError);
21449: if (yyResult.hasValue()) {
21450: yyValue = yyResult.semanticValue();
21451:
21452: return yyResult.createValue(yyValue, yyError);
21453: }
21454:
21455: // Alternative <Direct>.
21456:
21457: yyResult = pDebuggerC$DirectDeclarator(yyStart);
21458: yyError = yyResult.select(yyError);
21459: if (yyResult.hasValue()) {
21460: yyValue = yyResult.semanticValue();
21461:
21462: return yyResult.createValue(yyValue, yyError);
21463: }
21464:
21465: // Done.
21466: return yyError;
21467: }
21468:
21469: // =========================================================================
21470:
21471: /**
21472: * Parse nonterminal xtc.lang.jeannie.DebuggerC.PointerDeclarator.
21473: *
21474: * @param yyStart The index.
21475: * @return The result.
21476: * @throws IOException Signals an I/O error.
21477: */
21478: private Result pDebuggerC$PointerDeclarator(final int yyStart)
21479: throws IOException {
21480:
21481: Result yyResult;
21482: Node yyValue;
21483: ParseError yyError = ParseError.DUMMY;
21484:
21485: // Alternative 1.
21486:
21487: yyResult = pDebuggerC$Pointer(yyStart);
21488: yyError = yyResult.select(yyError);
21489: if (yyResult.hasValue()) {
21490: final Node v$g$1 = yyResult.semanticValue();
21491:
21492: yyResult = pDebuggerC$DirectDeclarator(yyResult.index);
21493: yyError = yyResult.select(yyError);
21494: if (yyResult.hasValue()) {
21495: final Node v$g$2 = yyResult.semanticValue();
21496:
21497: yyValue = GNode.create("PointerDeclarator", v$g$1,
21498: v$g$2);
21499: yyValue.setLocation(location(yyStart));
21500:
21501: return yyResult.createValue(yyValue, yyError);
21502: }
21503: }
21504:
21505: // Done.
21506: return yyError;
21507: }
21508:
21509: // =========================================================================
21510:
21511: /**
21512: * Parse nonterminal xtc.lang.jeannie.DebuggerC.Pointer.
21513: *
21514: * @param yyStart The index.
21515: * @return The result.
21516: * @throws IOException Signals an I/O error.
21517: */
21518: private Result pDebuggerC$Pointer(final int yyStart)
21519: throws IOException {
21520: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
21521: if (null == yyColumn.chunk8)
21522: yyColumn.chunk8 = new Chunk8();
21523: if (null == yyColumn.chunk8.fDebuggerC$Pointer)
21524: yyColumn.chunk8.fDebuggerC$Pointer = pDebuggerC$Pointer$1(yyStart);
21525: return yyColumn.chunk8.fDebuggerC$Pointer;
21526: }
21527:
21528: /** Actually parse xtc.lang.jeannie.DebuggerC.Pointer. */
21529: private Result pDebuggerC$Pointer$1(final int yyStart)
21530: throws IOException {
21531: Result yyResult;
21532: int yyOption1;
21533: Node yyOpValue1;
21534: Node yyValue;
21535: ParseError yyError = ParseError.DUMMY;
21536:
21537: // Alternative 1.
21538:
21539: yyResult = pSymbol(yyStart);
21540: yyError = yyResult.select(yyError);
21541: if (yyResult.hasValue("*")) {
21542:
21543: yyResult = pDebuggerC$TypeQualifierList(yyResult.index);
21544: yyError = yyResult.select(yyError);
21545: if (yyResult.hasValue()) {
21546: final Node v$g$1 = yyResult.semanticValue();
21547:
21548: yyOption1 = yyResult.index;
21549: yyOpValue1 = null;
21550:
21551: yyResult = pDebuggerC$Pointer(yyOption1);
21552: yyError = yyResult.select(yyError);
21553: if (yyResult.hasValue()) {
21554: final Node v$el$1 = yyResult.semanticValue();
21555:
21556: yyOption1 = yyResult.index;
21557: yyOpValue1 = v$el$1;
21558: }
21559: { // Start scope for v$g$2.
21560: final Node v$g$2 = yyOpValue1;
21561:
21562: yyValue = GNode.create("Pointer", v$g$1, v$g$2);
21563: yyValue.setLocation(location(yyStart));
21564:
21565: return new SemanticValue(yyValue, yyOption1,
21566: yyError);
21567: } // End scope for v$g$2.
21568: }
21569: }
21570:
21571: // Done.
21572: yyError = yyError.select("pointer expected", yyStart);
21573: return yyError;
21574: }
21575:
21576: // =========================================================================
21577:
21578: /**
21579: * Parse nonterminal xtc.lang.jeannie.DebuggerC.TypeQualifierList.
21580: *
21581: * @param yyStart The index.
21582: * @return The result.
21583: * @throws IOException Signals an I/O error.
21584: */
21585: private Result pDebuggerC$TypeQualifierList(final int yyStart)
21586: throws IOException {
21587:
21588: Result yyResult;
21589: int yyRepetition1;
21590: Pair<Node> yyRepValue1;
21591: Node yyValue;
21592: ParseError yyError = ParseError.DUMMY;
21593:
21594: // Alternative 1.
21595:
21596: yyRepetition1 = yyStart;
21597: yyRepValue1 = Pair.empty();
21598: while (true) {
21599:
21600: yyResult = pDebuggerC$TypeQualifierList$$Choice1(yyRepetition1);
21601: yyError = yyResult.select(yyError);
21602: if (yyResult.hasValue()) {
21603: final Node v$el$1 = yyResult.semanticValue();
21604:
21605: yyRepetition1 = yyResult.index;
21606: yyRepValue1 = new Pair<Node>(v$el$1, yyRepValue1);
21607: continue;
21608: }
21609: break;
21610: }
21611: { // Start scope for v$g$1.
21612: final Pair<Node> v$g$1 = yyRepValue1.reverse();
21613:
21614: yyValue = GNode.createFromPair("TypeQualifierList", v$g$1);
21615: yyValue.setLocation(location(yyStart));
21616:
21617: return new SemanticValue(yyValue, yyRepetition1, yyError);
21618: } // End scope for v$g$1.
21619: }
21620:
21621: // =========================================================================
21622:
21623: /**
21624: * Parse synthetic nonterminal DebuggerC.TypeQualifierList$$Choice1.
21625: *
21626: * @param yyStart The index.
21627: * @return The result.
21628: * @throws IOException Signals an I/O error.
21629: */
21630: private Result pDebuggerC$TypeQualifierList$$Choice1(
21631: final int yyStart) throws IOException {
21632:
21633: Result yyResult;
21634: Node yyValue;
21635: ParseError yyError = ParseError.DUMMY;
21636:
21637: // Alternative 1.
21638:
21639: yyResult = p$$Shared29(yyStart);
21640: yyError = yyResult.select(yyError);
21641: if (yyResult.hasValue()) {
21642: yyValue = yyResult.semanticValue();
21643:
21644: return yyResult.createValue(yyValue, yyError);
21645: }
21646:
21647: // Alternative 2.
21648:
21649: yyResult = pDebuggerC$AttributeSpecifier(yyStart);
21650: yyError = yyResult.select(yyError);
21651: if (yyResult.hasValue()) {
21652: yyValue = yyResult.semanticValue();
21653:
21654: return yyResult.createValue(yyValue, yyError);
21655: }
21656:
21657: // Done.
21658: return yyError;
21659: }
21660:
21661: // =========================================================================
21662:
21663: /**
21664: * Parse nonterminal xtc.lang.jeannie.DebuggerC.DirectDeclarator.
21665: *
21666: * @param yyStart The index.
21667: * @return The result.
21668: * @throws IOException Signals an I/O error.
21669: */
21670: private Result pDebuggerC$DirectDeclarator(final int yyStart)
21671: throws IOException {
21672:
21673: Result yyResult;
21674: int yyBase;
21675: int yyRepetition1;
21676: Pair<Action<Node>> yyRepValue1;
21677: Node yyValue;
21678: ParseError yyError = ParseError.DUMMY;
21679:
21680: // Alternative <FullBase>.
21681:
21682: yyResult = pSymbol(yyStart);
21683: yyError = yyResult.select(yyError);
21684: if (yyResult.hasValue("(")) {
21685:
21686: yyResult = pDebuggerC$AttributedDeclarator(yyResult.index);
21687: yyError = yyResult.select(yyError);
21688: if (yyResult.hasValue()) {
21689: final Node v$g$7 = yyResult.semanticValue();
21690:
21691: yyBase = yyResult.index;
21692: yyResult = pSymbol(yyBase);
21693: yyError = yyResult.select(yyError);
21694: if (yyResult.hasValue(")")) {
21695:
21696: yyRepetition1 = yyResult.index;
21697: yyRepValue1 = Pair.empty();
21698: while (true) {
21699:
21700: yyResult = pDebuggerC$DirectDeclarator$$Tail1(yyRepetition1);
21701: yyError = yyResult.select(yyError);
21702: if (yyResult.hasValue()) {
21703: final Action<Node> v$8 = yyResult
21704: .semanticValue();
21705:
21706: yyRepetition1 = yyResult.index;
21707: yyRepValue1 = new Pair<Action<Node>>(v$8,
21708: yyRepValue1);
21709: continue;
21710: }
21711: break;
21712: }
21713: { // Start scope for v$9.
21714: final Pair<Action<Node>> v$9 = yyRepValue1
21715: .reverse();
21716:
21717: yyValue = apply(v$9, v$g$7, yyStart);
21718:
21719: return new SemanticValue(yyValue,
21720: yyRepetition1, yyError);
21721: } // End scope for v$9.
21722: } else {
21723: yyError = yyError.select("\")\" expected", yyBase);
21724: }
21725: }
21726: }
21727:
21728: // Alternative <SimpleBase>.
21729:
21730: yyResult = pDebuggerC$SimpleDeclarator(yyStart);
21731: yyError = yyResult.select(yyError);
21732: if (yyResult.hasValue()) {
21733: final Node v$g$10 = yyResult.semanticValue();
21734:
21735: yyRepetition1 = yyResult.index;
21736: yyRepValue1 = Pair.empty();
21737: while (true) {
21738:
21739: yyResult = pDebuggerC$DirectDeclarator$$Tail1(yyRepetition1);
21740: yyError = yyResult.select(yyError);
21741: if (yyResult.hasValue()) {
21742: final Action<Node> v$11 = yyResult.semanticValue();
21743:
21744: yyRepetition1 = yyResult.index;
21745: yyRepValue1 = new Pair<Action<Node>>(v$11,
21746: yyRepValue1);
21747: continue;
21748: }
21749: break;
21750: }
21751: { // Start scope for v$12.
21752: final Pair<Action<Node>> v$12 = yyRepValue1.reverse();
21753:
21754: yyValue = apply(v$12, v$g$10, yyStart);
21755:
21756: return new SemanticValue(yyValue, yyRepetition1,
21757: yyError);
21758: } // End scope for v$12.
21759: }
21760:
21761: // Done.
21762: yyError = yyError.select("direct declarator expected", yyStart);
21763: return yyError;
21764: }
21765:
21766: // =========================================================================
21767:
21768: /**
21769: * Parse synthetic nonterminal DebuggerC.DirectDeclarator$$Tail1.
21770: *
21771: * @param yyStart The index.
21772: * @return The result.
21773: * @throws IOException Signals an I/O error.
21774: */
21775: private Result pDebuggerC$DirectDeclarator$$Tail1(final int yyStart)
21776: throws IOException {
21777:
21778: Result yyResult;
21779: int yyBase;
21780: int yyOption1;
21781: Node yyOpValue1;
21782: Action<Node> yyValue;
21783: ParseError yyError = ParseError.DUMMY;
21784:
21785: // Alternative 1.
21786:
21787: yyResult = pSymbol(yyStart);
21788: yyError = yyResult.select(yyError);
21789: if (yyResult.hasValue("(")) {
21790:
21791: yyResult = pPushScope(yyResult.index);
21792: yyError = yyResult.select(yyError);
21793: if (yyResult.hasValue()) {
21794:
21795: final int yyChoice1 = yyResult.index;
21796:
21797: // Nested alternative 1.
21798:
21799: yyResult = pDebuggerC$ParameterTypeList(yyChoice1);
21800: yyError = yyResult.select(yyError);
21801: if (yyResult.hasValue()) {
21802: final Node v$g$2 = yyResult.semanticValue();
21803:
21804: yyBase = yyResult.index;
21805: yyResult = pSymbol(yyBase);
21806: yyError = yyResult.select(yyError);
21807: if (yyResult.hasValue(")")) {
21808:
21809: yyResult = pParameterContext(yyResult.index);
21810: yyError = yyResult.select(yyError);
21811: if (yyResult.hasValue()) {
21812:
21813: yyResult = pDebuggerC$JavaThrows(yyResult.index);
21814: yyError = yyResult.select(yyError);
21815: if (yyResult.hasValue()) {
21816: final Node javaThrows = yyResult
21817: .semanticValue();
21818:
21819: yyValue = new Action<Node>() {
21820: public Node run(Node v$1) {
21821: return GNode.create(
21822: "FunctionDeclarator",
21823: v$1, v$g$2, javaThrows);
21824: }
21825: };
21826:
21827: return yyResult.createValue(yyValue,
21828: yyError);
21829: }
21830: }
21831: } else {
21832: yyError = yyError.select("\")\" expected",
21833: yyBase);
21834: }
21835: }
21836:
21837: // Nested alternative 2.
21838:
21839: yyOption1 = yyChoice1;
21840: yyOpValue1 = null;
21841:
21842: yyResult = pDebuggerC$IdentifierList(yyOption1);
21843: yyError = yyResult.select(yyError);
21844: if (yyResult.hasValue()) {
21845: final Node v$el$1 = yyResult.semanticValue();
21846:
21847: yyOption1 = yyResult.index;
21848: yyOpValue1 = v$el$1;
21849: }
21850: { // Start scope for v$g$3.
21851: final Node v$g$3 = yyOpValue1;
21852:
21853: yyBase = yyOption1;
21854: yyResult = pSymbol(yyBase);
21855: yyError = yyResult.select(yyError);
21856: if (yyResult.hasValue(")")) {
21857:
21858: yyResult = pParameterContext(yyResult.index);
21859: yyError = yyResult.select(yyError);
21860: if (yyResult.hasValue()) {
21861:
21862: yyResult = pDebuggerC$JavaThrows(yyResult.index);
21863: yyError = yyResult.select(yyError);
21864: if (yyResult.hasValue()) {
21865: final Node javaThrows = yyResult
21866: .semanticValue();
21867:
21868: yyValue = new Action<Node>() {
21869: public Node run(Node v$1) {
21870: return GNode.create(
21871: "FunctionDeclarator",
21872: v$1, v$g$3, javaThrows);
21873: }
21874: };
21875:
21876: return yyResult.createValue(yyValue,
21877: yyError);
21878: }
21879: }
21880: } else {
21881: yyError = yyError.select("\")\" expected",
21882: yyBase);
21883: }
21884: } // End scope for v$g$3.
21885: }
21886: }
21887:
21888: // Alternative 2.
21889:
21890: yyResult = pSymbol(yyStart);
21891: yyError = yyResult.select(yyError);
21892: if (yyResult.hasValue("[")) {
21893:
21894: yyResult = pDebuggerC$ArrayQualifierList(yyResult.index);
21895: yyError = yyResult.select(yyError);
21896: if (yyResult.hasValue()) {
21897: final Node v$g$4 = yyResult.semanticValue();
21898:
21899: final int yyChoice1 = yyResult.index;
21900:
21901: // Nested alternative 1.
21902:
21903: yyOption1 = yyChoice1;
21904: yyOpValue1 = null;
21905:
21906: yyResult = pDebuggerC$AssignmentExpression(yyOption1);
21907: yyError = yyResult.select(yyError);
21908: if (yyResult.hasValue()) {
21909: final Node v$el$2 = yyResult.semanticValue();
21910:
21911: yyOption1 = yyResult.index;
21912: yyOpValue1 = v$el$2;
21913: }
21914: { // Start scope for v$g$5.
21915: final Node v$g$5 = yyOpValue1;
21916:
21917: yyBase = yyOption1;
21918: yyResult = pSymbol(yyBase);
21919: yyError = yyResult.select(yyError);
21920: if (yyResult.hasValue("]")) {
21921:
21922: yyValue = new Action<Node>() {
21923: public Node run(Node v$1) {
21924: return GNode.create("ArrayDeclarator",
21925: v$1, v$g$4, v$g$5);
21926: }
21927: };
21928:
21929: return yyResult.createValue(yyValue, yyError);
21930: } else {
21931: yyError = yyError.select("\"]\" expected",
21932: yyBase);
21933: }
21934: } // End scope for v$g$5.
21935:
21936: // Nested alternative 2.
21937:
21938: yyBase = yyChoice1;
21939: yyResult = pSymbol(yyBase);
21940: yyError = yyResult.select(yyError);
21941: if (yyResult.hasValue("*")) {
21942: final String v$g$6 = "*";
21943:
21944: yyBase = yyResult.index;
21945: yyResult = pSymbol(yyBase);
21946: yyError = yyResult.select(yyError);
21947: if (yyResult.hasValue("]")) {
21948:
21949: yyValue = new Action<Node>() {
21950: public Node run(Node v$1) {
21951: return GNode.create("ArrayDeclarator",
21952: v$1, v$g$4, v$g$6);
21953: }
21954: };
21955:
21956: return yyResult.createValue(yyValue, yyError);
21957: } else {
21958: yyError = yyError.select("\"]\" expected",
21959: yyBase);
21960: }
21961: } else {
21962: yyError = yyError.select("\"*\" expected", yyBase);
21963: }
21964: }
21965: }
21966:
21967: // Done.
21968: yyError = yyError.select("direct declarator expected", yyStart);
21969: return yyError;
21970: }
21971:
21972: // =========================================================================
21973:
21974: /**
21975: * Parse nonterminal xtc.lang.jeannie.DebuggerC.VariableLength.
21976: *
21977: * @param yyStart The index.
21978: * @return The result.
21979: * @throws IOException Signals an I/O error.
21980: */
21981: private Result pDebuggerC$VariableLength(final int yyStart)
21982: throws IOException {
21983:
21984: Result yyResult;
21985: Node yyValue;
21986: ParseError yyError = ParseError.DUMMY;
21987:
21988: // Alternative 1.
21989:
21990: yyResult = pSymbol(yyStart);
21991: yyError = yyResult.select(yyError);
21992: if (yyResult.hasValue("*")) {
21993:
21994: yyValue = GNode.create("VariableLength", false);
21995: yyValue.setLocation(location(yyStart));
21996:
21997: return yyResult.createValue(yyValue, yyError);
21998: }
21999:
22000: // Done.
22001: yyError = yyError.select("variable length expected", yyStart);
22002: return yyError;
22003: }
22004:
22005: // =========================================================================
22006:
22007: /**
22008: * Parse nonterminal xtc.lang.jeannie.DebuggerC.SimpleDeclarator.
22009: *
22010: * @param yyStart The index.
22011: * @return The result.
22012: * @throws IOException Signals an I/O error.
22013: */
22014: private Result pDebuggerC$SimpleDeclarator(final int yyStart)
22015: throws IOException {
22016:
22017: Result yyResult;
22018: Node yyValue;
22019: ParseError yyError = ParseError.DUMMY;
22020:
22021: // Alternative <Declarator>.
22022:
22023: yyResult = pCIdentifier$Identifier(yyStart);
22024: yyError = yyResult.select(yyError);
22025: if (yyResult.hasValue()) {
22026: final String id = yyResult.semanticValue();
22027:
22028: yyState.bind(toText(id));
22029:
22030: yyValue = GNode.create("SimpleDeclarator", id);
22031: yyValue.setLocation(location(yyStart));
22032:
22033: return yyResult.createValue(yyValue, yyError);
22034: }
22035:
22036: // Done.
22037: return yyError;
22038: }
22039:
22040: // =========================================================================
22041:
22042: /**
22043: * Parse nonterminal xtc.lang.jeannie.DebuggerC.ParameterTypeList.
22044: *
22045: * @param yyStart The index.
22046: * @return The result.
22047: * @throws IOException Signals an I/O error.
22048: */
22049: private Result pDebuggerC$ParameterTypeList(final int yyStart)
22050: throws IOException {
22051:
22052: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
22053: if (null == yyColumn.chunk8)
22054: yyColumn.chunk8 = new Chunk8();
22055: if (null == yyColumn.chunk8.fDebuggerC$ParameterTypeList)
22056: yyColumn.chunk8.fDebuggerC$ParameterTypeList = pDebuggerC$ParameterTypeList$1(yyStart);
22057: return yyColumn.chunk8.fDebuggerC$ParameterTypeList;
22058: }
22059:
22060: /** Actually parse xtc.lang.jeannie.DebuggerC.ParameterTypeList. */
22061: private Result pDebuggerC$ParameterTypeList$1(final int yyStart)
22062: throws IOException {
22063:
22064: Result yyResult;
22065: int yyBase;
22066: int yyOption1;
22067: String yyOpValue1;
22068: Node yyValue;
22069: ParseError yyError = ParseError.DUMMY;
22070:
22071: // Alternative 1.
22072:
22073: yyResult = pDebuggerC$ParameterList(yyStart);
22074: yyError = yyResult.select(yyError);
22075: if (yyResult.hasValue()) {
22076: final Node v$g$1 = yyResult.semanticValue();
22077:
22078: yyOption1 = yyResult.index;
22079: yyOpValue1 = null;
22080:
22081: yyBase = yyOption1;
22082: yyResult = pSymbol(yyBase);
22083: yyError = yyResult.select(yyError);
22084: if (yyResult.hasValue(",")) {
22085:
22086: yyBase = yyResult.index;
22087: yyResult = pSymbol(yyBase);
22088: yyError = yyResult.select(yyError);
22089: if (yyResult.hasValue("...")) {
22090: final String v$el$1 = "...";
22091:
22092: yyOption1 = yyResult.index;
22093: yyOpValue1 = v$el$1;
22094: } else {
22095: yyError = yyError
22096: .select("\"...\" expected", yyBase);
22097: }
22098: } else {
22099: yyError = yyError.select("\",\" expected", yyBase);
22100: }
22101: { // Start scope for v$g$2.
22102: final String v$g$2 = yyOpValue1;
22103:
22104: yyValue = GNode.create("ParameterTypeList", v$g$1,
22105: v$g$2);
22106: yyValue.setLocation(location(yyStart));
22107:
22108: return new SemanticValue(yyValue, yyOption1, yyError);
22109: } // End scope for v$g$2.
22110: }
22111:
22112: // Done.
22113: return yyError;
22114: }
22115:
22116: // =========================================================================
22117:
22118: /**
22119: * Parse nonterminal xtc.lang.jeannie.DebuggerC.ParameterList.
22120: *
22121: * @param yyStart The index.
22122: * @return The result.
22123: * @throws IOException Signals an I/O error.
22124: */
22125: private Result pDebuggerC$ParameterList(final int yyStart)
22126: throws IOException {
22127:
22128: Result yyResult;
22129: int yyBase;
22130: int yyRepetition1;
22131: Pair<Node> yyRepValue1;
22132: Node yyValue;
22133: ParseError yyError = ParseError.DUMMY;
22134:
22135: // Alternative 1.
22136:
22137: yyResult = pDebuggerC$ParameterDeclaration(yyStart);
22138: yyError = yyResult.select(yyError);
22139: if (yyResult.hasValue()) {
22140: final Node v$g$1 = yyResult.semanticValue();
22141:
22142: yyRepetition1 = yyResult.index;
22143: yyRepValue1 = Pair.empty();
22144: while (true) {
22145:
22146: yyBase = yyRepetition1;
22147: yyResult = pSymbol(yyBase);
22148: yyError = yyResult.select(yyError);
22149: if (yyResult.hasValue(",")) {
22150:
22151: yyResult = pDebuggerC$ParameterDeclaration(yyResult.index);
22152: yyError = yyResult.select(yyError);
22153: if (yyResult.hasValue()) {
22154: final Node v$el$1 = yyResult.semanticValue();
22155:
22156: yyRepetition1 = yyResult.index;
22157: yyRepValue1 = new Pair<Node>(v$el$1,
22158: yyRepValue1);
22159: continue;
22160: }
22161: } else {
22162: yyError = yyError.select("\",\" expected", yyBase);
22163: }
22164: break;
22165: }
22166: { // Start scope for v$g$2.
22167: final Pair<Node> v$g$2 = yyRepValue1.reverse();
22168:
22169: yyValue = GNode.createFromPair("ParameterList", v$g$1,
22170: v$g$2);
22171: yyValue.setLocation(location(yyStart));
22172:
22173: return new SemanticValue(yyValue, yyRepetition1,
22174: yyError);
22175: } // End scope for v$g$2.
22176: }
22177:
22178: // Done.
22179: return yyError;
22180: }
22181:
22182: // =========================================================================
22183:
22184: /**
22185: * Parse nonterminal xtc.lang.jeannie.DebuggerC.ParameterDeclaration.
22186: *
22187: * @param yyStart The index.
22188: * @return The result.
22189: * @throws IOException Signals an I/O error.
22190: */
22191: private Result pDebuggerC$ParameterDeclaration(final int yyStart)
22192: throws IOException {
22193:
22194: Result yyResult;
22195: int yyOption1;
22196: Node yyOpValue1;
22197: Node yyValue;
22198: ParseError yyError = ParseError.DUMMY;
22199:
22200: // Start a state modification.
22201: yyState.start();
22202:
22203: // Alternative 1.
22204:
22205: yyResult = pDebuggerC$DeclarationSpecifiers(yyStart);
22206: yyError = yyResult.select(yyError);
22207: if (yyResult.hasValue()) {
22208: final Node v$g$1 = yyResult.semanticValue();
22209:
22210: final int yyChoice1 = yyResult.index;
22211:
22212: // Nested alternative 1.
22213:
22214: yyResult = pDebuggerC$Declarator(yyChoice1);
22215: yyError = yyResult.select(yyError);
22216: if (yyResult.hasValue()) {
22217: final Node v$g$2 = yyResult.semanticValue();
22218:
22219: yyOption1 = yyResult.index;
22220: yyOpValue1 = null;
22221:
22222: yyResult = pDebuggerC$AttributeSpecifierList(yyOption1);
22223: yyError = yyResult.select(yyError);
22224: if (yyResult.hasValue()) {
22225: final Node v$el$1 = yyResult.semanticValue();
22226:
22227: yyOption1 = yyResult.index;
22228: yyOpValue1 = v$el$1;
22229: }
22230: { // Start scope for v$g$3.
22231: final Node v$g$3 = yyOpValue1;
22232:
22233: yyValue = GNode.create("ParameterDeclaration",
22234: v$g$1, v$g$2, v$g$3);
22235: yyValue.setLocation(location(yyStart));
22236:
22237: // Commit the state modification.
22238: yyState.commit();
22239:
22240: return new SemanticValue(yyValue, yyOption1,
22241: yyError);
22242: } // End scope for v$g$3.
22243: }
22244:
22245: // Nested alternative 2.
22246:
22247: yyOption1 = yyChoice1;
22248: yyOpValue1 = null;
22249:
22250: yyResult = pDebuggerC$AbstractDeclarator(yyOption1);
22251: yyError = yyResult.select(yyError);
22252: if (yyResult.hasValue()) {
22253: final Node v$el$2 = yyResult.semanticValue();
22254:
22255: yyOption1 = yyResult.index;
22256: yyOpValue1 = v$el$2;
22257: }
22258: { // Start scope for v$g$4.
22259: final Node v$g$4 = yyOpValue1;
22260:
22261: yyOpValue1 = null;
22262:
22263: yyResult = pDebuggerC$AttributeSpecifierList(yyOption1);
22264: yyError = yyResult.select(yyError);
22265: if (yyResult.hasValue()) {
22266: final Node v$el$3 = yyResult.semanticValue();
22267:
22268: yyOption1 = yyResult.index;
22269: yyOpValue1 = v$el$3;
22270: }
22271: { // Start scope for v$g$5.
22272: final Node v$g$5 = yyOpValue1;
22273:
22274: yyValue = GNode.create("ParameterDeclaration",
22275: v$g$1, v$g$4, v$g$5);
22276: yyValue.setLocation(location(yyStart));
22277:
22278: // Commit the state modification.
22279: yyState.commit();
22280:
22281: return new SemanticValue(yyValue, yyOption1,
22282: yyError);
22283: } // End scope for v$g$5.
22284: } // End scope for v$g$4.
22285: }
22286:
22287: // Abort the state modification.
22288: yyState.abort();
22289:
22290: // Done.
22291: return yyError;
22292: }
22293:
22294: // =========================================================================
22295:
22296: /**
22297: * Parse nonterminal
22298: * xtc.lang.jeannie.DebuggerC.AttributedAbstractDeclarator.
22299: *
22300: * @param yyStart The index.
22301: * @return The result.
22302: * @throws IOException Signals an I/O error.
22303: */
22304: private Result pDebuggerC$AttributedAbstractDeclarator(
22305: final int yyStart) throws IOException {
22306:
22307: Result yyResult;
22308: int yyOption1;
22309: Node yyOpValue1;
22310: Node yyValue;
22311: ParseError yyError = ParseError.DUMMY;
22312:
22313: // Alternative 1.
22314:
22315: yyOption1 = yyStart;
22316: yyOpValue1 = null;
22317:
22318: yyResult = pDebuggerC$AttributeSpecifierList(yyOption1);
22319: yyError = yyResult.select(yyError);
22320: if (yyResult.hasValue()) {
22321: final Node v$el$1 = yyResult.semanticValue();
22322:
22323: yyOption1 = yyResult.index;
22324: yyOpValue1 = v$el$1;
22325: }
22326: { // Start scope for v$g$1.
22327: final Node v$g$1 = yyOpValue1;
22328:
22329: yyResult = pDebuggerC$AbstractDeclarator(yyOption1);
22330: yyError = yyResult.select(yyError);
22331: if (yyResult.hasValue()) {
22332: final Node v$g$2 = yyResult.semanticValue();
22333:
22334: yyValue = GNode.create("AttributedAbstractDeclarator",
22335: v$g$1, v$g$2);
22336: yyValue.setLocation(location(yyStart));
22337:
22338: return yyResult.createValue(yyValue, yyError);
22339: }
22340: } // End scope for v$g$1.
22341:
22342: // Done.
22343: return yyError;
22344: }
22345:
22346: // =========================================================================
22347:
22348: /**
22349: * Parse nonterminal xtc.lang.jeannie.DebuggerC.AbstractDeclarator.
22350: *
22351: * @param yyStart The index.
22352: * @return The result.
22353: * @throws IOException Signals an I/O error.
22354: */
22355: private Result pDebuggerC$AbstractDeclarator(final int yyStart)
22356: throws IOException {
22357:
22358: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
22359: if (null == yyColumn.chunk8)
22360: yyColumn.chunk8 = new Chunk8();
22361: if (null == yyColumn.chunk8.fDebuggerC$AbstractDeclarator)
22362: yyColumn.chunk8.fDebuggerC$AbstractDeclarator = pDebuggerC$AbstractDeclarator$1(yyStart);
22363: return yyColumn.chunk8.fDebuggerC$AbstractDeclarator;
22364: }
22365:
22366: /** Actually parse xtc.lang.jeannie.DebuggerC.AbstractDeclarator. */
22367: private Result pDebuggerC$AbstractDeclarator$1(final int yyStart)
22368: throws IOException {
22369:
22370: Result yyResult;
22371: int yyOption1;
22372: Node yyOpValue1;
22373: Node yyValue;
22374: ParseError yyError = ParseError.DUMMY;
22375:
22376: // Alternative 1.
22377:
22378: yyOption1 = yyStart;
22379: yyOpValue1 = null;
22380:
22381: yyResult = pDebuggerC$Pointer(yyOption1);
22382: yyError = yyResult.select(yyError);
22383: if (yyResult.hasValue()) {
22384: final Node v$el$1 = yyResult.semanticValue();
22385:
22386: yyOption1 = yyResult.index;
22387: yyOpValue1 = v$el$1;
22388: }
22389: { // Start scope for p.
22390: final Node p = yyOpValue1;
22391:
22392: yyResult = pDebuggerC$DirectAbstractDeclarator(yyOption1);
22393: yyError = yyResult.select(yyError);
22394: if (yyResult.hasValue()) {
22395: final Node d = yyResult.semanticValue();
22396:
22397: if ((null != p) || (null != d)) {
22398:
22399: yyValue = GNode.create("AbstractDeclarator", p, d);
22400: yyValue.setLocation(location(yyStart));
22401:
22402: return yyResult.createValue(yyValue, yyError);
22403: }
22404: }
22405: } // End scope for p.
22406:
22407: // Done.
22408: yyError = yyError.select("abstract declarator expected",
22409: yyStart);
22410: return yyError;
22411: }
22412:
22413: // =========================================================================
22414:
22415: /**
22416: * Parse nonterminal xtc.lang.jeannie.DebuggerC.DirectAbstractDeclarator.
22417: *
22418: * @param yyStart The index.
22419: * @return The result.
22420: * @throws IOException Signals an I/O error.
22421: */
22422: private Result pDebuggerC$DirectAbstractDeclarator(final int yyStart)
22423: throws IOException {
22424:
22425: Result yyResult;
22426: int yyBase;
22427: int yyRepetition1;
22428: Pair<Action<Node>> yyRepValue1;
22429: Node yyValue;
22430: ParseError yyError = ParseError.DUMMY;
22431:
22432: // Alternative <Parenthesized>.
22433:
22434: yyResult = pSymbol(yyStart);
22435: yyError = yyResult.select(yyError);
22436: if (yyResult.hasValue("(")) {
22437:
22438: yyResult = pDebuggerC$AttributedAbstractDeclarator(yyResult.index);
22439: yyError = yyResult.select(yyError);
22440: if (yyResult.hasValue()) {
22441: final Node v$g$7 = yyResult.semanticValue();
22442:
22443: yyBase = yyResult.index;
22444: yyResult = pSymbol(yyBase);
22445: yyError = yyResult.select(yyError);
22446: if (yyResult.hasValue(")")) {
22447:
22448: yyRepetition1 = yyResult.index;
22449: yyRepValue1 = Pair.empty();
22450: while (true) {
22451:
22452: yyResult = pDebuggerC$DirectAbstractDeclarator$$Tail1(yyRepetition1);
22453: yyError = yyResult.select(yyError);
22454: if (yyResult.hasValue()) {
22455: final Action<Node> v$8 = yyResult
22456: .semanticValue();
22457:
22458: yyRepetition1 = yyResult.index;
22459: yyRepValue1 = new Pair<Action<Node>>(v$8,
22460: yyRepValue1);
22461: continue;
22462: }
22463: break;
22464: }
22465: { // Start scope for v$9.
22466: final Pair<Action<Node>> v$9 = yyRepValue1
22467: .reverse();
22468:
22469: yyValue = apply(v$9, v$g$7, yyStart);
22470:
22471: return new SemanticValue(yyValue,
22472: yyRepetition1, yyError);
22473: } // End scope for v$9.
22474: } else {
22475: yyError = yyError.select("\")\" expected", yyBase);
22476: }
22477: }
22478: }
22479:
22480: // Alternative <Empty>.
22481:
22482: yyRepetition1 = yyStart;
22483: yyRepValue1 = Pair.empty();
22484: while (true) {
22485:
22486: yyResult = pDebuggerC$DirectAbstractDeclarator$$Tail1(yyRepetition1);
22487: yyError = yyResult.select(yyError);
22488: if (yyResult.hasValue()) {
22489: final Action<Node> v$11 = yyResult.semanticValue();
22490:
22491: yyRepetition1 = yyResult.index;
22492: yyRepValue1 = new Pair<Action<Node>>(v$11, yyRepValue1);
22493: continue;
22494: }
22495: break;
22496: }
22497: { // Start scope for v$12.
22498: final Pair<Action<Node>> v$12 = yyRepValue1.reverse();
22499:
22500: yyValue = apply(v$12, null, yyStart);
22501:
22502: return new SemanticValue(yyValue, yyRepetition1, yyError);
22503: } // End scope for v$12.
22504: }
22505:
22506: // =========================================================================
22507:
22508: /**
22509: * Parse synthetic nonterminal DebuggerC.DirectAbstractDeclarator$$Tail1.
22510: *
22511: * @param yyStart The index.
22512: * @return The result.
22513: * @throws IOException Signals an I/O error.
22514: */
22515: private Result pDebuggerC$DirectAbstractDeclarator$$Tail1(
22516: final int yyStart) throws IOException {
22517:
22518: Result yyResult;
22519: int yyBase;
22520: int yyOption1;
22521: Node yyOpValue1;
22522: Action<Node> yyValue;
22523: ParseError yyError = ParseError.DUMMY;
22524:
22525: // Alternative 1.
22526:
22527: yyResult = pSymbol(yyStart);
22528: yyError = yyResult.select(yyError);
22529: if (yyResult.hasValue("[")) {
22530: final String v$g$2 = "[";
22531:
22532: final int yyChoice1 = yyResult.index;
22533:
22534: // Nested alternative 1.
22535:
22536: yyOption1 = yyChoice1;
22537: yyOpValue1 = null;
22538:
22539: yyResult = pDebuggerC$AssignmentExpression(yyOption1);
22540: yyError = yyResult.select(yyError);
22541: if (yyResult.hasValue()) {
22542: final Node v$el$1 = yyResult.semanticValue();
22543:
22544: yyOption1 = yyResult.index;
22545: yyOpValue1 = v$el$1;
22546: }
22547: { // Start scope for v$g$3.
22548: final Node v$g$3 = yyOpValue1;
22549:
22550: yyBase = yyOption1;
22551: yyResult = pSymbol(yyBase);
22552: yyError = yyResult.select(yyError);
22553: if (yyResult.hasValue("]")) {
22554:
22555: yyValue = new Action<Node>() {
22556: public Node run(Node v$1) {
22557: return GNode.create(
22558: "DirectAbstractDeclarator", v$1,
22559: v$g$2, v$g$3);
22560: }
22561: };
22562:
22563: return yyResult.createValue(yyValue, yyError);
22564: } else {
22565: yyError = yyError.select("\"]\" expected", yyBase);
22566: }
22567: } // End scope for v$g$3.
22568:
22569: // Nested alternative 2.
22570:
22571: yyResult = pDebuggerC$VariableLength(yyChoice1);
22572: yyError = yyResult.select(yyError);
22573: if (yyResult.hasValue()) {
22574: final Node v$g$4 = yyResult.semanticValue();
22575:
22576: yyBase = yyResult.index;
22577: yyResult = pSymbol(yyBase);
22578: yyError = yyResult.select(yyError);
22579: if (yyResult.hasValue("]")) {
22580:
22581: yyValue = new Action<Node>() {
22582: public Node run(Node v$1) {
22583: return GNode.create(
22584: "DirectAbstractDeclarator", v$1,
22585: v$g$2, v$g$4);
22586: }
22587: };
22588:
22589: return yyResult.createValue(yyValue, yyError);
22590: } else {
22591: yyError = yyError.select("\"]\" expected", yyBase);
22592: }
22593: }
22594: }
22595:
22596: // Alternative 2.
22597:
22598: yyResult = pSymbol(yyStart);
22599: yyError = yyResult.select(yyError);
22600: if (yyResult.hasValue("(")) {
22601: final String v$g$5 = "(";
22602:
22603: yyOption1 = yyResult.index;
22604: yyOpValue1 = null;
22605:
22606: yyResult = pDebuggerC$ParameterTypeList(yyOption1);
22607: yyError = yyResult.select(yyError);
22608: if (yyResult.hasValue()) {
22609: final Node v$el$2 = yyResult.semanticValue();
22610:
22611: yyOption1 = yyResult.index;
22612: yyOpValue1 = v$el$2;
22613: }
22614: { // Start scope for v$g$6.
22615: final Node v$g$6 = yyOpValue1;
22616:
22617: yyBase = yyOption1;
22618: yyResult = pSymbol(yyBase);
22619: yyError = yyResult.select(yyError);
22620: if (yyResult.hasValue(")")) {
22621:
22622: yyValue = new Action<Node>() {
22623: public Node run(Node v$1) {
22624: return GNode.create(
22625: "DirectAbstractDeclarator", v$1,
22626: v$g$5, v$g$6);
22627: }
22628: };
22629:
22630: return yyResult.createValue(yyValue, yyError);
22631: } else {
22632: yyError = yyError.select("\")\" expected", yyBase);
22633: }
22634: } // End scope for v$g$6.
22635: }
22636:
22637: // Done.
22638: yyError = yyError.select("direct abstract declarator expected",
22639: yyStart);
22640: return yyError;
22641: }
22642:
22643: // =========================================================================
22644:
22645: /**
22646: * Parse nonterminal xtc.lang.jeannie.DebuggerC.IdentifierList.
22647: *
22648: * @param yyStart The index.
22649: * @return The result.
22650: * @throws IOException Signals an I/O error.
22651: */
22652: private Result pDebuggerC$IdentifierList(final int yyStart)
22653: throws IOException {
22654:
22655: Result yyResult;
22656: int yyBase;
22657: int yyRepetition1;
22658: Pair<String> yyRepValue1;
22659: Node yyValue;
22660: ParseError yyError = ParseError.DUMMY;
22661:
22662: // Alternative 1.
22663:
22664: yyResult = pCIdentifier$Identifier(yyStart);
22665: yyError = yyResult.select(yyError);
22666: if (yyResult.hasValue()) {
22667: final String id1 = yyResult.semanticValue();
22668:
22669: yyState.bind(toText(id1));
22670:
22671: yyRepetition1 = yyResult.index;
22672: yyRepValue1 = Pair.empty();
22673: while (true) {
22674:
22675: yyBase = yyRepetition1;
22676: yyResult = pSymbol(yyBase);
22677: yyError = yyResult.select(yyError);
22678: if (yyResult.hasValue(",")) {
22679:
22680: yyResult = pCIdentifier$Identifier(yyResult.index);
22681: yyError = yyResult.select(yyError);
22682: if (yyResult.hasValue()) {
22683: final String id2 = yyResult.semanticValue();
22684:
22685: yyState.bind(toText(id2));
22686:
22687: yyRepetition1 = yyResult.index;
22688: yyRepValue1 = new Pair<String>(id2, yyRepValue1);
22689: continue;
22690: }
22691: } else {
22692: yyError = yyError.select("\",\" expected", yyBase);
22693: }
22694: break;
22695: }
22696: { // Start scope for v$g$1.
22697: final Pair<String> v$g$1 = yyRepValue1.reverse();
22698:
22699: yyValue = GNode.createFromPair("IdentifierList", id1,
22700: v$g$1);
22701: yyValue.setLocation(location(yyStart));
22702:
22703: return new SemanticValue(yyValue, yyRepetition1,
22704: yyError);
22705: } // End scope for v$g$1.
22706: }
22707:
22708: // Done.
22709: return yyError;
22710: }
22711:
22712: // =========================================================================
22713:
22714: /**
22715: * Parse nonterminal xtc.lang.jeannie.DebuggerC.ArrayQualifierList.
22716: *
22717: * @param yyStart The index.
22718: * @return The result.
22719: * @throws IOException Signals an I/O error.
22720: */
22721: private Result pDebuggerC$ArrayQualifierList(final int yyStart)
22722: throws IOException {
22723:
22724: Result yyResult;
22725: int yyRepetition1;
22726: Pair<Node> yyRepValue1;
22727: Node yyValue;
22728: ParseError yyError = ParseError.DUMMY;
22729:
22730: // Alternative 1.
22731:
22732: yyRepetition1 = yyStart;
22733: yyRepValue1 = Pair.empty();
22734: while (true) {
22735:
22736: yyResult = pDebuggerC$ArrayQualifierList$$Choice1(yyRepetition1);
22737: yyError = yyResult.select(yyError);
22738: if (yyResult.hasValue()) {
22739: final Node v$el$1 = yyResult.semanticValue();
22740:
22741: yyRepetition1 = yyResult.index;
22742: yyRepValue1 = new Pair<Node>(v$el$1, yyRepValue1);
22743: continue;
22744: }
22745: break;
22746: }
22747: { // Start scope for v$g$1.
22748: final Pair<Node> v$g$1 = yyRepValue1.reverse();
22749:
22750: yyValue = GNode.createFromPair("ArrayQualifierList", v$g$1);
22751: yyValue.setLocation(location(yyStart));
22752:
22753: return new SemanticValue(yyValue, yyRepetition1, yyError);
22754: } // End scope for v$g$1.
22755: }
22756:
22757: // =========================================================================
22758:
22759: /**
22760: * Parse synthetic nonterminal DebuggerC.ArrayQualifierList$$Choice1.
22761: *
22762: * @param yyStart The index.
22763: * @return The result.
22764: * @throws IOException Signals an I/O error.
22765: */
22766: private Result pDebuggerC$ArrayQualifierList$$Choice1(
22767: final int yyStart) throws IOException {
22768:
22769: Result yyResult;
22770: Node yyValue;
22771: ParseError yyError = ParseError.DUMMY;
22772:
22773: // Alternative 1.
22774:
22775: yyResult = pKeyword(yyStart);
22776: yyError = yyResult.select(yyError);
22777: if (yyResult.hasValue("static")) {
22778:
22779: yyValue = GNode.create("StaticSpecifier", false);
22780: yyValue.setLocation(location(yyStart));
22781:
22782: return yyResult.createValue(yyValue, yyError);
22783: }
22784:
22785: // Alternative 2.
22786:
22787: yyResult = pKeyword(yyStart);
22788: yyError = yyResult.select(yyError);
22789: if (yyResult.hasValue("volatile")) {
22790: final String v$g$1 = "volatile";
22791:
22792: yyValue = GNode.create("VolatileQualifier", v$g$1);
22793: yyValue.setLocation(location(yyStart));
22794:
22795: return yyResult.createValue(yyValue, yyError);
22796: }
22797:
22798: // Alternative 3.
22799:
22800: yyResult = pKeyword(yyStart);
22801: yyError = yyResult.select(yyError);
22802: if (yyResult.hasValue("__volatile")) {
22803: final String v$g$2 = "__volatile";
22804:
22805: yyValue = GNode.create("VolatileQualifier", v$g$2);
22806: yyValue.setLocation(location(yyStart));
22807:
22808: return yyResult.createValue(yyValue, yyError);
22809: }
22810:
22811: // Alternative 4.
22812:
22813: yyResult = pKeyword(yyStart);
22814: yyError = yyResult.select(yyError);
22815: if (yyResult.hasValue("__volatile__")) {
22816: final String v$g$3 = "__volatile__";
22817:
22818: yyValue = GNode.create("VolatileQualifier", v$g$3);
22819: yyValue.setLocation(location(yyStart));
22820:
22821: return yyResult.createValue(yyValue, yyError);
22822: }
22823:
22824: // Alternative 5.
22825:
22826: yyResult = pKeyword(yyStart);
22827: yyError = yyResult.select(yyError);
22828: if (yyResult.hasValue("restrict")) {
22829: final String v$g$1 = "restrict";
22830:
22831: yyValue = GNode.create("RestrictQualifier", v$g$1);
22832: yyValue.setLocation(location(yyStart));
22833:
22834: return yyResult.createValue(yyValue, yyError);
22835: }
22836:
22837: // Alternative 6.
22838:
22839: yyResult = pKeyword(yyStart);
22840: yyError = yyResult.select(yyError);
22841: if (yyResult.hasValue("__restrict")) {
22842: final String v$g$2 = "__restrict";
22843:
22844: yyValue = GNode.create("RestrictQualifier", v$g$2);
22845: yyValue.setLocation(location(yyStart));
22846:
22847: return yyResult.createValue(yyValue, yyError);
22848: }
22849:
22850: // Alternative 7.
22851:
22852: yyResult = pKeyword(yyStart);
22853: yyError = yyResult.select(yyError);
22854: if (yyResult.hasValue("__restrict__")) {
22855: final String v$g$3 = "__restrict__";
22856:
22857: yyValue = GNode.create("RestrictQualifier", v$g$3);
22858: yyValue.setLocation(location(yyStart));
22859:
22860: return yyResult.createValue(yyValue, yyError);
22861: }
22862:
22863: // Alternative 8.
22864:
22865: yyResult = pKeyword(yyStart);
22866: yyError = yyResult.select(yyError);
22867: if (yyResult.hasValue("const")) {
22868: final String v$g$1 = "const";
22869:
22870: yyValue = GNode.create("ConstantQualifier", v$g$1);
22871: yyValue.setLocation(location(yyStart));
22872:
22873: return yyResult.createValue(yyValue, yyError);
22874: }
22875:
22876: // Alternative 9.
22877:
22878: yyResult = pKeyword(yyStart);
22879: yyError = yyResult.select(yyError);
22880: if (yyResult.hasValue("__const")) {
22881: final String v$g$2 = "__const";
22882:
22883: yyValue = GNode.create("ConstantQualifier", v$g$2);
22884: yyValue.setLocation(location(yyStart));
22885:
22886: return yyResult.createValue(yyValue, yyError);
22887: }
22888:
22889: // Alternative 10.
22890:
22891: yyResult = pKeyword(yyStart);
22892: yyError = yyResult.select(yyError);
22893: if (yyResult.hasValue("__const__")) {
22894: final String v$g$3 = "__const__";
22895:
22896: yyValue = GNode.create("ConstantQualifier", v$g$3);
22897: yyValue.setLocation(location(yyStart));
22898:
22899: return yyResult.createValue(yyValue, yyError);
22900: }
22901:
22902: // Alternative 11.
22903:
22904: yyResult = pDebuggerC$AttributeSpecifier(yyStart);
22905: yyError = yyResult.select(yyError);
22906: if (yyResult.hasValue()) {
22907: yyValue = yyResult.semanticValue();
22908:
22909: return yyResult.createValue(yyValue, yyError);
22910: }
22911:
22912: // Done.
22913: yyError = yyError.select("array qualifier list expected",
22914: yyStart);
22915: return yyError;
22916: }
22917:
22918: // =========================================================================
22919:
22920: /**
22921: * Parse nonterminal xtc.lang.jeannie.DebuggerC.Initializer.
22922: *
22923: * @param yyStart The index.
22924: * @return The result.
22925: * @throws IOException Signals an I/O error.
22926: */
22927: private Result pDebuggerC$Initializer(final int yyStart)
22928: throws IOException {
22929:
22930: Result yyResult;
22931: int yyBase;
22932: int yyOption1;
22933: Node yyValue;
22934: ParseError yyError = ParseError.DUMMY;
22935:
22936: // Alternative <Complex>.
22937:
22938: yyResult = pSymbol(yyStart);
22939: yyError = yyResult.select(yyError);
22940: if (yyResult.hasValue("{")) {
22941:
22942: yyResult = pDebuggerC$InitializerList(yyResult.index);
22943: yyError = yyResult.select(yyError);
22944: if (yyResult.hasValue()) {
22945: yyValue = yyResult.semanticValue();
22946:
22947: yyOption1 = yyResult.index;
22948:
22949: yyBase = yyOption1;
22950: yyResult = pSymbol(yyBase);
22951: yyError = yyResult.select(yyError);
22952: if (yyResult.hasValue(",")) {
22953:
22954: yyOption1 = yyResult.index;
22955: } else {
22956: yyError = yyError.select("\",\" expected", yyBase);
22957: }
22958:
22959: yyBase = yyOption1;
22960: yyResult = pSymbol(yyBase);
22961: yyError = yyResult.select(yyError);
22962: if (yyResult.hasValue("}")) {
22963:
22964: return yyResult.createValue(yyValue, yyError);
22965: } else {
22966: yyError = yyError.select("\"}\" expected", yyBase);
22967: }
22968: }
22969: }
22970:
22971: // Alternative <Simple>.
22972:
22973: yyResult = pDebuggerC$AssignmentExpression(yyStart);
22974: yyError = yyResult.select(yyError);
22975: if (yyResult.hasValue()) {
22976: yyValue = yyResult.semanticValue();
22977:
22978: return yyResult.createValue(yyValue, yyError);
22979: }
22980:
22981: // Done.
22982: yyError = yyError.select("initializer expected", yyStart);
22983: return yyError;
22984: }
22985:
22986: // =========================================================================
22987:
22988: /**
22989: * Parse nonterminal xtc.lang.jeannie.DebuggerC.InitializerList.
22990: *
22991: * @param yyStart The index.
22992: * @return The result.
22993: * @throws IOException Signals an I/O error.
22994: */
22995: private Result pDebuggerC$InitializerList(final int yyStart)
22996: throws IOException {
22997:
22998: Result yyResult;
22999: int yyBase;
23000: int yyRepetition1;
23001: Pair<Node> yyRepValue1;
23002: Node yyValue;
23003: ParseError yyError = ParseError.DUMMY;
23004:
23005: // Alternative 1.
23006:
23007: yyResult = pDebuggerC$InitializerListEntry(yyStart);
23008: yyError = yyResult.select(yyError);
23009: if (yyResult.hasValue()) {
23010: final Node v$g$1 = yyResult.semanticValue();
23011:
23012: yyRepetition1 = yyResult.index;
23013: yyRepValue1 = Pair.empty();
23014: while (true) {
23015:
23016: yyBase = yyRepetition1;
23017: yyResult = pSymbol(yyBase);
23018: yyError = yyResult.select(yyError);
23019: if (yyResult.hasValue(",")) {
23020:
23021: yyResult = pDebuggerC$InitializerListEntry(yyResult.index);
23022: yyError = yyResult.select(yyError);
23023: if (yyResult.hasValue()) {
23024: final Node v$el$1 = yyResult.semanticValue();
23025:
23026: yyRepetition1 = yyResult.index;
23027: yyRepValue1 = new Pair<Node>(v$el$1,
23028: yyRepValue1);
23029: continue;
23030: }
23031: } else {
23032: yyError = yyError.select("\",\" expected", yyBase);
23033: }
23034: break;
23035: }
23036: { // Start scope for v$g$2.
23037: final Pair<Node> v$g$2 = yyRepValue1.reverse();
23038:
23039: yyValue = GNode.createFromPair("InitializerList",
23040: v$g$1, v$g$2);
23041: yyValue.setLocation(location(yyStart));
23042:
23043: return new SemanticValue(yyValue, yyRepetition1,
23044: yyError);
23045: } // End scope for v$g$2.
23046: }
23047:
23048: // Alternative 2.
23049:
23050: if (GCC) {
23051:
23052: yyValue = GNode.create("InitializerList", false);
23053: yyValue.setLocation(location(yyStart));
23054:
23055: return new SemanticValue(yyValue, yyStart, yyError);
23056: }
23057:
23058: // Done.
23059: yyError = yyError.select("initializer list expected", yyStart);
23060: return yyError;
23061: }
23062:
23063: // =========================================================================
23064:
23065: /**
23066: * Parse nonterminal xtc.lang.jeannie.DebuggerC.InitializerListEntry.
23067: *
23068: * @param yyStart The index.
23069: * @return The result.
23070: * @throws IOException Signals an I/O error.
23071: */
23072: private Result pDebuggerC$InitializerListEntry(final int yyStart)
23073: throws IOException {
23074:
23075: Result yyResult;
23076: int yyOption1;
23077: Node yyOpValue1;
23078: Node yyValue;
23079: ParseError yyError = ParseError.DUMMY;
23080:
23081: // Alternative 1.
23082:
23083: yyOption1 = yyStart;
23084: yyOpValue1 = null;
23085:
23086: yyResult = pDebuggerC$Designation(yyOption1);
23087: yyError = yyResult.select(yyError);
23088: if (yyResult.hasValue()) {
23089: final Node v$el$1 = yyResult.semanticValue();
23090:
23091: yyOption1 = yyResult.index;
23092: yyOpValue1 = v$el$1;
23093: }
23094: { // Start scope for v$g$1.
23095: final Node v$g$1 = yyOpValue1;
23096:
23097: yyResult = pDebuggerC$Initializer(yyOption1);
23098: yyError = yyResult.select(yyError);
23099: if (yyResult.hasValue()) {
23100: final Node v$g$2 = yyResult.semanticValue();
23101:
23102: yyValue = GNode.create("InitializerListEntry", v$g$1,
23103: v$g$2);
23104: yyValue.setLocation(location(yyStart));
23105:
23106: return yyResult.createValue(yyValue, yyError);
23107: }
23108: } // End scope for v$g$1.
23109:
23110: // Done.
23111: return yyError;
23112: }
23113:
23114: // =========================================================================
23115:
23116: /**
23117: * Parse nonterminal xtc.lang.jeannie.DebuggerC.Designation.
23118: *
23119: * @param yyStart The index.
23120: * @return The result.
23121: * @throws IOException Signals an I/O error.
23122: */
23123: private Result pDebuggerC$Designation(final int yyStart)
23124: throws IOException {
23125:
23126: Result yyResult;
23127: int yyBase;
23128: int yyRepetition1;
23129: boolean yyRepeated1;
23130: Pair<Node> yyRepValue1;
23131: Node yyValue;
23132: ParseError yyError = ParseError.DUMMY;
23133:
23134: // Alternative <Standard>.
23135:
23136: yyRepetition1 = yyStart;
23137: yyRepeated1 = false;
23138: yyRepValue1 = Pair.empty();
23139: while (true) {
23140:
23141: yyResult = pDebuggerC$Designator(yyRepetition1);
23142: yyError = yyResult.select(yyError);
23143: if (yyResult.hasValue()) {
23144: final Node v$el$1 = yyResult.semanticValue();
23145:
23146: yyRepetition1 = yyResult.index;
23147: yyRepeated1 = true;
23148: yyRepValue1 = new Pair<Node>(v$el$1, yyRepValue1);
23149: continue;
23150: }
23151: break;
23152: }
23153:
23154: if (yyRepeated1) {
23155: final Pair<Node> v$g$1 = yyRepValue1.reverse();
23156:
23157: yyBase = yyRepetition1;
23158: yyResult = pSymbol(yyBase);
23159: yyError = yyResult.select(yyError);
23160: if (yyResult.hasValue("=")) {
23161:
23162: yyValue = GNode.createFromPair("Designation", v$g$1);
23163: yyValue.setLocation(location(yyStart));
23164:
23165: return yyResult.createValue(yyValue, yyError);
23166: } else {
23167: yyError = yyError.select("\"=\" expected", yyBase);
23168: }
23169: }
23170:
23171: // Alternative 2.
23172:
23173: if (GCC) {
23174:
23175: final int yyChoice1 = yyStart;
23176:
23177: // Nested alternative 1.
23178:
23179: yyResult = pDebuggerC$ObsoleteArrayDesignation(yyChoice1);
23180: yyError = yyResult.select(yyError);
23181: if (yyResult.hasValue()) {
23182: yyValue = yyResult.semanticValue();
23183:
23184: return yyResult.createValue(yyValue, yyError);
23185: }
23186:
23187: // Nested alternative 2.
23188:
23189: yyResult = pDebuggerC$ObsoleteFieldDesignation(yyChoice1);
23190: yyError = yyResult.select(yyError);
23191: if (yyResult.hasValue()) {
23192: yyValue = yyResult.semanticValue();
23193:
23194: return yyResult.createValue(yyValue, yyError);
23195: }
23196: }
23197:
23198: // Done.
23199: yyError = yyError.select("designation expected", yyStart);
23200: return yyError;
23201: }
23202:
23203: // =========================================================================
23204:
23205: /**
23206: * Parse nonterminal xtc.lang.jeannie.DebuggerC.Designator.
23207: *
23208: * @param yyStart The index.
23209: * @return The result.
23210: * @throws IOException Signals an I/O error.
23211: */
23212: private Result pDebuggerC$Designator(final int yyStart)
23213: throws IOException {
23214: Result yyResult;
23215: int yyBase;
23216: Node yyValue;
23217: ParseError yyError = ParseError.DUMMY;
23218:
23219: // Alternative <Array>.
23220:
23221: yyResult = pSymbol(yyStart);
23222: yyError = yyResult.select(yyError);
23223: if (yyResult.hasValue("[")) {
23224: final String v$g$1 = "[";
23225:
23226: yyResult = pDebuggerC$ConditionalExpression(yyResult.index);
23227: yyError = yyResult.select(yyError);
23228: if (yyResult.hasValue()) {
23229: final Node v$g$2 = yyResult.semanticValue();
23230:
23231: yyBase = yyResult.index;
23232: yyResult = pSymbol(yyBase);
23233: yyError = yyResult.select(yyError);
23234: if (yyResult.hasValue("]")) {
23235:
23236: yyValue = GNode.create("Designator", v$g$1, v$g$2);
23237: yyValue.setLocation(location(yyStart));
23238:
23239: return yyResult.createValue(yyValue, yyError);
23240: } else {
23241: yyError = yyError.select("\"]\" expected", yyBase);
23242: }
23243: }
23244: }
23245:
23246: // Alternative <ArrayRange>.
23247:
23248: if (GCC) {
23249:
23250: yyResult = pSymbol(yyStart);
23251: yyError = yyResult.select(yyError);
23252: if (yyResult.hasValue("[")) {
23253: final String v$g$3 = "[";
23254:
23255: yyResult = pDebuggerC$ConditionalExpression(yyResult.index);
23256: yyError = yyResult.select(yyError);
23257: if (yyResult.hasValue()) {
23258: final Node v$g$4 = yyResult.semanticValue();
23259:
23260: yyBase = yyResult.index;
23261: yyResult = pSymbol(yyBase);
23262: yyError = yyResult.select(yyError);
23263: if (yyResult.hasValue("...")) {
23264:
23265: yyResult = pDebuggerC$ConditionalExpression(yyResult.index);
23266: yyError = yyResult.select(yyError);
23267: if (yyResult.hasValue()) {
23268: final Node v$g$5 = yyResult.semanticValue();
23269:
23270: yyBase = yyResult.index;
23271: yyResult = pSymbol(yyBase);
23272: yyError = yyResult.select(yyError);
23273: if (yyResult.hasValue("]")) {
23274:
23275: yyValue = GNode.create("Designator",
23276: v$g$3, v$g$4, v$g$5);
23277: yyValue.setLocation(location(yyStart));
23278:
23279: return yyResult.createValue(yyValue,
23280: yyError);
23281: } else {
23282: yyError = yyError.select(
23283: "\"]\" expected", yyBase);
23284: }
23285: }
23286: } else {
23287: yyError = yyError.select("\"...\" expected",
23288: yyBase);
23289: }
23290: }
23291: }
23292: }
23293:
23294: // Alternative <Structure>.
23295:
23296: yyResult = pSymbol(yyStart);
23297: yyError = yyResult.select(yyError);
23298: if (yyResult.hasValue(".")) {
23299: final String v$g$6 = ".";
23300:
23301: yyResult = pDebuggerC$PrimaryIdentifier(yyResult.index);
23302: yyError = yyResult.select(yyError);
23303: if (yyResult.hasValue()) {
23304: final Node v$g$7 = yyResult.semanticValue();
23305:
23306: yyValue = GNode.create("Designator", v$g$6, v$g$7);
23307: yyValue.setLocation(location(yyStart));
23308:
23309: return yyResult.createValue(yyValue, yyError);
23310: }
23311: }
23312:
23313: // Done.
23314: yyError = yyError.select("designator expected", yyStart);
23315: return yyError;
23316: }
23317:
23318: // =========================================================================
23319:
23320: /**
23321: * Parse nonterminal xtc.lang.jeannie.DebuggerC.ObsoleteArrayDesignation.
23322: *
23323: * @param yyStart The index.
23324: * @return The result.
23325: * @throws IOException Signals an I/O error.
23326: */
23327: private Result pDebuggerC$ObsoleteArrayDesignation(final int yyStart)
23328: throws IOException {
23329:
23330: Result yyResult;
23331: int yyBase;
23332: Node yyValue;
23333: ParseError yyError = ParseError.DUMMY;
23334:
23335: // Alternative 1.
23336:
23337: yyResult = pSymbol(yyStart);
23338: yyError = yyResult.select(yyError);
23339: if (yyResult.hasValue("[")) {
23340: final String v$g$1 = "[";
23341:
23342: yyResult = pDebuggerC$ConditionalExpression(yyResult.index);
23343: yyError = yyResult.select(yyError);
23344: if (yyResult.hasValue()) {
23345: final Node v$g$2 = yyResult.semanticValue();
23346:
23347: final int yyChoice1 = yyResult.index;
23348:
23349: // Nested alternative 1.
23350:
23351: yyBase = yyChoice1;
23352: yyResult = pSymbol(yyBase);
23353: yyError = yyResult.select(yyError);
23354: if (yyResult.hasValue("]")) {
23355:
23356: yyValue = GNode.create("ObsoleteArrayDesignation",
23357: v$g$1, v$g$2);
23358: yyValue.setLocation(location(yyStart));
23359:
23360: return yyResult.createValue(yyValue, yyError);
23361: } else {
23362: yyError = yyError.select("\"]\" expected", yyBase);
23363: }
23364:
23365: // Nested alternative 2.
23366:
23367: yyBase = yyChoice1;
23368: yyResult = pSymbol(yyBase);
23369: yyError = yyResult.select(yyError);
23370: if (yyResult.hasValue("...")) {
23371:
23372: yyResult = pDebuggerC$ConditionalExpression(yyResult.index);
23373: yyError = yyResult.select(yyError);
23374: if (yyResult.hasValue()) {
23375: final Node v$g$3 = yyResult.semanticValue();
23376:
23377: yyBase = yyResult.index;
23378: yyResult = pSymbol(yyBase);
23379: yyError = yyResult.select(yyError);
23380: if (yyResult.hasValue("]")) {
23381:
23382: yyValue = GNode.create(
23383: "ObsoleteArrayDesignation", v$g$1,
23384: v$g$2, v$g$3);
23385: yyValue.setLocation(location(yyStart));
23386:
23387: return yyResult.createValue(yyValue,
23388: yyError);
23389: } else {
23390: yyError = yyError.select("\"]\" expected",
23391: yyBase);
23392: }
23393: }
23394: } else {
23395: yyError = yyError
23396: .select("\"...\" expected", yyBase);
23397: }
23398: }
23399: }
23400:
23401: // Done.
23402: yyError = yyError.select("obsolete array designation expected",
23403: yyStart);
23404: return yyError;
23405: }
23406:
23407: // =========================================================================
23408:
23409: /**
23410: * Parse nonterminal xtc.lang.jeannie.DebuggerC.ObsoleteFieldDesignation.
23411: *
23412: * @param yyStart The index.
23413: * @return The result.
23414: * @throws IOException Signals an I/O error.
23415: */
23416: private Result pDebuggerC$ObsoleteFieldDesignation(final int yyStart)
23417: throws IOException {
23418:
23419: Result yyResult;
23420: int yyBase;
23421: Node yyValue;
23422: ParseError yyError = ParseError.DUMMY;
23423:
23424: // Alternative 1.
23425:
23426: yyResult = pCIdentifier$Identifier(yyStart);
23427: yyError = yyResult.select(yyError);
23428: if (yyResult.hasValue()) {
23429: final String v$g$1 = yyResult.semanticValue();
23430:
23431: yyBase = yyResult.index;
23432: yyResult = pSymbol(yyBase);
23433: yyError = yyResult.select(yyError);
23434: if (yyResult.hasValue(":")) {
23435:
23436: yyValue = GNode.create("ObsoleteFieldDesignation",
23437: v$g$1);
23438: yyValue.setLocation(location(yyStart));
23439:
23440: return yyResult.createValue(yyValue, yyError);
23441: } else {
23442: yyError = yyError.select("\":\" expected", yyBase);
23443: }
23444: }
23445:
23446: // Done.
23447: return yyError;
23448: }
23449:
23450: // =========================================================================
23451:
23452: /**
23453: * Parse nonterminal xtc.lang.jeannie.DebuggerC.TypeName.
23454: *
23455: * @param yyStart The index.
23456: * @return The result.
23457: * @throws IOException Signals an I/O error.
23458: */
23459: private Result pDebuggerC$TypeName(final int yyStart)
23460: throws IOException {
23461: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
23462: if (null == yyColumn.chunk8)
23463: yyColumn.chunk8 = new Chunk8();
23464: if (null == yyColumn.chunk8.fDebuggerC$TypeName)
23465: yyColumn.chunk8.fDebuggerC$TypeName = pDebuggerC$TypeName$1(yyStart);
23466: return yyColumn.chunk8.fDebuggerC$TypeName;
23467: }
23468:
23469: /** Actually parse xtc.lang.jeannie.DebuggerC.TypeName. */
23470: private Result pDebuggerC$TypeName$1(final int yyStart)
23471: throws IOException {
23472: Result yyResult;
23473: int yyOption1;
23474: Node yyOpValue1;
23475: Node yyValue;
23476: ParseError yyError = ParseError.DUMMY;
23477:
23478: // Start a state modification.
23479: yyState.start();
23480:
23481: // Alternative 1.
23482:
23483: yyResult = pDebuggerC$SpecifierQualifierList(yyStart);
23484: yyError = yyResult.select(yyError);
23485: if (yyResult.hasValue()) {
23486: final Node v$g$1 = yyResult.semanticValue();
23487:
23488: yyOption1 = yyResult.index;
23489: yyOpValue1 = null;
23490:
23491: yyResult = pDebuggerC$AbstractDeclarator(yyOption1);
23492: yyError = yyResult.select(yyError);
23493: if (yyResult.hasValue()) {
23494: final Node v$el$1 = yyResult.semanticValue();
23495:
23496: yyOption1 = yyResult.index;
23497: yyOpValue1 = v$el$1;
23498: }
23499: { // Start scope for v$g$2.
23500: final Node v$g$2 = yyOpValue1;
23501:
23502: yyValue = GNode.create("TypeName", v$g$1, v$g$2);
23503: yyValue.setLocation(location(yyStart));
23504:
23505: // Commit the state modification.
23506: yyState.commit();
23507:
23508: return new SemanticValue(yyValue, yyOption1, yyError);
23509: } // End scope for v$g$2.
23510: }
23511:
23512: // Abort the state modification.
23513: yyState.abort();
23514:
23515: // Done.
23516: return yyError;
23517: }
23518:
23519: // =========================================================================
23520:
23521: /**
23522: * Parse nonterminal xtc.lang.jeannie.DebuggerC.AttributeSpecifierList.
23523: *
23524: * @param yyStart The index.
23525: * @return The result.
23526: * @throws IOException Signals an I/O error.
23527: */
23528: private Result pDebuggerC$AttributeSpecifierList(final int yyStart)
23529: throws IOException {
23530:
23531: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
23532: if (null == yyColumn.chunk8)
23533: yyColumn.chunk8 = new Chunk8();
23534: if (null == yyColumn.chunk8.fDebuggerC$AttributeSpecifierList)
23535: yyColumn.chunk8.fDebuggerC$AttributeSpecifierList = pDebuggerC$AttributeSpecifierList$1(yyStart);
23536: return yyColumn.chunk8.fDebuggerC$AttributeSpecifierList;
23537: }
23538:
23539: /** Actually parse xtc.lang.jeannie.DebuggerC.AttributeSpecifierList. */
23540: private Result pDebuggerC$AttributeSpecifierList$1(final int yyStart)
23541: throws IOException {
23542:
23543: Result yyResult;
23544: Node yyValue;
23545: ParseError yyError = ParseError.DUMMY;
23546:
23547: // Alternative 1.
23548:
23549: yyResult = pDebuggerC$AttributeSpecifierPlus(yyStart);
23550: yyError = yyResult.select(yyError);
23551: if (yyResult.hasValue()) {
23552: final Pair<Node> v$g$1 = yyResult.semanticValue();
23553:
23554: yyValue = GNode.createFromPair("AttributeSpecifierList",
23555: v$g$1);
23556: yyValue.setLocation(location(yyStart));
23557:
23558: return yyResult.createValue(yyValue, yyError);
23559: }
23560:
23561: // Done.
23562: return yyError;
23563: }
23564:
23565: // =========================================================================
23566:
23567: /**
23568: * Parse nonterminal xtc.lang.jeannie.DebuggerC.AttributeSpecifierPlus.
23569: *
23570: * @param yyStart The index.
23571: * @return The result.
23572: * @throws IOException Signals an I/O error.
23573: */
23574: private Result pDebuggerC$AttributeSpecifierPlus(final int yyStart)
23575: throws IOException {
23576:
23577: Result yyResult;
23578: int yyRepetition1;
23579: boolean yyRepeated1;
23580: Pair<Node> yyRepValue1;
23581: Pair<Node> yyValue;
23582: ParseError yyError = ParseError.DUMMY;
23583:
23584: // Alternative 1.
23585:
23586: yyRepetition1 = yyStart;
23587: yyRepeated1 = false;
23588: yyRepValue1 = Pair.empty();
23589: while (true) {
23590:
23591: yyResult = pDebuggerC$AttributeSpecifier(yyRepetition1);
23592: yyError = yyResult.select(yyError);
23593: if (yyResult.hasValue()) {
23594: final Node v$el$1 = yyResult.semanticValue();
23595:
23596: yyRepetition1 = yyResult.index;
23597: yyRepeated1 = true;
23598: yyRepValue1 = new Pair<Node>(v$el$1, yyRepValue1);
23599: continue;
23600: }
23601: break;
23602: }
23603:
23604: if (yyRepeated1) {
23605: yyValue = yyRepValue1.reverse();
23606:
23607: return new SemanticValue(yyValue, yyRepetition1, yyError);
23608: }
23609:
23610: // Done.
23611: return yyError;
23612: }
23613:
23614: // =========================================================================
23615:
23616: /**
23617: * Parse nonterminal xtc.lang.jeannie.DebuggerC.AttributeSpecifier.
23618: *
23619: * @param yyStart The index.
23620: * @return The result.
23621: * @throws IOException Signals an I/O error.
23622: */
23623: private Result pDebuggerC$AttributeSpecifier(final int yyStart)
23624: throws IOException {
23625:
23626: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
23627: if (null == yyColumn.chunk9)
23628: yyColumn.chunk9 = new Chunk9();
23629: if (null == yyColumn.chunk9.fDebuggerC$AttributeSpecifier)
23630: yyColumn.chunk9.fDebuggerC$AttributeSpecifier = pDebuggerC$AttributeSpecifier$1(yyStart);
23631: return yyColumn.chunk9.fDebuggerC$AttributeSpecifier;
23632: }
23633:
23634: /** Actually parse xtc.lang.jeannie.DebuggerC.AttributeSpecifier. */
23635: private Result pDebuggerC$AttributeSpecifier$1(final int yyStart)
23636: throws IOException {
23637:
23638: Result yyResult;
23639: int yyBase;
23640: int yyOption1;
23641: Node yyOpValue1;
23642: Node yyValue;
23643: ParseError yyError = ParseError.DUMMY;
23644:
23645: // Alternative 1.
23646:
23647: yyResult = p$$Shared10(yyStart);
23648: yyError = yyResult.select(yyError);
23649: if (yyResult.hasValue()) {
23650:
23651: yyBase = yyResult.index;
23652: yyResult = pSymbol(yyBase);
23653: yyError = yyResult.select(yyError);
23654: if (yyResult.hasValue("(")) {
23655:
23656: yyBase = yyResult.index;
23657: yyResult = pSymbol(yyBase);
23658: yyError = yyResult.select(yyError);
23659: if (yyResult.hasValue("(")) {
23660:
23661: yyOption1 = yyResult.index;
23662: yyOpValue1 = null;
23663:
23664: yyResult = pDebuggerC$AttributeList(yyOption1);
23665: yyError = yyResult.select(yyError);
23666: if (yyResult.hasValue()) {
23667: final Node v$el$1 = yyResult.semanticValue();
23668:
23669: yyOption1 = yyResult.index;
23670: yyOpValue1 = v$el$1;
23671: }
23672: { // Start scope for v$g$1.
23673: final Node v$g$1 = yyOpValue1;
23674:
23675: yyBase = yyOption1;
23676: yyResult = pSymbol(yyBase);
23677: yyError = yyResult.select(yyError);
23678: if (yyResult.hasValue(")")) {
23679:
23680: yyBase = yyResult.index;
23681: yyResult = pSymbol(yyBase);
23682: yyError = yyResult.select(yyError);
23683: if (yyResult.hasValue(")")) {
23684:
23685: yyValue = GNode.create(
23686: "AttributeSpecifier", v$g$1);
23687: yyValue.setLocation(location(yyStart));
23688:
23689: return yyResult.createValue(yyValue,
23690: yyError);
23691: } else {
23692: yyError = yyError.select(
23693: "\")\" expected", yyBase);
23694: }
23695: } else {
23696: yyError = yyError.select("\")\" expected",
23697: yyBase);
23698: }
23699: } // End scope for v$g$1.
23700: } else {
23701: yyError = yyError.select("\"(\" expected", yyBase);
23702: }
23703: } else {
23704: yyError = yyError.select("\"(\" expected", yyBase);
23705: }
23706: }
23707:
23708: // Done.
23709: return yyError;
23710: }
23711:
23712: // =========================================================================
23713:
23714: /**
23715: * Parse nonterminal xtc.lang.jeannie.DebuggerC.AttributeList.
23716: *
23717: * @param yyStart The index.
23718: * @return The result.
23719: * @throws IOException Signals an I/O error.
23720: */
23721: private Result pDebuggerC$AttributeList(final int yyStart)
23722: throws IOException {
23723:
23724: Result yyResult;
23725: int yyBase;
23726: int yyRepetition1;
23727: Pair<Node> yyRepValue1;
23728: Node yyValue;
23729: ParseError yyError = ParseError.DUMMY;
23730:
23731: // Alternative 1.
23732:
23733: yyResult = pDebuggerC$AttributeListEntry(yyStart);
23734: yyError = yyResult.select(yyError);
23735: if (yyResult.hasValue()) {
23736: final Node v$g$1 = yyResult.semanticValue();
23737:
23738: yyRepetition1 = yyResult.index;
23739: yyRepValue1 = Pair.empty();
23740: while (true) {
23741:
23742: yyBase = yyRepetition1;
23743: yyResult = pSymbol(yyBase);
23744: yyError = yyResult.select(yyError);
23745: if (yyResult.hasValue(",")) {
23746:
23747: yyResult = pDebuggerC$AttributeListEntry(yyResult.index);
23748: yyError = yyResult.select(yyError);
23749: if (yyResult.hasValue()) {
23750: final Node v$el$1 = yyResult.semanticValue();
23751:
23752: yyRepetition1 = yyResult.index;
23753: yyRepValue1 = new Pair<Node>(v$el$1,
23754: yyRepValue1);
23755: continue;
23756: }
23757: } else {
23758: yyError = yyError.select("\",\" expected", yyBase);
23759: }
23760: break;
23761: }
23762: { // Start scope for v$g$2.
23763: final Pair<Node> v$g$2 = yyRepValue1.reverse();
23764:
23765: yyValue = GNode.createFromPair("AttributeList", v$g$1,
23766: v$g$2);
23767: yyValue.setLocation(location(yyStart));
23768:
23769: return new SemanticValue(yyValue, yyRepetition1,
23770: yyError);
23771: } // End scope for v$g$2.
23772: }
23773:
23774: // Done.
23775: return yyError;
23776: }
23777:
23778: // =========================================================================
23779:
23780: /**
23781: * Parse nonterminal xtc.lang.jeannie.DebuggerC.AttributeListEntry.
23782: *
23783: * @param yyStart The index.
23784: * @return The result.
23785: * @throws IOException Signals an I/O error.
23786: */
23787: private Result pDebuggerC$AttributeListEntry(final int yyStart)
23788: throws IOException {
23789:
23790: Result yyResult;
23791: int yyBase;
23792: int yyOption1;
23793: Node yyOpValue1;
23794: int yyOption2;
23795: Node yyOpValue2;
23796: Node yyValue;
23797: ParseError yyError = ParseError.DUMMY;
23798:
23799: // Alternative 1.
23800:
23801: yyResult = pCIdentifier$Word(yyStart);
23802: yyError = yyResult.select(yyError);
23803: if (yyResult.hasValue()) {
23804: final String v$g$1 = yyResult.semanticValue();
23805:
23806: yyOption1 = yyResult.index;
23807: yyOpValue1 = null;
23808:
23809: yyBase = yyOption1;
23810: yyResult = pSymbol(yyBase);
23811: yyError = yyResult.select(yyError);
23812: if (yyResult.hasValue("(")) {
23813:
23814: yyOption2 = yyResult.index;
23815: yyOpValue2 = null;
23816:
23817: yyResult = pDebuggerC$ExpressionList(yyOption2);
23818: yyError = yyResult.select(yyError);
23819: if (yyResult.hasValue()) {
23820: final Node v$el$2 = yyResult.semanticValue();
23821:
23822: yyOption2 = yyResult.index;
23823: yyOpValue2 = v$el$2;
23824: }
23825: { // Start scope for v$el$1.
23826: final Node v$el$1 = yyOpValue2;
23827:
23828: yyBase = yyOption2;
23829: yyResult = pSymbol(yyBase);
23830: yyError = yyResult.select(yyError);
23831: if (yyResult.hasValue(")")) {
23832:
23833: yyOption1 = yyResult.index;
23834: yyOpValue1 = v$el$1;
23835: } else {
23836: yyError = yyError.select("\")\" expected",
23837: yyBase);
23838: }
23839: } // End scope for v$el$1.
23840: } else {
23841: yyError = yyError.select("\"(\" expected", yyBase);
23842: }
23843: { // Start scope for v$g$2.
23844: final Node v$g$2 = yyOpValue1;
23845:
23846: yyValue = GNode.create("AttributeListEntry", v$g$1,
23847: v$g$2);
23848: yyValue.setLocation(location(yyStart));
23849:
23850: return new SemanticValue(yyValue, yyOption1, yyError);
23851: } // End scope for v$g$2.
23852: }
23853:
23854: // Done.
23855: return yyError;
23856: }
23857:
23858: // =========================================================================
23859:
23860: /**
23861: * Parse nonterminal xtc.lang.jeannie.DebuggerC.Statement.
23862: *
23863: * @param yyStart The index.
23864: * @return The result.
23865: * @throws IOException Signals an I/O error.
23866: */
23867: private Result pDebuggerC$Statement(final int yyStart)
23868: throws IOException {
23869: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
23870: if (null == yyColumn.chunk9)
23871: yyColumn.chunk9 = new Chunk9();
23872: if (null == yyColumn.chunk9.fDebuggerC$Statement)
23873: yyColumn.chunk9.fDebuggerC$Statement = pDebuggerC$Statement$1(yyStart);
23874: return yyColumn.chunk9.fDebuggerC$Statement;
23875: }
23876:
23877: /** Actually parse xtc.lang.jeannie.DebuggerC.Statement. */
23878: private Result pDebuggerC$Statement$1(final int yyStart)
23879: throws IOException {
23880:
23881: Result yyResult;
23882: int yyBase;
23883: int yyOption1;
23884: Node yyOpValue1;
23885: Node yyValue;
23886: ParseError yyError = ParseError.DUMMY;
23887:
23888: // Alternative 1.
23889:
23890: yyResult = pDebuggerC$CommaExpression(yyStart);
23891: yyError = yyResult.select(yyError);
23892: if (yyResult.hasValue()) {
23893: final Node v$g$1 = yyResult.semanticValue();
23894:
23895: yyBase = yyResult.index;
23896: yyResult = pSymbol(yyBase);
23897: yyError = yyResult.select(yyError);
23898: if (yyResult.hasValue(";")) {
23899:
23900: yyValue = GNode.create("ExpressionStatement", v$g$1);
23901: yyValue.setLocation(location(yyStart));
23902:
23903: return yyResult.createValue(yyValue, yyError);
23904: } else {
23905: yyError = yyError.select("\";\" expected", yyBase);
23906: }
23907: }
23908:
23909: // Alternative <JavaInCStatement>.
23910:
23911: yyResult = pDebuggerC$JavaInCStatement(yyStart);
23912: yyError = yyResult.select(yyError);
23913: if (yyResult.hasValue()) {
23914: yyValue = yyResult.semanticValue();
23915:
23916: return yyResult.createValue(yyValue, yyError);
23917: }
23918:
23919: // Alternative <Cancel>.
23920:
23921: yyResult = pDebuggerC$CancelStatement(yyStart);
23922: yyError = yyResult.select(yyError);
23923: if (yyResult.hasValue()) {
23924: yyValue = yyResult.semanticValue();
23925:
23926: return yyResult.createValue(yyValue, yyError);
23927: }
23928:
23929: // Alternative <Commit>.
23930:
23931: yyResult = pDebuggerC$CommitStatement(yyStart);
23932: yyError = yyResult.select(yyError);
23933: if (yyResult.hasValue()) {
23934: yyValue = yyResult.semanticValue();
23935:
23936: return yyResult.createValue(yyValue, yyError);
23937: }
23938:
23939: // Alternative <With>.
23940:
23941: yyResult = pDebuggerC$WithStatement(yyStart);
23942: yyError = yyResult.select(yyError);
23943: if (yyResult.hasValue()) {
23944: yyValue = yyResult.semanticValue();
23945:
23946: return yyResult.createValue(yyValue, yyError);
23947: }
23948:
23949: // Alternative <Compound>.
23950:
23951: yyResult = pDebuggerC$CompoundStatement(yyStart);
23952: yyError = yyResult.select(yyError);
23953: if (yyResult.hasValue()) {
23954: yyValue = yyResult.semanticValue();
23955:
23956: return yyResult.createValue(yyValue, yyError);
23957: }
23958:
23959: // Alternative 7.
23960:
23961: yyResult = pKeyword(yyStart);
23962: yyError = yyResult.select(yyError);
23963: if (yyResult.hasValue("if")) {
23964:
23965: yyBase = yyResult.index;
23966: yyResult = pSymbol(yyBase);
23967: yyError = yyResult.select(yyError);
23968: if (yyResult.hasValue("(")) {
23969:
23970: yyResult = pDebuggerC$CommaExpression(yyResult.index);
23971: yyError = yyResult.select(yyError);
23972: if (yyResult.hasValue()) {
23973: final Node v$g$1 = yyResult.semanticValue();
23974:
23975: yyBase = yyResult.index;
23976: yyResult = pSymbol(yyBase);
23977: yyError = yyResult.select(yyError);
23978: if (yyResult.hasValue(")")) {
23979:
23980: yyResult = pDebuggerC$Statement(yyResult.index);
23981: yyError = yyResult.select(yyError);
23982: if (yyResult.hasValue()) {
23983: final Node v$g$2 = yyResult.semanticValue();
23984:
23985: final int yyChoice1 = yyResult.index;
23986:
23987: // Nested alternative 1.
23988:
23989: yyBase = yyChoice1;
23990: yyResult = pKeyword(yyBase);
23991: yyError = yyResult.select(yyError);
23992: if (yyResult.hasValue("else")) {
23993:
23994: yyResult = pDebuggerC$Statement(yyResult.index);
23995: yyError = yyResult.select(yyError);
23996: if (yyResult.hasValue()) {
23997: final Node v$g$3 = yyResult
23998: .semanticValue();
23999:
24000: yyValue = GNode.create(
24001: "IfElseStatement", v$g$1,
24002: v$g$2, v$g$3);
24003: yyValue
24004: .setLocation(location(yyStart));
24005:
24006: return yyResult.createValue(
24007: yyValue, yyError);
24008: }
24009: } else {
24010: yyError = yyError.select(
24011: "\"else\" expected", yyBase);
24012: }
24013:
24014: // Nested alternative 2.
24015:
24016: yyValue = GNode.create("IfStatement",
24017: v$g$1, v$g$2);
24018: yyValue.setLocation(location(yyStart));
24019:
24020: return new SemanticValue(yyValue,
24021: yyChoice1, yyError);
24022: }
24023: } else {
24024: yyError = yyError.select("\")\" expected",
24025: yyBase);
24026: }
24027: }
24028: } else {
24029: yyError = yyError.select("\"(\" expected", yyBase);
24030: }
24031: }
24032:
24033: // Alternative 8.
24034:
24035: yyResult = pKeyword(yyStart);
24036: yyError = yyResult.select(yyError);
24037: if (yyResult.hasValue("while")) {
24038:
24039: yyBase = yyResult.index;
24040: yyResult = pSymbol(yyBase);
24041: yyError = yyResult.select(yyError);
24042: if (yyResult.hasValue("(")) {
24043:
24044: yyResult = pDebuggerC$CommaExpression(yyResult.index);
24045: yyError = yyResult.select(yyError);
24046: if (yyResult.hasValue()) {
24047: final Node v$g$1 = yyResult.semanticValue();
24048:
24049: yyBase = yyResult.index;
24050: yyResult = pSymbol(yyBase);
24051: yyError = yyResult.select(yyError);
24052: if (yyResult.hasValue(")")) {
24053:
24054: yyResult = pDebuggerC$Statement(yyResult.index);
24055: yyError = yyResult.select(yyError);
24056: if (yyResult.hasValue()) {
24057: final Node v$g$2 = yyResult.semanticValue();
24058:
24059: yyValue = GNode.create("WhileStatement",
24060: v$g$1, v$g$2);
24061: yyValue.setLocation(location(yyStart));
24062:
24063: return yyResult.createValue(yyValue,
24064: yyError);
24065: }
24066: } else {
24067: yyError = yyError.select("\")\" expected",
24068: yyBase);
24069: }
24070: }
24071: } else {
24072: yyError = yyError.select("\"(\" expected", yyBase);
24073: }
24074: }
24075:
24076: // Alternative 9.
24077:
24078: yyResult = pKeyword(yyStart);
24079: yyError = yyResult.select(yyError);
24080: if (yyResult.hasValue("do")) {
24081:
24082: yyResult = pDebuggerC$Statement(yyResult.index);
24083: yyError = yyResult.select(yyError);
24084: if (yyResult.hasValue()) {
24085: final Node v$g$1 = yyResult.semanticValue();
24086:
24087: yyBase = yyResult.index;
24088: yyResult = pKeyword(yyBase);
24089: yyError = yyResult.select(yyError);
24090: if (yyResult.hasValue("while")) {
24091:
24092: yyBase = yyResult.index;
24093: yyResult = pSymbol(yyBase);
24094: yyError = yyResult.select(yyError);
24095: if (yyResult.hasValue("(")) {
24096:
24097: yyResult = pDebuggerC$CommaExpression(yyResult.index);
24098: yyError = yyResult.select(yyError);
24099: if (yyResult.hasValue()) {
24100: final Node v$g$2 = yyResult.semanticValue();
24101:
24102: yyBase = yyResult.index;
24103: yyResult = pSymbol(yyBase);
24104: yyError = yyResult.select(yyError);
24105: if (yyResult.hasValue(")")) {
24106:
24107: yyBase = yyResult.index;
24108: yyResult = pSymbol(yyBase);
24109: yyError = yyResult.select(yyError);
24110: if (yyResult.hasValue(";")) {
24111:
24112: yyValue = GNode
24113: .create("DoStatement",
24114: v$g$1, v$g$2);
24115: yyValue
24116: .setLocation(location(yyStart));
24117:
24118: return yyResult.createValue(
24119: yyValue, yyError);
24120: } else {
24121: yyError = yyError.select(
24122: "\";\" expected", yyBase);
24123: }
24124: } else {
24125: yyError = yyError.select(
24126: "\")\" expected", yyBase);
24127: }
24128: }
24129: } else {
24130: yyError = yyError.select("\"(\" expected",
24131: yyBase);
24132: }
24133: } else {
24134: yyError = yyError.select("\"while\" expected",
24135: yyBase);
24136: }
24137: }
24138: }
24139:
24140: // Alternative 10.
24141:
24142: yyResult = pKeyword(yyStart);
24143: yyError = yyResult.select(yyError);
24144: if (yyResult.hasValue("for")) {
24145:
24146: yyResult = pPushScope(yyResult.index);
24147: yyError = yyResult.select(yyError);
24148: if (yyResult.hasValue()) {
24149:
24150: yyBase = yyResult.index;
24151: yyResult = pSymbol(yyBase);
24152: yyError = yyResult.select(yyError);
24153: if (yyResult.hasValue("(")) {
24154:
24155: yyResult = pDebuggerC$InitialClause(yyResult.index);
24156: yyError = yyResult.select(yyError);
24157: if (yyResult.hasValue()) {
24158: final Node v$g$1 = yyResult.semanticValue();
24159:
24160: yyOption1 = yyResult.index;
24161: yyOpValue1 = null;
24162:
24163: yyResult = pDebuggerC$CommaExpression(yyOption1);
24164: yyError = yyResult.select(yyError);
24165: if (yyResult.hasValue()) {
24166: final Node v$el$1 = yyResult
24167: .semanticValue();
24168:
24169: yyOption1 = yyResult.index;
24170: yyOpValue1 = v$el$1;
24171: }
24172: { // Start scope for v$g$2.
24173: final Node v$g$2 = yyOpValue1;
24174:
24175: yyBase = yyOption1;
24176: yyResult = pSymbol(yyBase);
24177: yyError = yyResult.select(yyError);
24178: if (yyResult.hasValue(";")) {
24179:
24180: yyOption1 = yyResult.index;
24181: yyOpValue1 = null;
24182:
24183: yyResult = pDebuggerC$CommaExpression(yyOption1);
24184: yyError = yyResult.select(yyError);
24185: if (yyResult.hasValue()) {
24186: final Node v$el$2 = yyResult
24187: .semanticValue();
24188:
24189: yyOption1 = yyResult.index;
24190: yyOpValue1 = v$el$2;
24191: }
24192: { // Start scope for v$g$3.
24193: final Node v$g$3 = yyOpValue1;
24194:
24195: yyBase = yyOption1;
24196: yyResult = pSymbol(yyBase);
24197: yyError = yyResult.select(yyError);
24198: if (yyResult.hasValue(")")) {
24199:
24200: yyResult = pDebuggerC$Statement(yyResult.index);
24201: yyError = yyResult
24202: .select(yyError);
24203: if (yyResult.hasValue()) {
24204: final Node v$g$4 = yyResult
24205: .semanticValue();
24206:
24207: yyResult = pPopScope(yyResult.index);
24208: yyError = yyResult
24209: .select(yyError);
24210: if (yyResult.hasValue()) {
24211:
24212: yyValue = GNode.create(
24213: "ForStatement",
24214: v$g$1, v$g$2,
24215: v$g$3, v$g$4);
24216: yyValue
24217: .setLocation(location(yyStart));
24218:
24219: return yyResult
24220: .createValue(
24221: yyValue,
24222: yyError);
24223: }
24224: }
24225: } else {
24226: yyError = yyError.select(
24227: "\")\" expected",
24228: yyBase);
24229: }
24230: } // End scope for v$g$3.
24231: } else {
24232: yyError = yyError.select(
24233: "\";\" expected", yyBase);
24234: }
24235: } // End scope for v$g$2.
24236: }
24237: } else {
24238: yyError = yyError.select("\"(\" expected", yyBase);
24239: }
24240: }
24241: }
24242:
24243: // Alternative 11.
24244:
24245: yyResult = pKeyword(yyStart);
24246: yyError = yyResult.select(yyError);
24247: if (yyResult.hasValue("switch")) {
24248:
24249: yyBase = yyResult.index;
24250: yyResult = pSymbol(yyBase);
24251: yyError = yyResult.select(yyError);
24252: if (yyResult.hasValue("(")) {
24253:
24254: yyResult = pDebuggerC$CommaExpression(yyResult.index);
24255: yyError = yyResult.select(yyError);
24256: if (yyResult.hasValue()) {
24257: final Node v$g$1 = yyResult.semanticValue();
24258:
24259: yyBase = yyResult.index;
24260: yyResult = pSymbol(yyBase);
24261: yyError = yyResult.select(yyError);
24262: if (yyResult.hasValue(")")) {
24263:
24264: yyResult = pDebuggerC$Statement(yyResult.index);
24265: yyError = yyResult.select(yyError);
24266: if (yyResult.hasValue()) {
24267: final Node v$g$2 = yyResult.semanticValue();
24268:
24269: yyValue = GNode.create("SwitchStatement",
24270: v$g$1, v$g$2);
24271: yyValue.setLocation(location(yyStart));
24272:
24273: return yyResult.createValue(yyValue,
24274: yyError);
24275: }
24276: } else {
24277: yyError = yyError.select("\")\" expected",
24278: yyBase);
24279: }
24280: }
24281: } else {
24282: yyError = yyError.select("\"(\" expected", yyBase);
24283: }
24284: }
24285:
24286: // Alternative <Complete>.
24287:
24288: yyResult = pDebuggerC$Label(yyStart);
24289: yyError = yyResult.select(yyError);
24290: if (yyResult.hasValue()) {
24291: final Node v$g$1 = yyResult.semanticValue();
24292:
24293: yyResult = pDebuggerC$Statement(yyResult.index);
24294: yyError = yyResult.select(yyError);
24295: if (yyResult.hasValue()) {
24296: final Node v$g$2 = yyResult.semanticValue();
24297:
24298: yyValue = GNode
24299: .create("LabeledStatement", v$g$1, v$g$2);
24300: yyValue.setLocation(location(yyStart));
24301:
24302: return yyResult.createValue(yyValue, yyError);
24303: }
24304: }
24305:
24306: // Alternative <Incomplete>.
24307:
24308: if (GCC) {
24309:
24310: yyResult = pDebuggerC$Label(yyStart);
24311: yyError = yyResult.select(yyError);
24312: if (yyResult.hasValue()) {
24313: final Node v$g$3 = yyResult.semanticValue();
24314:
24315: yyValue = GNode.create("LabeledStatement", v$g$3, null);
24316: yyValue.setLocation(location(yyStart));
24317:
24318: return yyResult.createValue(yyValue, yyError);
24319: }
24320: }
24321:
24322: // Alternative 14.
24323:
24324: yyResult = pKeyword(yyStart);
24325: yyError = yyResult.select(yyError);
24326: if (yyResult.hasValue("break")) {
24327:
24328: yyBase = yyResult.index;
24329: yyResult = pSymbol(yyBase);
24330: yyError = yyResult.select(yyError);
24331: if (yyResult.hasValue(";")) {
24332:
24333: yyValue = GNode.create("BreakStatement", false);
24334: yyValue.setLocation(location(yyStart));
24335:
24336: return yyResult.createValue(yyValue, yyError);
24337: } else {
24338: yyError = yyError.select("\";\" expected", yyBase);
24339: }
24340: }
24341:
24342: // Alternative 15.
24343:
24344: yyResult = pKeyword(yyStart);
24345: yyError = yyResult.select(yyError);
24346: if (yyResult.hasValue("continue")) {
24347:
24348: yyBase = yyResult.index;
24349: yyResult = pSymbol(yyBase);
24350: yyError = yyResult.select(yyError);
24351: if (yyResult.hasValue(";")) {
24352:
24353: yyValue = GNode.create("ContinueStatement", false);
24354: yyValue.setLocation(location(yyStart));
24355:
24356: return yyResult.createValue(yyValue, yyError);
24357: } else {
24358: yyError = yyError.select("\";\" expected", yyBase);
24359: }
24360: }
24361:
24362: // Alternative 16.
24363:
24364: yyResult = pKeyword(yyStart);
24365: yyError = yyResult.select(yyError);
24366: if (yyResult.hasValue("return")) {
24367:
24368: yyOption1 = yyResult.index;
24369: yyOpValue1 = null;
24370:
24371: yyResult = pDebuggerC$CommaExpression(yyOption1);
24372: yyError = yyResult.select(yyError);
24373: if (yyResult.hasValue()) {
24374: final Node v$el$1 = yyResult.semanticValue();
24375:
24376: yyOption1 = yyResult.index;
24377: yyOpValue1 = v$el$1;
24378: }
24379: { // Start scope for v$g$1.
24380: final Node v$g$1 = yyOpValue1;
24381:
24382: yyBase = yyOption1;
24383: yyResult = pSymbol(yyBase);
24384: yyError = yyResult.select(yyError);
24385: if (yyResult.hasValue(";")) {
24386:
24387: yyValue = GNode.create("ReturnStatement", v$g$1);
24388: yyValue.setLocation(location(yyStart));
24389:
24390: return yyResult.createValue(yyValue, yyError);
24391: } else {
24392: yyError = yyError.select("\";\" expected", yyBase);
24393: }
24394: } // End scope for v$g$1.
24395: }
24396:
24397: // Alternative <Direct>.
24398:
24399: yyResult = pKeyword(yyStart);
24400: yyError = yyResult.select(yyError);
24401: if (yyResult.hasValue("goto")) {
24402:
24403: yyResult = pDebuggerC$PrimaryIdentifier(yyResult.index);
24404: yyError = yyResult.select(yyError);
24405: if (yyResult.hasValue()) {
24406: final Node v$g$2 = yyResult.semanticValue();
24407:
24408: yyBase = yyResult.index;
24409: yyResult = pSymbol(yyBase);
24410: yyError = yyResult.select(yyError);
24411: if (yyResult.hasValue(";")) {
24412:
24413: yyValue = GNode
24414: .create("GotoStatement", null, v$g$2);
24415: yyValue.setLocation(location(yyStart));
24416:
24417: return yyResult.createValue(yyValue, yyError);
24418: } else {
24419: yyError = yyError.select("\";\" expected", yyBase);
24420: }
24421: }
24422: }
24423:
24424: // Alternative <Computed>.
24425:
24426: if (GCC) {
24427:
24428: yyResult = pKeyword(yyStart);
24429: yyError = yyResult.select(yyError);
24430: if (yyResult.hasValue("goto")) {
24431:
24432: yyBase = yyResult.index;
24433: yyResult = pSymbol(yyBase);
24434: yyError = yyResult.select(yyError);
24435: if (yyResult.hasValue("*")) {
24436: final String v$g$3 = "*";
24437:
24438: yyResult = pDebuggerC$CommaExpression(yyResult.index);
24439: yyError = yyResult.select(yyError);
24440: if (yyResult.hasValue()) {
24441: final Node v$g$4 = yyResult.semanticValue();
24442:
24443: yyBase = yyResult.index;
24444: yyResult = pSymbol(yyBase);
24445: yyError = yyResult.select(yyError);
24446: if (yyResult.hasValue(";")) {
24447:
24448: yyValue = GNode.create("GotoStatement",
24449: v$g$3, v$g$4);
24450: yyValue.setLocation(location(yyStart));
24451:
24452: return yyResult.createValue(yyValue,
24453: yyError);
24454: } else {
24455: yyError = yyError.select("\";\" expected",
24456: yyBase);
24457: }
24458: }
24459: } else {
24460: yyError = yyError.select("\"*\" expected", yyBase);
24461: }
24462: }
24463: }
24464:
24465: // Alternative 19.
24466:
24467: yyResult = p$$Shared18(yyStart);
24468: yyError = yyResult.select(yyError);
24469: if (yyResult.hasValue()) {
24470:
24471: yyOption1 = yyResult.index;
24472: yyOpValue1 = null;
24473:
24474: yyResult = p$$Shared29(yyOption1);
24475: yyError = yyResult.select(yyError);
24476: if (yyResult.hasValue()) {
24477: final Node v$el$1 = yyResult.semanticValue();
24478:
24479: yyOption1 = yyResult.index;
24480: yyOpValue1 = v$el$1;
24481: }
24482: { // Start scope for v$g$1.
24483: final Node v$g$1 = yyOpValue1;
24484:
24485: yyBase = yyOption1;
24486: yyResult = pSymbol(yyBase);
24487: yyError = yyResult.select(yyError);
24488: if (yyResult.hasValue("(")) {
24489:
24490: yyResult = pDebuggerC$AssemblyArgument(yyResult.index);
24491: yyError = yyResult.select(yyError);
24492: if (yyResult.hasValue()) {
24493: final Node v$g$2 = yyResult.semanticValue();
24494:
24495: yyBase = yyResult.index;
24496: yyResult = pSymbol(yyBase);
24497: yyError = yyResult.select(yyError);
24498: if (yyResult.hasValue(")")) {
24499:
24500: yyBase = yyResult.index;
24501: yyResult = pSymbol(yyBase);
24502: yyError = yyResult.select(yyError);
24503: if (yyResult.hasValue(";")) {
24504: final String v$g$3 = ";";
24505:
24506: yyValue = GNode.create(
24507: "AssemblyStatement", v$g$1,
24508: v$g$2, v$g$3);
24509: yyValue.setLocation(location(yyStart));
24510:
24511: return yyResult.createValue(yyValue,
24512: yyError);
24513: } else {
24514: yyError = yyError.select(
24515: "\";\" expected", yyBase);
24516: }
24517: } else {
24518: yyError = yyError.select("\")\" expected",
24519: yyBase);
24520: }
24521: }
24522: } else {
24523: yyError = yyError.select("\"(\" expected", yyBase);
24524: }
24525: } // End scope for v$g$1.
24526: }
24527:
24528: // Alternative 20.
24529:
24530: yyResult = pSymbol(yyStart);
24531: yyError = yyResult.select(yyError);
24532: if (yyResult.hasValue(";")) {
24533:
24534: yyValue = GNode.create("EmptyStatement", false);
24535: yyValue.setLocation(location(yyStart));
24536:
24537: return yyResult.createValue(yyValue, yyError);
24538: }
24539:
24540: // Done.
24541: yyError = yyError.select("statement expected", yyStart);
24542: return yyError;
24543: }
24544:
24545: // =========================================================================
24546:
24547: /**
24548: * Parse nonterminal xtc.lang.jeannie.DebuggerC.Label.
24549: *
24550: * @param yyStart The index.
24551: * @return The result.
24552: * @throws IOException Signals an I/O error.
24553: */
24554: private Result pDebuggerC$Label(final int yyStart)
24555: throws IOException {
24556: Result yyResult;
24557: int yyBase;
24558: int yyOption1;
24559: Node yyOpValue1;
24560: Node yyValue;
24561: ParseError yyError = ParseError.DUMMY;
24562:
24563: // Alternative <Label>.
24564:
24565: yyResult = pCIdentifier$Identifier(yyStart);
24566: yyError = yyResult.select(yyError);
24567: if (yyResult.hasValue()) {
24568: final String v$g$1 = yyResult.semanticValue();
24569:
24570: yyBase = yyResult.index;
24571: yyResult = pSymbol(yyBase);
24572: yyError = yyResult.select(yyError);
24573: if (yyResult.hasValue(":")) {
24574:
24575: yyOption1 = yyResult.index;
24576: yyOpValue1 = null;
24577:
24578: yyResult = pDebuggerC$AttributeSpecifierList(yyOption1);
24579: yyError = yyResult.select(yyError);
24580: if (yyResult.hasValue()) {
24581: final Node v$el$1 = yyResult.semanticValue();
24582:
24583: yyOption1 = yyResult.index;
24584: yyOpValue1 = v$el$1;
24585: }
24586: { // Start scope for v$g$2.
24587: final Node v$g$2 = yyOpValue1;
24588:
24589: yyValue = GNode.create("NamedLabel", v$g$1, v$g$2);
24590: yyValue.setLocation(location(yyStart));
24591:
24592: return new SemanticValue(yyValue, yyOption1,
24593: yyError);
24594: } // End scope for v$g$2.
24595: } else {
24596: yyError = yyError.select("\":\" expected", yyBase);
24597: }
24598: }
24599:
24600: // Alternative <Range>.
24601:
24602: if (GCC) {
24603:
24604: yyResult = pKeyword(yyStart);
24605: yyError = yyResult.select(yyError);
24606: if (yyResult.hasValue("case")) {
24607:
24608: yyResult = pDebuggerC$ConditionalExpression(yyResult.index);
24609: yyError = yyResult.select(yyError);
24610: if (yyResult.hasValue()) {
24611: final Node v$g$1 = yyResult.semanticValue();
24612:
24613: yyBase = yyResult.index;
24614: yyResult = pSymbol(yyBase);
24615: yyError = yyResult.select(yyError);
24616: if (yyResult.hasValue("...")) {
24617:
24618: yyResult = pDebuggerC$ConditionalExpression(yyResult.index);
24619: yyError = yyResult.select(yyError);
24620: if (yyResult.hasValue()) {
24621: final Node v$g$2 = yyResult.semanticValue();
24622:
24623: yyBase = yyResult.index;
24624: yyResult = pSymbol(yyBase);
24625: yyError = yyResult.select(yyError);
24626: if (yyResult.hasValue(":")) {
24627:
24628: yyValue = GNode.create("CaseLabel",
24629: v$g$1, v$g$2);
24630: yyValue.setLocation(location(yyStart));
24631:
24632: return yyResult.createValue(yyValue,
24633: yyError);
24634: } else {
24635: yyError = yyError.select(
24636: "\":\" expected", yyBase);
24637: }
24638: }
24639: } else {
24640: yyError = yyError.select("\"...\" expected",
24641: yyBase);
24642: }
24643: }
24644: }
24645: }
24646:
24647: // Alternative <Simple>.
24648:
24649: yyResult = pKeyword(yyStart);
24650: yyError = yyResult.select(yyError);
24651: if (yyResult.hasValue("case")) {
24652:
24653: yyResult = pDebuggerC$ConditionalExpression(yyResult.index);
24654: yyError = yyResult.select(yyError);
24655: if (yyResult.hasValue()) {
24656: final Node v$g$3 = yyResult.semanticValue();
24657:
24658: yyBase = yyResult.index;
24659: yyResult = pSymbol(yyBase);
24660: yyError = yyResult.select(yyError);
24661: if (yyResult.hasValue(":")) {
24662:
24663: yyValue = GNode.create("CaseLabel", v$g$3);
24664: yyValue.setLocation(location(yyStart));
24665:
24666: return yyResult.createValue(yyValue, yyError);
24667: } else {
24668: yyError = yyError.select("\":\" expected", yyBase);
24669: }
24670: }
24671: }
24672:
24673: // Alternative 4.
24674:
24675: yyResult = pKeyword(yyStart);
24676: yyError = yyResult.select(yyError);
24677: if (yyResult.hasValue("default")) {
24678:
24679: yyBase = yyResult.index;
24680: yyResult = pSymbol(yyBase);
24681: yyError = yyResult.select(yyError);
24682: if (yyResult.hasValue(":")) {
24683:
24684: yyValue = GNode.create("DefaultLabel", false);
24685: yyValue.setLocation(location(yyStart));
24686:
24687: return yyResult.createValue(yyValue, yyError);
24688: } else {
24689: yyError = yyError.select("\":\" expected", yyBase);
24690: }
24691: }
24692:
24693: // Done.
24694: yyError = yyError.select("label expected", yyStart);
24695: return yyError;
24696: }
24697:
24698: // =========================================================================
24699:
24700: /**
24701: * Parse nonterminal xtc.lang.jeannie.DebuggerC.CompoundStatement.
24702: *
24703: * @param yyStart The index.
24704: * @return The result.
24705: * @throws IOException Signals an I/O error.
24706: */
24707: private Result pDebuggerC$CompoundStatement(final int yyStart)
24708: throws IOException {
24709:
24710: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
24711: if (null == yyColumn.chunk9)
24712: yyColumn.chunk9 = new Chunk9();
24713: if (null == yyColumn.chunk9.fDebuggerC$CompoundStatement)
24714: yyColumn.chunk9.fDebuggerC$CompoundStatement = pDebuggerC$CompoundStatement$1(yyStart);
24715: return yyColumn.chunk9.fDebuggerC$CompoundStatement;
24716: }
24717:
24718: /** Actually parse xtc.lang.jeannie.DebuggerC.CompoundStatement. */
24719: private Result pDebuggerC$CompoundStatement$1(final int yyStart)
24720: throws IOException {
24721:
24722: Result yyResult;
24723: Node yyValue;
24724: ParseError yyError = ParseError.DUMMY;
24725:
24726: // Alternative <CBlock>.
24727:
24728: yyResult = pDebuggerC$CInCBlock(yyStart);
24729: yyError = yyResult.select(yyError);
24730: if (yyResult.hasValue()) {
24731: yyValue = yyResult.semanticValue();
24732:
24733: return yyResult.createValue(yyValue, yyError);
24734: }
24735:
24736: // Alternative <JavaBlock>.
24737:
24738: yyResult = pDebuggerC$JavaInCBlock(yyStart);
24739: yyError = yyResult.select(yyError);
24740: if (yyResult.hasValue()) {
24741: yyValue = yyResult.semanticValue();
24742:
24743: return yyResult.createValue(yyValue, yyError);
24744: }
24745:
24746: // Done.
24747: return yyError;
24748: }
24749:
24750: // =========================================================================
24751:
24752: /**
24753: * Parse nonterminal xtc.lang.jeannie.DebuggerC.LocalLabelDeclaration.
24754: *
24755: * @param yyStart The index.
24756: * @return The result.
24757: * @throws IOException Signals an I/O error.
24758: */
24759: private Result pDebuggerC$LocalLabelDeclaration(final int yyStart)
24760: throws IOException {
24761:
24762: Result yyResult;
24763: int yyBase;
24764: int yyRepetition1;
24765: Pair<String> yyRepValue1;
24766: Node yyValue;
24767: ParseError yyError = ParseError.DUMMY;
24768:
24769: // Alternative 1.
24770:
24771: yyResult = pKeyword(yyStart);
24772: yyError = yyResult.select(yyError);
24773: if (yyResult.hasValue("__label__")) {
24774:
24775: yyResult = pCIdentifier$Identifier(yyResult.index);
24776: yyError = yyResult.select(yyError);
24777: if (yyResult.hasValue()) {
24778: final String v$g$1 = yyResult.semanticValue();
24779:
24780: yyRepetition1 = yyResult.index;
24781: yyRepValue1 = Pair.empty();
24782: while (true) {
24783:
24784: yyBase = yyRepetition1;
24785: yyResult = pSymbol(yyBase);
24786: yyError = yyResult.select(yyError);
24787: if (yyResult.hasValue(",")) {
24788:
24789: yyResult = pCIdentifier$Identifier(yyResult.index);
24790: yyError = yyResult.select(yyError);
24791: if (yyResult.hasValue()) {
24792: final String v$el$1 = yyResult
24793: .semanticValue();
24794:
24795: yyRepetition1 = yyResult.index;
24796: yyRepValue1 = new Pair<String>(v$el$1,
24797: yyRepValue1);
24798: continue;
24799: }
24800: } else {
24801: yyError = yyError.select("\",\" expected",
24802: yyBase);
24803: }
24804: break;
24805: }
24806: { // Start scope for v$g$2.
24807: final Pair<String> v$g$2 = yyRepValue1.reverse();
24808:
24809: yyBase = yyRepetition1;
24810: yyResult = pSymbol(yyBase);
24811: yyError = yyResult.select(yyError);
24812: if (yyResult.hasValue(";")) {
24813:
24814: yyValue = GNode.createFromPair(
24815: "LocalLabelDeclaration", v$g$1, v$g$2);
24816: yyValue.setLocation(location(yyStart));
24817:
24818: return yyResult.createValue(yyValue, yyError);
24819: } else {
24820: yyError = yyError.select("\";\" expected",
24821: yyBase);
24822: }
24823: } // End scope for v$g$2.
24824: }
24825: }
24826:
24827: // Done.
24828: yyError = yyError.select("local label declaration expected",
24829: yyStart);
24830: return yyError;
24831: }
24832:
24833: // =========================================================================
24834:
24835: /**
24836: * Parse nonterminal xtc.lang.jeannie.DebuggerC.DeclarationOrStatement.
24837: *
24838: * @param yyStart The index.
24839: * @return The result.
24840: * @throws IOException Signals an I/O error.
24841: */
24842: private Result pDebuggerC$DeclarationOrStatement(final int yyStart)
24843: throws IOException {
24844:
24845: Result yyResult;
24846: Node yyValue;
24847: ParseError yyError = ParseError.DUMMY;
24848:
24849: // Start a state modification.
24850: yyState.start();
24851:
24852: // Alternative <Declaration>.
24853:
24854: yyState.mark();
24855:
24856: yyResult = pDebuggerC$Declaration(yyStart);
24857: yyError = yyResult.select(yyError);
24858: if (yyResult.hasValue()) {
24859: final Node d = yyResult.semanticValue();
24860:
24861: yyValue = yyState.annotate(d);
24862:
24863: // Commit the state modification.
24864: yyState.commit();
24865:
24866: setLocation(yyValue, yyStart);
24867: return yyResult.createValue(yyValue, yyError);
24868: }
24869:
24870: // Alternative <Statement>.
24871:
24872: yyResult = pDebuggerC$Statement(yyStart);
24873: yyError = yyResult.select(yyError);
24874: if (yyResult.hasValue()) {
24875: final Node s = yyResult.semanticValue();
24876:
24877: yyValue = yyState.annotate(s);
24878:
24879: // Commit the state modification.
24880: yyState.commit();
24881:
24882: setLocation(yyValue, yyStart);
24883: return yyResult.createValue(yyValue, yyError);
24884: }
24885:
24886: // Abort the state modification.
24887: yyState.abort();
24888:
24889: // Done.
24890: return yyError;
24891: }
24892:
24893: // =========================================================================
24894:
24895: /**
24896: * Parse nonterminal xtc.lang.jeannie.DebuggerC.InitialClause.
24897: *
24898: * @param yyStart The index.
24899: * @return The result.
24900: * @throws IOException Signals an I/O error.
24901: */
24902: private Result pDebuggerC$InitialClause(final int yyStart)
24903: throws IOException {
24904:
24905: Result yyResult;
24906: int yyBase;
24907: int yyOption1;
24908: Node yyOpValue1;
24909: Node yyValue;
24910: ParseError yyError = ParseError.DUMMY;
24911:
24912: // Start a state modification.
24913: yyState.start();
24914:
24915: // Alternative <Declaration>.
24916:
24917: yyResult = pDebuggerC$Declaration(yyStart);
24918: yyError = yyResult.select(yyError);
24919: if (yyResult.hasValue()) {
24920: yyValue = yyResult.semanticValue();
24921:
24922: // Commit the state modification.
24923: yyState.commit();
24924:
24925: return yyResult.createValue(yyValue, yyError);
24926: }
24927:
24928: // Alternative <Expression>.
24929:
24930: yyOption1 = yyStart;
24931: yyOpValue1 = null;
24932:
24933: yyResult = pDebuggerC$CommaExpression(yyOption1);
24934: yyError = yyResult.select(yyError);
24935: if (yyResult.hasValue()) {
24936: final Node v$el$3 = yyResult.semanticValue();
24937:
24938: yyOption1 = yyResult.index;
24939: yyOpValue1 = v$el$3;
24940: }
24941: { // Start scope for yyValue.
24942: yyValue = yyOpValue1;
24943:
24944: yyBase = yyOption1;
24945: yyResult = pSymbol(yyBase);
24946: yyError = yyResult.select(yyError);
24947: if (yyResult.hasValue(";")) {
24948:
24949: // Commit the state modification.
24950: yyState.commit();
24951:
24952: return yyResult.createValue(yyValue, yyError);
24953: } else {
24954: yyError = yyError.select("\";\" expected", yyBase);
24955: }
24956: } // End scope for yyValue.
24957:
24958: // Abort the state modification.
24959: yyState.abort();
24960:
24961: // Done.
24962: return yyError;
24963: }
24964:
24965: // =========================================================================
24966:
24967: /**
24968: * Parse nonterminal xtc.lang.jeannie.DebuggerC.CommaExpression.
24969: *
24970: * @param yyStart The index.
24971: * @return The result.
24972: * @throws IOException Signals an I/O error.
24973: */
24974: private Result pDebuggerC$CommaExpression(final int yyStart)
24975: throws IOException {
24976:
24977: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
24978: if (null == yyColumn.chunk9)
24979: yyColumn.chunk9 = new Chunk9();
24980: if (null == yyColumn.chunk9.fDebuggerC$CommaExpression)
24981: yyColumn.chunk9.fDebuggerC$CommaExpression = pDebuggerC$CommaExpression$1(yyStart);
24982: return yyColumn.chunk9.fDebuggerC$CommaExpression;
24983: }
24984:
24985: /** Actually parse xtc.lang.jeannie.DebuggerC.CommaExpression. */
24986: private Result pDebuggerC$CommaExpression$1(final int yyStart)
24987: throws IOException {
24988:
24989: Result yyResult;
24990: int yyRepetition1;
24991: Pair<Action<Node>> yyRepValue1;
24992: Node yyValue;
24993: ParseError yyError = ParseError.DUMMY;
24994:
24995: // Alternative <Base>.
24996:
24997: yyResult = pDebuggerC$AssignmentExpression(yyStart);
24998: yyError = yyResult.select(yyError);
24999: if (yyResult.hasValue()) {
25000: final Node v$3 = yyResult.semanticValue();
25001:
25002: yyRepetition1 = yyResult.index;
25003: yyRepValue1 = Pair.empty();
25004: while (true) {
25005:
25006: yyResult = pDebuggerC$CommaExpression$$Tail1(yyRepetition1);
25007: yyError = yyResult.select(yyError);
25008: if (yyResult.hasValue()) {
25009: final Action<Node> v$4 = yyResult.semanticValue();
25010:
25011: yyRepetition1 = yyResult.index;
25012: yyRepValue1 = new Pair<Action<Node>>(v$4,
25013: yyRepValue1);
25014: continue;
25015: }
25016: break;
25017: }
25018: { // Start scope for v$5.
25019: final Pair<Action<Node>> v$5 = yyRepValue1.reverse();
25020:
25021: yyValue = apply(v$5, v$3, yyStart);
25022:
25023: return new SemanticValue(yyValue, yyRepetition1,
25024: yyError);
25025: } // End scope for v$5.
25026: }
25027:
25028: // Done.
25029: return yyError;
25030: }
25031:
25032: // =========================================================================
25033:
25034: /**
25035: * Parse synthetic nonterminal DebuggerC.CommaExpression$$Tail1.
25036: *
25037: * @param yyStart The index.
25038: * @return The result.
25039: * @throws IOException Signals an I/O error.
25040: */
25041: private Result pDebuggerC$CommaExpression$$Tail1(final int yyStart)
25042: throws IOException {
25043:
25044: Result yyResult;
25045: Action<Node> yyValue;
25046: ParseError yyError = ParseError.DUMMY;
25047:
25048: // Alternative <Comma>.
25049:
25050: yyResult = pSymbol(yyStart);
25051: yyError = yyResult.select(yyError);
25052: if (yyResult.hasValue(",")) {
25053:
25054: yyResult = pDebuggerC$AssignmentExpression(yyResult.index);
25055: yyError = yyResult.select(yyError);
25056: if (yyResult.hasValue()) {
25057: final Node v$g$2 = yyResult.semanticValue();
25058:
25059: yyValue = new Action<Node>() {
25060: public Node run(Node v$1) {
25061: return GNode.create("CommaExpression", v$1,
25062: v$g$2);
25063: }
25064: };
25065:
25066: return yyResult.createValue(yyValue, yyError);
25067: }
25068: }
25069:
25070: // Done.
25071: yyError = yyError.select("comma expression expected", yyStart);
25072: return yyError;
25073: }
25074:
25075: // =========================================================================
25076:
25077: /**
25078: * Parse nonterminal xtc.lang.jeannie.DebuggerC.AssignmentExpression.
25079: *
25080: * @param yyStart The index.
25081: * @return The result.
25082: * @throws IOException Signals an I/O error.
25083: */
25084: private Result pDebuggerC$AssignmentExpression(final int yyStart)
25085: throws IOException {
25086:
25087: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
25088: if (null == yyColumn.chunk9)
25089: yyColumn.chunk9 = new Chunk9();
25090: if (null == yyColumn.chunk9.fDebuggerC$AssignmentExpression)
25091: yyColumn.chunk9.fDebuggerC$AssignmentExpression = pDebuggerC$AssignmentExpression$1(yyStart);
25092: return yyColumn.chunk9.fDebuggerC$AssignmentExpression;
25093: }
25094:
25095: /** Actually parse xtc.lang.jeannie.DebuggerC.AssignmentExpression. */
25096: private Result pDebuggerC$AssignmentExpression$1(final int yyStart)
25097: throws IOException {
25098:
25099: Result yyResult;
25100: Node yyValue;
25101: ParseError yyError = ParseError.DUMMY;
25102:
25103: // Alternative <Assignment>.
25104:
25105: yyResult = pDebuggerC$UnaryExpression(yyStart);
25106: yyError = yyResult.select(yyError);
25107: if (yyResult.hasValue()) {
25108: final Node v$g$1 = yyResult.semanticValue();
25109:
25110: yyResult = p$$Shared11(yyResult.index);
25111: yyError = yyResult.select(yyError);
25112: if (yyResult.hasValue()) {
25113: final String v$g$2 = yyResult.semanticValue();
25114:
25115: yyResult = pDebuggerC$AssignmentExpression(yyResult.index);
25116: yyError = yyResult.select(yyError);
25117: if (yyResult.hasValue()) {
25118: final Node v$g$3 = yyResult.semanticValue();
25119:
25120: yyValue = GNode.create("AssignmentExpression",
25121: v$g$1, v$g$2, v$g$3);
25122: yyValue.setLocation(location(yyStart));
25123:
25124: return yyResult.createValue(yyValue, yyError);
25125: }
25126: }
25127: }
25128:
25129: // Alternative <Base>.
25130:
25131: yyResult = pDebuggerC$ConditionalExpression(yyStart);
25132: yyError = yyResult.select(yyError);
25133: if (yyResult.hasValue()) {
25134: yyValue = yyResult.semanticValue();
25135:
25136: return yyResult.createValue(yyValue, yyError);
25137: }
25138:
25139: // Done.
25140: return yyError;
25141: }
25142:
25143: // =========================================================================
25144:
25145: /**
25146: * Parse nonterminal xtc.lang.jeannie.DebuggerC.ConditionalExpression.
25147: *
25148: * @param yyStart The index.
25149: * @return The result.
25150: * @throws IOException Signals an I/O error.
25151: */
25152: private Result pDebuggerC$ConditionalExpression(final int yyStart)
25153: throws IOException {
25154:
25155: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
25156: if (null == yyColumn.chunk9)
25157: yyColumn.chunk9 = new Chunk9();
25158: if (null == yyColumn.chunk9.fDebuggerC$ConditionalExpression)
25159: yyColumn.chunk9.fDebuggerC$ConditionalExpression = pDebuggerC$ConditionalExpression$1(yyStart);
25160: return yyColumn.chunk9.fDebuggerC$ConditionalExpression;
25161: }
25162:
25163: /** Actually parse xtc.lang.jeannie.DebuggerC.ConditionalExpression. */
25164: private Result pDebuggerC$ConditionalExpression$1(final int yyStart)
25165: throws IOException {
25166:
25167: Result yyResult;
25168: int yyBase;
25169: Node yyValue;
25170: ParseError yyError = ParseError.DUMMY;
25171:
25172: // Alternative <Conditional>.
25173:
25174: yyResult = pDebuggerC$LogicalOrExpression(yyStart);
25175: yyError = yyResult.select(yyError);
25176: if (yyResult.hasValue()) {
25177: final Node v$g$1 = yyResult.semanticValue();
25178:
25179: yyBase = yyResult.index;
25180: yyResult = pSymbol(yyBase);
25181: yyError = yyResult.select(yyError);
25182: if (yyResult.hasValue("?")) {
25183:
25184: yyResult = pDebuggerC$CommaExpression(yyResult.index);
25185: yyError = yyResult.select(yyError);
25186: if (yyResult.hasValue()) {
25187: final Node v$g$2 = yyResult.semanticValue();
25188:
25189: yyBase = yyResult.index;
25190: yyResult = pSymbol(yyBase);
25191: yyError = yyResult.select(yyError);
25192: if (yyResult.hasValue(":")) {
25193:
25194: yyResult = pDebuggerC$ConditionalExpression(yyResult.index);
25195: yyError = yyResult.select(yyError);
25196: if (yyResult.hasValue()) {
25197: final Node v$g$3 = yyResult.semanticValue();
25198:
25199: yyValue = GNode.create(
25200: "ConditionalExpression", v$g$1,
25201: v$g$2, v$g$3);
25202: yyValue.setLocation(location(yyStart));
25203:
25204: return yyResult.createValue(yyValue,
25205: yyError);
25206: }
25207: } else {
25208: yyError = yyError.select("\":\" expected",
25209: yyBase);
25210: }
25211: }
25212: } else {
25213: yyError = yyError.select("\"?\" expected", yyBase);
25214: }
25215: }
25216:
25217: // Alternative <IncompleteConditional>.
25218:
25219: if (GCC) {
25220:
25221: yyResult = pDebuggerC$LogicalOrExpression(yyStart);
25222: yyError = yyResult.select(yyError);
25223: if (yyResult.hasValue()) {
25224: final Node v$g$4 = yyResult.semanticValue();
25225:
25226: yyBase = yyResult.index;
25227: yyResult = pSymbol(yyBase);
25228: yyError = yyResult.select(yyError);
25229: if (yyResult.hasValue("?")) {
25230:
25231: yyBase = yyResult.index;
25232: yyResult = pSymbol(yyBase);
25233: yyError = yyResult.select(yyError);
25234: if (yyResult.hasValue(":")) {
25235:
25236: yyResult = pDebuggerC$ConditionalExpression(yyResult.index);
25237: yyError = yyResult.select(yyError);
25238: if (yyResult.hasValue()) {
25239: final Node v$g$6 = yyResult.semanticValue();
25240:
25241: yyValue = GNode.create(
25242: "ConditionalExpression", v$g$4,
25243: null, v$g$6);
25244: yyValue.setLocation(location(yyStart));
25245:
25246: return yyResult.createValue(yyValue,
25247: yyError);
25248: }
25249: } else {
25250: yyError = yyError.select("\":\" expected",
25251: yyBase);
25252: }
25253: } else {
25254: yyError = yyError.select("\"?\" expected", yyBase);
25255: }
25256: }
25257: }
25258:
25259: // Alternative <Base>.
25260:
25261: yyResult = pDebuggerC$LogicalOrExpression(yyStart);
25262: yyError = yyResult.select(yyError);
25263: if (yyResult.hasValue()) {
25264: yyValue = yyResult.semanticValue();
25265:
25266: return yyResult.createValue(yyValue, yyError);
25267: }
25268:
25269: // Done.
25270: yyError = yyError.select("conditional expression expected",
25271: yyStart);
25272: return yyError;
25273: }
25274:
25275: // =========================================================================
25276:
25277: /**
25278: * Parse nonterminal xtc.lang.jeannie.DebuggerC.LogicalOrExpression.
25279: *
25280: * @param yyStart The index.
25281: * @return The result.
25282: * @throws IOException Signals an I/O error.
25283: */
25284: private Result pDebuggerC$LogicalOrExpression(final int yyStart)
25285: throws IOException {
25286:
25287: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
25288: if (null == yyColumn.chunk9)
25289: yyColumn.chunk9 = new Chunk9();
25290: if (null == yyColumn.chunk9.fDebuggerC$LogicalOrExpression)
25291: yyColumn.chunk9.fDebuggerC$LogicalOrExpression = pDebuggerC$LogicalOrExpression$1(yyStart);
25292: return yyColumn.chunk9.fDebuggerC$LogicalOrExpression;
25293: }
25294:
25295: /** Actually parse xtc.lang.jeannie.DebuggerC.LogicalOrExpression. */
25296: private Result pDebuggerC$LogicalOrExpression$1(final int yyStart)
25297: throws IOException {
25298:
25299: Result yyResult;
25300: int yyRepetition1;
25301: Pair<Action<Node>> yyRepValue1;
25302: Node yyValue;
25303: ParseError yyError = ParseError.DUMMY;
25304:
25305: // Alternative <Base>.
25306:
25307: yyResult = pDebuggerC$LogicalAndExpression(yyStart);
25308: yyError = yyResult.select(yyError);
25309: if (yyResult.hasValue()) {
25310: final Node v$3 = yyResult.semanticValue();
25311:
25312: yyRepetition1 = yyResult.index;
25313: yyRepValue1 = Pair.empty();
25314: while (true) {
25315:
25316: yyResult = pDebuggerC$LogicalOrExpression$$Tail1(yyRepetition1);
25317: yyError = yyResult.select(yyError);
25318: if (yyResult.hasValue()) {
25319: final Action<Node> v$4 = yyResult.semanticValue();
25320:
25321: yyRepetition1 = yyResult.index;
25322: yyRepValue1 = new Pair<Action<Node>>(v$4,
25323: yyRepValue1);
25324: continue;
25325: }
25326: break;
25327: }
25328: { // Start scope for v$5.
25329: final Pair<Action<Node>> v$5 = yyRepValue1.reverse();
25330:
25331: yyValue = apply(v$5, v$3, yyStart);
25332:
25333: return new SemanticValue(yyValue, yyRepetition1,
25334: yyError);
25335: } // End scope for v$5.
25336: }
25337:
25338: // Done.
25339: return yyError;
25340: }
25341:
25342: // =========================================================================
25343:
25344: /**
25345: * Parse synthetic nonterminal DebuggerC.LogicalOrExpression$$Tail1.
25346: *
25347: * @param yyStart The index.
25348: * @return The result.
25349: * @throws IOException Signals an I/O error.
25350: */
25351: private Result pDebuggerC$LogicalOrExpression$$Tail1(
25352: final int yyStart) throws IOException {
25353:
25354: Result yyResult;
25355: Action<Node> yyValue;
25356: ParseError yyError = ParseError.DUMMY;
25357:
25358: // Alternative <Or>.
25359:
25360: yyResult = pSymbol(yyStart);
25361: yyError = yyResult.select(yyError);
25362: if (yyResult.hasValue("||")) {
25363:
25364: yyResult = pDebuggerC$LogicalAndExpression(yyResult.index);
25365: yyError = yyResult.select(yyError);
25366: if (yyResult.hasValue()) {
25367: final Node v$g$2 = yyResult.semanticValue();
25368:
25369: yyValue = new Action<Node>() {
25370: public Node run(Node v$1) {
25371: return GNode.create("LogicalOrExpression", v$1,
25372: v$g$2);
25373: }
25374: };
25375:
25376: return yyResult.createValue(yyValue, yyError);
25377: }
25378: }
25379:
25380: // Done.
25381: yyError = yyError.select("logical or expression expected",
25382: yyStart);
25383: return yyError;
25384: }
25385:
25386: // =========================================================================
25387:
25388: /**
25389: * Parse nonterminal xtc.lang.jeannie.DebuggerC.LogicalAndExpression.
25390: *
25391: * @param yyStart The index.
25392: * @return The result.
25393: * @throws IOException Signals an I/O error.
25394: */
25395: private Result pDebuggerC$LogicalAndExpression(final int yyStart)
25396: throws IOException {
25397:
25398: Result yyResult;
25399: int yyRepetition1;
25400: Pair<Action<Node>> yyRepValue1;
25401: Node yyValue;
25402: ParseError yyError = ParseError.DUMMY;
25403:
25404: // Alternative <Base>.
25405:
25406: yyResult = pDebuggerC$BitwiseOrExpression(yyStart);
25407: yyError = yyResult.select(yyError);
25408: if (yyResult.hasValue()) {
25409: final Node v$3 = yyResult.semanticValue();
25410:
25411: yyRepetition1 = yyResult.index;
25412: yyRepValue1 = Pair.empty();
25413: while (true) {
25414:
25415: yyResult = pDebuggerC$LogicalAndExpression$$Tail1(yyRepetition1);
25416: yyError = yyResult.select(yyError);
25417: if (yyResult.hasValue()) {
25418: final Action<Node> v$4 = yyResult.semanticValue();
25419:
25420: yyRepetition1 = yyResult.index;
25421: yyRepValue1 = new Pair<Action<Node>>(v$4,
25422: yyRepValue1);
25423: continue;
25424: }
25425: break;
25426: }
25427: { // Start scope for v$5.
25428: final Pair<Action<Node>> v$5 = yyRepValue1.reverse();
25429:
25430: yyValue = apply(v$5, v$3, yyStart);
25431:
25432: return new SemanticValue(yyValue, yyRepetition1,
25433: yyError);
25434: } // End scope for v$5.
25435: }
25436:
25437: // Done.
25438: return yyError;
25439: }
25440:
25441: // =========================================================================
25442:
25443: /**
25444: * Parse synthetic nonterminal DebuggerC.LogicalAndExpression$$Tail1.
25445: *
25446: * @param yyStart The index.
25447: * @return The result.
25448: * @throws IOException Signals an I/O error.
25449: */
25450: private Result pDebuggerC$LogicalAndExpression$$Tail1(
25451: final int yyStart) throws IOException {
25452:
25453: Result yyResult;
25454: Action<Node> yyValue;
25455: ParseError yyError = ParseError.DUMMY;
25456:
25457: // Alternative <And>.
25458:
25459: yyResult = pSymbol(yyStart);
25460: yyError = yyResult.select(yyError);
25461: if (yyResult.hasValue("&&")) {
25462:
25463: yyResult = pDebuggerC$BitwiseOrExpression(yyResult.index);
25464: yyError = yyResult.select(yyError);
25465: if (yyResult.hasValue()) {
25466: final Node v$g$2 = yyResult.semanticValue();
25467:
25468: yyValue = new Action<Node>() {
25469: public Node run(Node v$1) {
25470: return GNode.create("LogicalAndExpression",
25471: v$1, v$g$2);
25472: }
25473: };
25474:
25475: return yyResult.createValue(yyValue, yyError);
25476: }
25477: }
25478:
25479: // Done.
25480: yyError = yyError.select("logical and expression expected",
25481: yyStart);
25482: return yyError;
25483: }
25484:
25485: // =========================================================================
25486:
25487: /**
25488: * Parse nonterminal xtc.lang.jeannie.DebuggerC.BitwiseOrExpression.
25489: *
25490: * @param yyStart The index.
25491: * @return The result.
25492: * @throws IOException Signals an I/O error.
25493: */
25494: private Result pDebuggerC$BitwiseOrExpression(final int yyStart)
25495: throws IOException {
25496:
25497: Result yyResult;
25498: int yyRepetition1;
25499: Pair<Action<Node>> yyRepValue1;
25500: Node yyValue;
25501: ParseError yyError = ParseError.DUMMY;
25502:
25503: // Alternative <Base>.
25504:
25505: yyResult = pDebuggerC$BitwiseXorExpression(yyStart);
25506: yyError = yyResult.select(yyError);
25507: if (yyResult.hasValue()) {
25508: final Node v$3 = yyResult.semanticValue();
25509:
25510: yyRepetition1 = yyResult.index;
25511: yyRepValue1 = Pair.empty();
25512: while (true) {
25513:
25514: yyResult = pDebuggerC$BitwiseOrExpression$$Tail1(yyRepetition1);
25515: yyError = yyResult.select(yyError);
25516: if (yyResult.hasValue()) {
25517: final Action<Node> v$4 = yyResult.semanticValue();
25518:
25519: yyRepetition1 = yyResult.index;
25520: yyRepValue1 = new Pair<Action<Node>>(v$4,
25521: yyRepValue1);
25522: continue;
25523: }
25524: break;
25525: }
25526: { // Start scope for v$5.
25527: final Pair<Action<Node>> v$5 = yyRepValue1.reverse();
25528:
25529: yyValue = apply(v$5, v$3, yyStart);
25530:
25531: return new SemanticValue(yyValue, yyRepetition1,
25532: yyError);
25533: } // End scope for v$5.
25534: }
25535:
25536: // Done.
25537: return yyError;
25538: }
25539:
25540: // =========================================================================
25541:
25542: /**
25543: * Parse synthetic nonterminal DebuggerC.BitwiseOrExpression$$Tail1.
25544: *
25545: * @param yyStart The index.
25546: * @return The result.
25547: * @throws IOException Signals an I/O error.
25548: */
25549: private Result pDebuggerC$BitwiseOrExpression$$Tail1(
25550: final int yyStart) throws IOException {
25551:
25552: Result yyResult;
25553: Action<Node> yyValue;
25554: ParseError yyError = ParseError.DUMMY;
25555:
25556: // Alternative <Or>.
25557:
25558: yyResult = pSymbol(yyStart);
25559: yyError = yyResult.select(yyError);
25560: if (yyResult.hasValue("|")) {
25561:
25562: yyResult = pDebuggerC$BitwiseXorExpression(yyResult.index);
25563: yyError = yyResult.select(yyError);
25564: if (yyResult.hasValue()) {
25565: final Node v$g$2 = yyResult.semanticValue();
25566:
25567: yyValue = new Action<Node>() {
25568: public Node run(Node v$1) {
25569: return GNode.create("BitwiseOrExpression", v$1,
25570: v$g$2);
25571: }
25572: };
25573:
25574: return yyResult.createValue(yyValue, yyError);
25575: }
25576: }
25577:
25578: // Done.
25579: yyError = yyError.select("bitwise or expression expected",
25580: yyStart);
25581: return yyError;
25582: }
25583:
25584: // =========================================================================
25585:
25586: /**
25587: * Parse nonterminal xtc.lang.jeannie.DebuggerC.BitwiseXorExpression.
25588: *
25589: * @param yyStart The index.
25590: * @return The result.
25591: * @throws IOException Signals an I/O error.
25592: */
25593: private Result pDebuggerC$BitwiseXorExpression(final int yyStart)
25594: throws IOException {
25595:
25596: Result yyResult;
25597: int yyRepetition1;
25598: Pair<Action<Node>> yyRepValue1;
25599: Node yyValue;
25600: ParseError yyError = ParseError.DUMMY;
25601:
25602: // Alternative <Base>.
25603:
25604: yyResult = pDebuggerC$BitwiseAndExpression(yyStart);
25605: yyError = yyResult.select(yyError);
25606: if (yyResult.hasValue()) {
25607: final Node v$3 = yyResult.semanticValue();
25608:
25609: yyRepetition1 = yyResult.index;
25610: yyRepValue1 = Pair.empty();
25611: while (true) {
25612:
25613: yyResult = pDebuggerC$BitwiseXorExpression$$Tail1(yyRepetition1);
25614: yyError = yyResult.select(yyError);
25615: if (yyResult.hasValue()) {
25616: final Action<Node> v$4 = yyResult.semanticValue();
25617:
25618: yyRepetition1 = yyResult.index;
25619: yyRepValue1 = new Pair<Action<Node>>(v$4,
25620: yyRepValue1);
25621: continue;
25622: }
25623: break;
25624: }
25625: { // Start scope for v$5.
25626: final Pair<Action<Node>> v$5 = yyRepValue1.reverse();
25627:
25628: yyValue = apply(v$5, v$3, yyStart);
25629:
25630: return new SemanticValue(yyValue, yyRepetition1,
25631: yyError);
25632: } // End scope for v$5.
25633: }
25634:
25635: // Done.
25636: return yyError;
25637: }
25638:
25639: // =========================================================================
25640:
25641: /**
25642: * Parse synthetic nonterminal DebuggerC.BitwiseXorExpression$$Tail1.
25643: *
25644: * @param yyStart The index.
25645: * @return The result.
25646: * @throws IOException Signals an I/O error.
25647: */
25648: private Result pDebuggerC$BitwiseXorExpression$$Tail1(
25649: final int yyStart) throws IOException {
25650:
25651: Result yyResult;
25652: Action<Node> yyValue;
25653: ParseError yyError = ParseError.DUMMY;
25654:
25655: // Alternative <Xor>.
25656:
25657: yyResult = pSymbol(yyStart);
25658: yyError = yyResult.select(yyError);
25659: if (yyResult.hasValue("^")) {
25660:
25661: yyResult = pDebuggerC$BitwiseAndExpression(yyResult.index);
25662: yyError = yyResult.select(yyError);
25663: if (yyResult.hasValue()) {
25664: final Node v$g$2 = yyResult.semanticValue();
25665:
25666: yyValue = new Action<Node>() {
25667: public Node run(Node v$1) {
25668: return GNode.create("BitwiseXorExpression",
25669: v$1, v$g$2);
25670: }
25671: };
25672:
25673: return yyResult.createValue(yyValue, yyError);
25674: }
25675: }
25676:
25677: // Done.
25678: yyError = yyError.select("bitwise xor expression expected",
25679: yyStart);
25680: return yyError;
25681: }
25682:
25683: // =========================================================================
25684:
25685: /**
25686: * Parse nonterminal xtc.lang.jeannie.DebuggerC.BitwiseAndExpression.
25687: *
25688: * @param yyStart The index.
25689: * @return The result.
25690: * @throws IOException Signals an I/O error.
25691: */
25692: private Result pDebuggerC$BitwiseAndExpression(final int yyStart)
25693: throws IOException {
25694:
25695: Result yyResult;
25696: int yyRepetition1;
25697: Pair<Action<Node>> yyRepValue1;
25698: Node yyValue;
25699: ParseError yyError = ParseError.DUMMY;
25700:
25701: // Alternative <Base>.
25702:
25703: yyResult = pDebuggerC$EqualityExpression(yyStart);
25704: yyError = yyResult.select(yyError);
25705: if (yyResult.hasValue()) {
25706: final Node v$3 = yyResult.semanticValue();
25707:
25708: yyRepetition1 = yyResult.index;
25709: yyRepValue1 = Pair.empty();
25710: while (true) {
25711:
25712: yyResult = pDebuggerC$BitwiseAndExpression$$Tail1(yyRepetition1);
25713: yyError = yyResult.select(yyError);
25714: if (yyResult.hasValue()) {
25715: final Action<Node> v$4 = yyResult.semanticValue();
25716:
25717: yyRepetition1 = yyResult.index;
25718: yyRepValue1 = new Pair<Action<Node>>(v$4,
25719: yyRepValue1);
25720: continue;
25721: }
25722: break;
25723: }
25724: { // Start scope for v$5.
25725: final Pair<Action<Node>> v$5 = yyRepValue1.reverse();
25726:
25727: yyValue = apply(v$5, v$3, yyStart);
25728:
25729: return new SemanticValue(yyValue, yyRepetition1,
25730: yyError);
25731: } // End scope for v$5.
25732: }
25733:
25734: // Done.
25735: return yyError;
25736: }
25737:
25738: // =========================================================================
25739:
25740: /**
25741: * Parse synthetic nonterminal DebuggerC.BitwiseAndExpression$$Tail1.
25742: *
25743: * @param yyStart The index.
25744: * @return The result.
25745: * @throws IOException Signals an I/O error.
25746: */
25747: private Result pDebuggerC$BitwiseAndExpression$$Tail1(
25748: final int yyStart) throws IOException {
25749:
25750: Result yyResult;
25751: Action<Node> yyValue;
25752: ParseError yyError = ParseError.DUMMY;
25753:
25754: // Alternative <And>.
25755:
25756: yyResult = pSymbol(yyStart);
25757: yyError = yyResult.select(yyError);
25758: if (yyResult.hasValue("&")) {
25759:
25760: yyResult = pDebuggerC$EqualityExpression(yyResult.index);
25761: yyError = yyResult.select(yyError);
25762: if (yyResult.hasValue()) {
25763: final Node v$g$2 = yyResult.semanticValue();
25764:
25765: yyValue = new Action<Node>() {
25766: public Node run(Node v$1) {
25767: return GNode.create("BitwiseAndExpression",
25768: v$1, v$g$2);
25769: }
25770: };
25771:
25772: return yyResult.createValue(yyValue, yyError);
25773: }
25774: }
25775:
25776: // Done.
25777: yyError = yyError.select("bitwise and expression expected",
25778: yyStart);
25779: return yyError;
25780: }
25781:
25782: // =========================================================================
25783:
25784: /**
25785: * Parse nonterminal xtc.lang.jeannie.DebuggerC.EqualityExpression.
25786: *
25787: * @param yyStart The index.
25788: * @return The result.
25789: * @throws IOException Signals an I/O error.
25790: */
25791: private Result pDebuggerC$EqualityExpression(final int yyStart)
25792: throws IOException {
25793:
25794: Result yyResult;
25795: int yyRepetition1;
25796: Pair<Action<Node>> yyRepValue1;
25797: Node yyValue;
25798: ParseError yyError = ParseError.DUMMY;
25799:
25800: // Alternative <Base>.
25801:
25802: yyResult = pDebuggerC$RelationalExpression(yyStart);
25803: yyError = yyResult.select(yyError);
25804: if (yyResult.hasValue()) {
25805: final Node v$4 = yyResult.semanticValue();
25806:
25807: yyRepetition1 = yyResult.index;
25808: yyRepValue1 = Pair.empty();
25809: while (true) {
25810:
25811: yyResult = pDebuggerC$EqualityExpression$$Tail1(yyRepetition1);
25812: yyError = yyResult.select(yyError);
25813: if (yyResult.hasValue()) {
25814: final Action<Node> v$5 = yyResult.semanticValue();
25815:
25816: yyRepetition1 = yyResult.index;
25817: yyRepValue1 = new Pair<Action<Node>>(v$5,
25818: yyRepValue1);
25819: continue;
25820: }
25821: break;
25822: }
25823: { // Start scope for v$6.
25824: final Pair<Action<Node>> v$6 = yyRepValue1.reverse();
25825:
25826: yyValue = apply(v$6, v$4, yyStart);
25827:
25828: return new SemanticValue(yyValue, yyRepetition1,
25829: yyError);
25830: } // End scope for v$6.
25831: }
25832:
25833: // Done.
25834: return yyError;
25835: }
25836:
25837: // =========================================================================
25838:
25839: /**
25840: * Parse synthetic nonterminal DebuggerC.EqualityExpression$$Tail1.
25841: *
25842: * @param yyStart The index.
25843: * @return The result.
25844: * @throws IOException Signals an I/O error.
25845: */
25846: private Result pDebuggerC$EqualityExpression$$Tail1(
25847: final int yyStart) throws IOException {
25848:
25849: Result yyResult;
25850: Action<Node> yyValue;
25851: ParseError yyError = ParseError.DUMMY;
25852:
25853: // Alternative <Recursion>.
25854:
25855: yyResult = p$$Shared12(yyStart);
25856: yyError = yyResult.select(yyError);
25857: if (yyResult.hasValue()) {
25858: final String v$g$2 = yyResult.semanticValue();
25859:
25860: yyResult = pDebuggerC$RelationalExpression(yyResult.index);
25861: yyError = yyResult.select(yyError);
25862: if (yyResult.hasValue()) {
25863: final Node v$g$3 = yyResult.semanticValue();
25864:
25865: yyValue = new Action<Node>() {
25866: public Node run(Node v$1) {
25867: return GNode.create("EqualityExpression", v$1,
25868: v$g$2, v$g$3);
25869: }
25870: };
25871:
25872: return yyResult.createValue(yyValue, yyError);
25873: }
25874: }
25875:
25876: // Done.
25877: return yyError;
25878: }
25879:
25880: // =========================================================================
25881:
25882: /**
25883: * Parse nonterminal xtc.lang.jeannie.DebuggerC.RelationalExpression.
25884: *
25885: * @param yyStart The index.
25886: * @return The result.
25887: * @throws IOException Signals an I/O error.
25888: */
25889: private Result pDebuggerC$RelationalExpression(final int yyStart)
25890: throws IOException {
25891:
25892: Result yyResult;
25893: int yyRepetition1;
25894: Pair<Action<Node>> yyRepValue1;
25895: Node yyValue;
25896: ParseError yyError = ParseError.DUMMY;
25897:
25898: // Alternative <Base>.
25899:
25900: yyResult = pDebuggerC$ShiftExpression(yyStart);
25901: yyError = yyResult.select(yyError);
25902: if (yyResult.hasValue()) {
25903: final Node v$4 = yyResult.semanticValue();
25904:
25905: yyRepetition1 = yyResult.index;
25906: yyRepValue1 = Pair.empty();
25907: while (true) {
25908:
25909: yyResult = pDebuggerC$RelationalExpression$$Tail1(yyRepetition1);
25910: yyError = yyResult.select(yyError);
25911: if (yyResult.hasValue()) {
25912: final Action<Node> v$5 = yyResult.semanticValue();
25913:
25914: yyRepetition1 = yyResult.index;
25915: yyRepValue1 = new Pair<Action<Node>>(v$5,
25916: yyRepValue1);
25917: continue;
25918: }
25919: break;
25920: }
25921: { // Start scope for v$6.
25922: final Pair<Action<Node>> v$6 = yyRepValue1.reverse();
25923:
25924: yyValue = apply(v$6, v$4, yyStart);
25925:
25926: return new SemanticValue(yyValue, yyRepetition1,
25927: yyError);
25928: } // End scope for v$6.
25929: }
25930:
25931: // Done.
25932: return yyError;
25933: }
25934:
25935: // =========================================================================
25936:
25937: /**
25938: * Parse synthetic nonterminal DebuggerC.RelationalExpression$$Tail1.
25939: *
25940: * @param yyStart The index.
25941: * @return The result.
25942: * @throws IOException Signals an I/O error.
25943: */
25944: private Result pDebuggerC$RelationalExpression$$Tail1(
25945: final int yyStart) throws IOException {
25946:
25947: Result yyResult;
25948: Action<Node> yyValue;
25949: ParseError yyError = ParseError.DUMMY;
25950:
25951: // Alternative <Recursion>.
25952:
25953: yyResult = p$$Shared13(yyStart);
25954: yyError = yyResult.select(yyError);
25955: if (yyResult.hasValue()) {
25956: final String v$g$2 = yyResult.semanticValue();
25957:
25958: yyResult = pDebuggerC$ShiftExpression(yyResult.index);
25959: yyError = yyResult.select(yyError);
25960: if (yyResult.hasValue()) {
25961: final Node v$g$3 = yyResult.semanticValue();
25962:
25963: yyValue = new Action<Node>() {
25964: public Node run(Node v$1) {
25965: return GNode.create("RelationalExpression",
25966: v$1, v$g$2, v$g$3);
25967: }
25968: };
25969:
25970: return yyResult.createValue(yyValue, yyError);
25971: }
25972: }
25973:
25974: // Done.
25975: return yyError;
25976: }
25977:
25978: // =========================================================================
25979:
25980: /**
25981: * Parse nonterminal xtc.lang.jeannie.DebuggerC.ShiftExpression.
25982: *
25983: * @param yyStart The index.
25984: * @return The result.
25985: * @throws IOException Signals an I/O error.
25986: */
25987: private Result pDebuggerC$ShiftExpression(final int yyStart)
25988: throws IOException {
25989:
25990: Result yyResult;
25991: int yyRepetition1;
25992: Pair<Action<Node>> yyRepValue1;
25993: Node yyValue;
25994: ParseError yyError = ParseError.DUMMY;
25995:
25996: // Alternative <Base>.
25997:
25998: yyResult = pDebuggerC$AdditiveExpression(yyStart);
25999: yyError = yyResult.select(yyError);
26000: if (yyResult.hasValue()) {
26001: final Node v$4 = yyResult.semanticValue();
26002:
26003: yyRepetition1 = yyResult.index;
26004: yyRepValue1 = Pair.empty();
26005: while (true) {
26006:
26007: yyResult = pDebuggerC$ShiftExpression$$Tail1(yyRepetition1);
26008: yyError = yyResult.select(yyError);
26009: if (yyResult.hasValue()) {
26010: final Action<Node> v$5 = yyResult.semanticValue();
26011:
26012: yyRepetition1 = yyResult.index;
26013: yyRepValue1 = new Pair<Action<Node>>(v$5,
26014: yyRepValue1);
26015: continue;
26016: }
26017: break;
26018: }
26019: { // Start scope for v$6.
26020: final Pair<Action<Node>> v$6 = yyRepValue1.reverse();
26021:
26022: yyValue = apply(v$6, v$4, yyStart);
26023:
26024: return new SemanticValue(yyValue, yyRepetition1,
26025: yyError);
26026: } // End scope for v$6.
26027: }
26028:
26029: // Done.
26030: return yyError;
26031: }
26032:
26033: // =========================================================================
26034:
26035: /**
26036: * Parse synthetic nonterminal DebuggerC.ShiftExpression$$Tail1.
26037: *
26038: * @param yyStart The index.
26039: * @return The result.
26040: * @throws IOException Signals an I/O error.
26041: */
26042: private Result pDebuggerC$ShiftExpression$$Tail1(final int yyStart)
26043: throws IOException {
26044:
26045: Result yyResult;
26046: Action<Node> yyValue;
26047: ParseError yyError = ParseError.DUMMY;
26048:
26049: // Alternative <Recursion>.
26050:
26051: yyResult = p$$Shared14(yyStart);
26052: yyError = yyResult.select(yyError);
26053: if (yyResult.hasValue()) {
26054: final String v$g$2 = yyResult.semanticValue();
26055:
26056: yyResult = pDebuggerC$AdditiveExpression(yyResult.index);
26057: yyError = yyResult.select(yyError);
26058: if (yyResult.hasValue()) {
26059: final Node v$g$3 = yyResult.semanticValue();
26060:
26061: yyValue = new Action<Node>() {
26062: public Node run(Node v$1) {
26063: return GNode.create("ShiftExpression", v$1,
26064: v$g$2, v$g$3);
26065: }
26066: };
26067:
26068: return yyResult.createValue(yyValue, yyError);
26069: }
26070: }
26071:
26072: // Done.
26073: return yyError;
26074: }
26075:
26076: // =========================================================================
26077:
26078: /**
26079: * Parse nonterminal xtc.lang.jeannie.DebuggerC.AdditiveExpression.
26080: *
26081: * @param yyStart The index.
26082: * @return The result.
26083: * @throws IOException Signals an I/O error.
26084: */
26085: private Result pDebuggerC$AdditiveExpression(final int yyStart)
26086: throws IOException {
26087:
26088: Result yyResult;
26089: int yyRepetition1;
26090: Pair<Action<Node>> yyRepValue1;
26091: Node yyValue;
26092: ParseError yyError = ParseError.DUMMY;
26093:
26094: // Alternative <Base>.
26095:
26096: yyResult = pDebuggerC$MultiplicativeExpression(yyStart);
26097: yyError = yyResult.select(yyError);
26098: if (yyResult.hasValue()) {
26099: final Node v$4 = yyResult.semanticValue();
26100:
26101: yyRepetition1 = yyResult.index;
26102: yyRepValue1 = Pair.empty();
26103: while (true) {
26104:
26105: yyResult = pDebuggerC$AdditiveExpression$$Tail1(yyRepetition1);
26106: yyError = yyResult.select(yyError);
26107: if (yyResult.hasValue()) {
26108: final Action<Node> v$5 = yyResult.semanticValue();
26109:
26110: yyRepetition1 = yyResult.index;
26111: yyRepValue1 = new Pair<Action<Node>>(v$5,
26112: yyRepValue1);
26113: continue;
26114: }
26115: break;
26116: }
26117: { // Start scope for v$6.
26118: final Pair<Action<Node>> v$6 = yyRepValue1.reverse();
26119:
26120: yyValue = apply(v$6, v$4, yyStart);
26121:
26122: return new SemanticValue(yyValue, yyRepetition1,
26123: yyError);
26124: } // End scope for v$6.
26125: }
26126:
26127: // Done.
26128: return yyError;
26129: }
26130:
26131: // =========================================================================
26132:
26133: /**
26134: * Parse synthetic nonterminal DebuggerC.AdditiveExpression$$Tail1.
26135: *
26136: * @param yyStart The index.
26137: * @return The result.
26138: * @throws IOException Signals an I/O error.
26139: */
26140: private Result pDebuggerC$AdditiveExpression$$Tail1(
26141: final int yyStart) throws IOException {
26142:
26143: Result yyResult;
26144: Action<Node> yyValue;
26145: ParseError yyError = ParseError.DUMMY;
26146:
26147: // Alternative <Recursion>.
26148:
26149: yyResult = p$$Shared15(yyStart);
26150: yyError = yyResult.select(yyError);
26151: if (yyResult.hasValue()) {
26152: final String v$g$2 = yyResult.semanticValue();
26153:
26154: yyResult = pDebuggerC$MultiplicativeExpression(yyResult.index);
26155: yyError = yyResult.select(yyError);
26156: if (yyResult.hasValue()) {
26157: final Node v$g$3 = yyResult.semanticValue();
26158:
26159: yyValue = new Action<Node>() {
26160: public Node run(Node v$1) {
26161: return GNode.create("AdditiveExpression", v$1,
26162: v$g$2, v$g$3);
26163: }
26164: };
26165:
26166: return yyResult.createValue(yyValue, yyError);
26167: }
26168: }
26169:
26170: // Done.
26171: return yyError;
26172: }
26173:
26174: // =========================================================================
26175:
26176: /**
26177: * Parse nonterminal xtc.lang.jeannie.DebuggerC.MultiplicativeExpression.
26178: *
26179: * @param yyStart The index.
26180: * @return The result.
26181: * @throws IOException Signals an I/O error.
26182: */
26183: private Result pDebuggerC$MultiplicativeExpression(final int yyStart)
26184: throws IOException {
26185:
26186: Result yyResult;
26187: int yyRepetition1;
26188: Pair<Action<Node>> yyRepValue1;
26189: Node yyValue;
26190: ParseError yyError = ParseError.DUMMY;
26191:
26192: // Alternative <Base>.
26193:
26194: yyResult = pDebuggerC$CastExpression(yyStart);
26195: yyError = yyResult.select(yyError);
26196: if (yyResult.hasValue()) {
26197: final Node v$4 = yyResult.semanticValue();
26198:
26199: yyRepetition1 = yyResult.index;
26200: yyRepValue1 = Pair.empty();
26201: while (true) {
26202:
26203: yyResult = pDebuggerC$MultiplicativeExpression$$Tail1(yyRepetition1);
26204: yyError = yyResult.select(yyError);
26205: if (yyResult.hasValue()) {
26206: final Action<Node> v$5 = yyResult.semanticValue();
26207:
26208: yyRepetition1 = yyResult.index;
26209: yyRepValue1 = new Pair<Action<Node>>(v$5,
26210: yyRepValue1);
26211: continue;
26212: }
26213: break;
26214: }
26215: { // Start scope for v$6.
26216: final Pair<Action<Node>> v$6 = yyRepValue1.reverse();
26217:
26218: yyValue = apply(v$6, v$4, yyStart);
26219:
26220: return new SemanticValue(yyValue, yyRepetition1,
26221: yyError);
26222: } // End scope for v$6.
26223: }
26224:
26225: // Done.
26226: return yyError;
26227: }
26228:
26229: // =========================================================================
26230:
26231: /**
26232: * Parse synthetic nonterminal DebuggerC.MultiplicativeExpression$$Tail1.
26233: *
26234: * @param yyStart The index.
26235: * @return The result.
26236: * @throws IOException Signals an I/O error.
26237: */
26238: private Result pDebuggerC$MultiplicativeExpression$$Tail1(
26239: final int yyStart) throws IOException {
26240:
26241: Result yyResult;
26242: Action<Node> yyValue;
26243: ParseError yyError = ParseError.DUMMY;
26244:
26245: // Alternative <Recursion>.
26246:
26247: yyResult = p$$Shared16(yyStart);
26248: yyError = yyResult.select(yyError);
26249: if (yyResult.hasValue()) {
26250: final String v$g$2 = yyResult.semanticValue();
26251:
26252: yyResult = pDebuggerC$CastExpression(yyResult.index);
26253: yyError = yyResult.select(yyError);
26254: if (yyResult.hasValue()) {
26255: final Node v$g$3 = yyResult.semanticValue();
26256:
26257: yyValue = new Action<Node>() {
26258: public Node run(Node v$1) {
26259: return GNode.create("MultiplicativeExpression",
26260: v$1, v$g$2, v$g$3);
26261: }
26262: };
26263:
26264: return yyResult.createValue(yyValue, yyError);
26265: }
26266: }
26267:
26268: // Done.
26269: return yyError;
26270: }
26271:
26272: // =========================================================================
26273:
26274: /**
26275: * Parse nonterminal xtc.lang.jeannie.DebuggerC.CastExpression.
26276: *
26277: * @param yyStart The index.
26278: * @return The result.
26279: * @throws IOException Signals an I/O error.
26280: */
26281: private Result pDebuggerC$CastExpression(final int yyStart)
26282: throws IOException {
26283:
26284: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
26285: if (null == yyColumn.chunk9)
26286: yyColumn.chunk9 = new Chunk9();
26287: if (null == yyColumn.chunk9.fDebuggerC$CastExpression)
26288: yyColumn.chunk9.fDebuggerC$CastExpression = pDebuggerC$CastExpression$1(yyStart);
26289: return yyColumn.chunk9.fDebuggerC$CastExpression;
26290: }
26291:
26292: /** Actually parse xtc.lang.jeannie.DebuggerC.CastExpression. */
26293: private Result pDebuggerC$CastExpression$1(final int yyStart)
26294: throws IOException {
26295:
26296: Result yyResult;
26297: int yyBase;
26298: Node yyValue;
26299: ParseError yyError = ParseError.DUMMY;
26300:
26301: // Alternative <Cast>.
26302:
26303: yyResult = pSymbol(yyStart);
26304: yyError = yyResult.select(yyError);
26305: if (yyResult.hasValue("(")) {
26306:
26307: yyResult = pDebuggerC$TypeName(yyResult.index);
26308: yyError = yyResult.select(yyError);
26309: if (yyResult.hasValue()) {
26310: final Node v$g$1 = yyResult.semanticValue();
26311:
26312: yyBase = yyResult.index;
26313: yyResult = pSymbol(yyBase);
26314: yyError = yyResult.select(yyError);
26315: if (yyResult.hasValue(")")) {
26316:
26317: yyResult = pDebuggerC$CastExpression(yyResult.index);
26318: yyError = yyResult.select(yyError);
26319: if (yyResult.hasValue()) {
26320: final Node v$g$2 = yyResult.semanticValue();
26321:
26322: yyValue = GNode.create("CastExpression", v$g$1,
26323: v$g$2);
26324: yyValue.setLocation(location(yyStart));
26325:
26326: return yyResult.createValue(yyValue, yyError);
26327: }
26328: } else {
26329: yyError = yyError.select("\")\" expected", yyBase);
26330: }
26331: }
26332: }
26333:
26334: // Alternative <Base>.
26335:
26336: yyResult = pDebuggerC$UnaryExpression(yyStart);
26337: yyError = yyResult.select(yyError);
26338: if (yyResult.hasValue()) {
26339: yyValue = yyResult.semanticValue();
26340:
26341: return yyResult.createValue(yyValue, yyError);
26342: }
26343:
26344: // Done.
26345: yyError = yyError.select("cast expression expected", yyStart);
26346: return yyError;
26347: }
26348:
26349: // =========================================================================
26350:
26351: /**
26352: * Parse nonterminal xtc.lang.jeannie.DebuggerC.UnaryExpression.
26353: *
26354: * @param yyStart The index.
26355: * @return The result.
26356: * @throws IOException Signals an I/O error.
26357: */
26358: private Result pDebuggerC$UnaryExpression(final int yyStart)
26359: throws IOException {
26360:
26361: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
26362: if (null == yyColumn.chunk9)
26363: yyColumn.chunk9 = new Chunk9();
26364: if (null == yyColumn.chunk9.fDebuggerC$UnaryExpression)
26365: yyColumn.chunk9.fDebuggerC$UnaryExpression = pDebuggerC$UnaryExpression$1(yyStart);
26366: return yyColumn.chunk9.fDebuggerC$UnaryExpression;
26367: }
26368:
26369: /** Actually parse xtc.lang.jeannie.DebuggerC.UnaryExpression. */
26370: private Result pDebuggerC$UnaryExpression$1(final int yyStart)
26371: throws IOException {
26372:
26373: Result yyResult;
26374: Result yyPredResult;
26375: boolean yyPredMatched;
26376: int yyBase;
26377: Node yyValue;
26378: ParseError yyError = ParseError.DUMMY;
26379:
26380: // Alternative 1.
26381:
26382: yyResult = pKeyword(yyStart);
26383: yyError = yyResult.select(yyError);
26384: if (yyResult.hasValue("sizeof")) {
26385:
26386: final int yyChoice1 = yyResult.index;
26387:
26388: // Nested alternative 1.
26389:
26390: yyBase = yyChoice1;
26391: yyResult = pSymbol(yyBase);
26392: yyError = yyResult.select(yyError);
26393: if (yyResult.hasValue("(")) {
26394:
26395: yyResult = pDebuggerC$TypeName(yyResult.index);
26396: yyError = yyResult.select(yyError);
26397: if (yyResult.hasValue()) {
26398: final Node v$g$1 = yyResult.semanticValue();
26399:
26400: yyBase = yyResult.index;
26401: yyResult = pSymbol(yyBase);
26402: yyError = yyResult.select(yyError);
26403: if (yyResult.hasValue(")")) {
26404:
26405: yyPredMatched = false;
26406:
26407: yyPredResult = pSymbol(yyResult.index);
26408: if (yyPredResult.hasValue("{")) {
26409:
26410: yyPredMatched = true;
26411: }
26412:
26413: if (!yyPredMatched) {
26414:
26415: yyValue = GNode.create("SizeofExpression",
26416: v$g$1);
26417: yyValue.setLocation(location(yyStart));
26418:
26419: return yyResult.createValue(yyValue,
26420: yyError);
26421: } else {
26422: yyError = yyError.select(
26423: "unary expression expected",
26424: yyStart);
26425: }
26426: } else {
26427: yyError = yyError.select("\")\" expected",
26428: yyBase);
26429: }
26430: }
26431: } else {
26432: yyError = yyError.select("\"(\" expected", yyBase);
26433: }
26434:
26435: // Nested alternative 2.
26436:
26437: yyResult = pDebuggerC$UnaryExpression(yyChoice1);
26438: yyError = yyResult.select(yyError);
26439: if (yyResult.hasValue()) {
26440: final Node v$g$2 = yyResult.semanticValue();
26441:
26442: yyValue = GNode.create("SizeofExpression", v$g$2);
26443: yyValue.setLocation(location(yyStart));
26444:
26445: return yyResult.createValue(yyValue, yyError);
26446: }
26447: }
26448:
26449: // Alternative 2.
26450:
26451: yyResult = p$$Shared17(yyStart);
26452: yyError = yyResult.select(yyError);
26453: if (yyResult.hasValue()) {
26454:
26455: final int yyChoice1 = yyResult.index;
26456:
26457: // Nested alternative 1.
26458:
26459: yyBase = yyChoice1;
26460: yyResult = pSymbol(yyBase);
26461: yyError = yyResult.select(yyError);
26462: if (yyResult.hasValue("(")) {
26463:
26464: yyResult = pDebuggerC$TypeName(yyResult.index);
26465: yyError = yyResult.select(yyError);
26466: if (yyResult.hasValue()) {
26467: final Node v$g$1 = yyResult.semanticValue();
26468:
26469: yyBase = yyResult.index;
26470: yyResult = pSymbol(yyBase);
26471: yyError = yyResult.select(yyError);
26472: if (yyResult.hasValue(")")) {
26473:
26474: yyPredMatched = false;
26475:
26476: yyPredResult = pSymbol(yyResult.index);
26477: if (yyPredResult.hasValue("{")) {
26478:
26479: yyPredMatched = true;
26480: }
26481:
26482: if (!yyPredMatched) {
26483:
26484: yyValue = GNode.create("AlignofExpression",
26485: v$g$1);
26486: yyValue.setLocation(location(yyStart));
26487:
26488: return yyResult.createValue(yyValue,
26489: yyError);
26490: } else {
26491: yyError = yyError.select(
26492: "unary expression expected",
26493: yyStart);
26494: }
26495: } else {
26496: yyError = yyError.select("\")\" expected",
26497: yyBase);
26498: }
26499: }
26500: } else {
26501: yyError = yyError.select("\"(\" expected", yyBase);
26502: }
26503:
26504: // Nested alternative 2.
26505:
26506: yyResult = pDebuggerC$UnaryExpression(yyChoice1);
26507: yyError = yyResult.select(yyError);
26508: if (yyResult.hasValue()) {
26509: final Node v$g$2 = yyResult.semanticValue();
26510:
26511: yyValue = GNode.create("AlignofExpression", v$g$2);
26512: yyValue.setLocation(location(yyStart));
26513:
26514: return yyResult.createValue(yyValue, yyError);
26515: }
26516: }
26517:
26518: // Alternative 3.
26519:
26520: yyResult = pKeyword(yyStart);
26521: yyError = yyResult.select(yyError);
26522: if (yyResult.hasValue("__builtin_offsetof")) {
26523:
26524: yyBase = yyResult.index;
26525: yyResult = pSymbol(yyBase);
26526: yyError = yyResult.select(yyError);
26527: if (yyResult.hasValue("(")) {
26528:
26529: yyResult = pDebuggerC$TypeName(yyResult.index);
26530: yyError = yyResult.select(yyError);
26531: if (yyResult.hasValue()) {
26532: final Node v$g$1 = yyResult.semanticValue();
26533:
26534: yyBase = yyResult.index;
26535: yyResult = pSymbol(yyBase);
26536: yyError = yyResult.select(yyError);
26537: if (yyResult.hasValue(",")) {
26538:
26539: yyResult = pDebuggerC$PostfixExpression(yyResult.index);
26540: yyError = yyResult.select(yyError);
26541: if (yyResult.hasValue()) {
26542: final Node v$g$2 = yyResult.semanticValue();
26543:
26544: yyBase = yyResult.index;
26545: yyResult = pSymbol(yyBase);
26546: yyError = yyResult.select(yyError);
26547: if (yyResult.hasValue(")")) {
26548:
26549: yyValue = GNode.create(
26550: "OffsetofExpression", v$g$1,
26551: v$g$2);
26552: yyValue.setLocation(location(yyStart));
26553:
26554: return yyResult.createValue(yyValue,
26555: yyError);
26556: } else {
26557: yyError = yyError.select(
26558: "\")\" expected", yyBase);
26559: }
26560: }
26561: } else {
26562: yyError = yyError.select("\",\" expected",
26563: yyBase);
26564: }
26565: }
26566: } else {
26567: yyError = yyError.select("\"(\" expected", yyBase);
26568: }
26569: }
26570:
26571: // Alternative 4.
26572:
26573: yyResult = pKeyword(yyStart);
26574: yyError = yyResult.select(yyError);
26575: if (yyResult.hasValue("__builtin_types_compatible_p")) {
26576:
26577: yyBase = yyResult.index;
26578: yyResult = pSymbol(yyBase);
26579: yyError = yyResult.select(yyError);
26580: if (yyResult.hasValue("(")) {
26581:
26582: yyResult = pDebuggerC$TypeName(yyResult.index);
26583: yyError = yyResult.select(yyError);
26584: if (yyResult.hasValue()) {
26585: final Node v$g$1 = yyResult.semanticValue();
26586:
26587: yyBase = yyResult.index;
26588: yyResult = pSymbol(yyBase);
26589: yyError = yyResult.select(yyError);
26590: if (yyResult.hasValue(",")) {
26591:
26592: yyResult = pDebuggerC$TypeName(yyResult.index);
26593: yyError = yyResult.select(yyError);
26594: if (yyResult.hasValue()) {
26595: final Node v$g$2 = yyResult.semanticValue();
26596:
26597: yyBase = yyResult.index;
26598: yyResult = pSymbol(yyBase);
26599: yyError = yyResult.select(yyError);
26600: if (yyResult.hasValue(")")) {
26601:
26602: yyValue = GNode.create(
26603: "TypeCompatibilityExpression",
26604: v$g$1, v$g$2);
26605: yyValue.setLocation(location(yyStart));
26606:
26607: return yyResult.createValue(yyValue,
26608: yyError);
26609: } else {
26610: yyError = yyError.select(
26611: "\")\" expected", yyBase);
26612: }
26613: }
26614: } else {
26615: yyError = yyError.select("\",\" expected",
26616: yyBase);
26617: }
26618: }
26619: } else {
26620: yyError = yyError.select("\"(\" expected", yyBase);
26621: }
26622: }
26623:
26624: // Alternative 5.
26625:
26626: yyResult = pSymbol(yyStart);
26627: yyError = yyResult.select(yyError);
26628: if (yyResult.hasValue("-")) {
26629:
26630: yyResult = pDebuggerC$CastExpression(yyResult.index);
26631: yyError = yyResult.select(yyError);
26632: if (yyResult.hasValue()) {
26633: final Node v$g$1 = yyResult.semanticValue();
26634:
26635: yyValue = GNode.create("UnaryMinusExpression", v$g$1);
26636: yyValue.setLocation(location(yyStart));
26637:
26638: return yyResult.createValue(yyValue, yyError);
26639: }
26640: }
26641:
26642: // Alternative 6.
26643:
26644: yyResult = pSymbol(yyStart);
26645: yyError = yyResult.select(yyError);
26646: if (yyResult.hasValue("+")) {
26647:
26648: yyResult = pDebuggerC$CastExpression(yyResult.index);
26649: yyError = yyResult.select(yyError);
26650: if (yyResult.hasValue()) {
26651: final Node v$g$1 = yyResult.semanticValue();
26652:
26653: yyValue = GNode.create("UnaryPlusExpression", v$g$1);
26654: yyValue.setLocation(location(yyStart));
26655:
26656: return yyResult.createValue(yyValue, yyError);
26657: }
26658: }
26659:
26660: // Alternative <JavaInCExpression>.
26661:
26662: yyResult = pDebuggerC$JavaInCExpression(yyStart);
26663: yyError = yyResult.select(yyError);
26664: if (yyResult.hasValue()) {
26665: yyValue = yyResult.semanticValue();
26666:
26667: return yyResult.createValue(yyValue, yyError);
26668: }
26669:
26670: // Alternative 8.
26671:
26672: yyResult = pSymbol(yyStart);
26673: yyError = yyResult.select(yyError);
26674: if (yyResult.hasValue("!")) {
26675:
26676: yyResult = pDebuggerC$CastExpression(yyResult.index);
26677: yyError = yyResult.select(yyError);
26678: if (yyResult.hasValue()) {
26679: final Node v$g$1 = yyResult.semanticValue();
26680:
26681: yyValue = GNode.create("LogicalNegationExpression",
26682: v$g$1);
26683: yyValue.setLocation(location(yyStart));
26684:
26685: return yyResult.createValue(yyValue, yyError);
26686: }
26687: }
26688:
26689: // Alternative 9.
26690:
26691: yyResult = pSymbol(yyStart);
26692: yyError = yyResult.select(yyError);
26693: if (yyResult.hasValue("~")) {
26694:
26695: yyResult = pDebuggerC$CastExpression(yyResult.index);
26696: yyError = yyResult.select(yyError);
26697: if (yyResult.hasValue()) {
26698: final Node v$g$1 = yyResult.semanticValue();
26699:
26700: yyValue = GNode.create("BitwiseNegationExpression",
26701: v$g$1);
26702: yyValue.setLocation(location(yyStart));
26703:
26704: return yyResult.createValue(yyValue, yyError);
26705: }
26706: }
26707:
26708: // Alternative 10.
26709:
26710: yyResult = pSymbol(yyStart);
26711: yyError = yyResult.select(yyError);
26712: if (yyResult.hasValue("&")) {
26713:
26714: yyResult = pDebuggerC$CastExpression(yyResult.index);
26715: yyError = yyResult.select(yyError);
26716: if (yyResult.hasValue()) {
26717: final Node v$g$1 = yyResult.semanticValue();
26718:
26719: yyValue = GNode.create("AddressExpression", v$g$1);
26720: yyValue.setLocation(location(yyStart));
26721:
26722: return yyResult.createValue(yyValue, yyError);
26723: }
26724: }
26725:
26726: // Alternative 11.
26727:
26728: if (GCC) {
26729:
26730: yyResult = pSymbol(yyStart);
26731: yyError = yyResult.select(yyError);
26732: if (yyResult.hasValue("&&")) {
26733:
26734: yyResult = pCIdentifier$Identifier(yyResult.index);
26735: yyError = yyResult.select(yyError);
26736: if (yyResult.hasValue()) {
26737: final String v$g$1 = yyResult.semanticValue();
26738:
26739: yyValue = GNode.create("LabelAddressExpression",
26740: v$g$1);
26741: yyValue.setLocation(location(yyStart));
26742:
26743: return yyResult.createValue(yyValue, yyError);
26744: }
26745: }
26746: }
26747:
26748: // Alternative 12.
26749:
26750: yyResult = pSymbol(yyStart);
26751: yyError = yyResult.select(yyError);
26752: if (yyResult.hasValue("*")) {
26753:
26754: yyResult = pDebuggerC$CastExpression(yyResult.index);
26755: yyError = yyResult.select(yyError);
26756: if (yyResult.hasValue()) {
26757: final Node v$g$1 = yyResult.semanticValue();
26758:
26759: yyValue = GNode.create("IndirectionExpression", v$g$1);
26760: yyValue.setLocation(location(yyStart));
26761:
26762: return yyResult.createValue(yyValue, yyError);
26763: }
26764: }
26765:
26766: // Alternative 13.
26767:
26768: yyResult = pSymbol(yyStart);
26769: yyError = yyResult.select(yyError);
26770: if (yyResult.hasValue("++")) {
26771:
26772: yyResult = pDebuggerC$UnaryExpression(yyResult.index);
26773: yyError = yyResult.select(yyError);
26774: if (yyResult.hasValue()) {
26775: final Node v$g$1 = yyResult.semanticValue();
26776:
26777: yyValue = GNode.create("PreincrementExpression", v$g$1);
26778: yyValue.setLocation(location(yyStart));
26779:
26780: return yyResult.createValue(yyValue, yyError);
26781: }
26782: }
26783:
26784: // Alternative 14.
26785:
26786: yyResult = pSymbol(yyStart);
26787: yyError = yyResult.select(yyError);
26788: if (yyResult.hasValue("--")) {
26789:
26790: yyResult = pDebuggerC$UnaryExpression(yyResult.index);
26791: yyError = yyResult.select(yyError);
26792: if (yyResult.hasValue()) {
26793: final Node v$g$1 = yyResult.semanticValue();
26794:
26795: yyValue = GNode.create("PredecrementExpression", v$g$1);
26796: yyValue.setLocation(location(yyStart));
26797:
26798: return yyResult.createValue(yyValue, yyError);
26799: }
26800: }
26801:
26802: // Alternative 15.
26803:
26804: if (GCC) {
26805:
26806: yyResult = pKeyword(yyStart);
26807: yyError = yyResult.select(yyError);
26808: if (yyResult.hasValue("__extension__")) {
26809:
26810: yyResult = pDebuggerC$CastExpression(yyResult.index);
26811: yyError = yyResult.select(yyError);
26812: if (yyResult.hasValue()) {
26813: final Node v$g$1 = yyResult.semanticValue();
26814:
26815: yyValue = GNode
26816: .create("ExtensionExpression", v$g$1);
26817: yyValue.setLocation(location(yyStart));
26818:
26819: return yyResult.createValue(yyValue, yyError);
26820: }
26821: }
26822: }
26823:
26824: // Alternative <Base>.
26825:
26826: yyResult = pDebuggerC$PostfixExpression(yyStart);
26827: yyError = yyResult.select(yyError);
26828: if (yyResult.hasValue()) {
26829: yyValue = yyResult.semanticValue();
26830:
26831: return yyResult.createValue(yyValue, yyError);
26832: }
26833:
26834: // Done.
26835: yyError = yyError.select("unary expression expected", yyStart);
26836: return yyError;
26837: }
26838:
26839: // =========================================================================
26840:
26841: /**
26842: * Parse nonterminal xtc.lang.jeannie.DebuggerC.PostfixExpression.
26843: *
26844: * @param yyStart The index.
26845: * @return The result.
26846: * @throws IOException Signals an I/O error.
26847: */
26848: private Result pDebuggerC$PostfixExpression(final int yyStart)
26849: throws IOException {
26850:
26851: Result yyResult;
26852: int yyRepetition1;
26853: Pair<Action<Node>> yyRepValue1;
26854: Node yyValue;
26855: ParseError yyError = ParseError.DUMMY;
26856:
26857: // Alternative <Compound>.
26858:
26859: yyResult = pDebuggerC$CompoundLiteral(yyStart);
26860: yyError = yyResult.select(yyError);
26861: if (yyResult.hasValue()) {
26862: final Node v$g$6 = yyResult.semanticValue();
26863:
26864: yyRepetition1 = yyResult.index;
26865: yyRepValue1 = Pair.empty();
26866: while (true) {
26867:
26868: yyResult = pDebuggerC$PostfixExpression$$Tail1(yyRepetition1);
26869: yyError = yyResult.select(yyError);
26870: if (yyResult.hasValue()) {
26871: final Action<Node> v$7 = yyResult.semanticValue();
26872:
26873: yyRepetition1 = yyResult.index;
26874: yyRepValue1 = new Pair<Action<Node>>(v$7,
26875: yyRepValue1);
26876: continue;
26877: }
26878: break;
26879: }
26880: { // Start scope for v$8.
26881: final Pair<Action<Node>> v$8 = yyRepValue1.reverse();
26882:
26883: yyValue = apply(v$8, v$g$6, yyStart);
26884:
26885: return new SemanticValue(yyValue, yyRepetition1,
26886: yyError);
26887: } // End scope for v$8.
26888: }
26889:
26890: // Alternative <Primary>.
26891:
26892: yyResult = pDebuggerC$PrimaryExpression(yyStart);
26893: yyError = yyResult.select(yyError);
26894: if (yyResult.hasValue()) {
26895: final Node v$g$9 = yyResult.semanticValue();
26896:
26897: yyRepetition1 = yyResult.index;
26898: yyRepValue1 = Pair.empty();
26899: while (true) {
26900:
26901: yyResult = pDebuggerC$PostfixExpression$$Tail1(yyRepetition1);
26902: yyError = yyResult.select(yyError);
26903: if (yyResult.hasValue()) {
26904: final Action<Node> v$10 = yyResult.semanticValue();
26905:
26906: yyRepetition1 = yyResult.index;
26907: yyRepValue1 = new Pair<Action<Node>>(v$10,
26908: yyRepValue1);
26909: continue;
26910: }
26911: break;
26912: }
26913: { // Start scope for v$11.
26914: final Pair<Action<Node>> v$11 = yyRepValue1.reverse();
26915:
26916: yyValue = apply(v$11, v$g$9, yyStart);
26917:
26918: return new SemanticValue(yyValue, yyRepetition1,
26919: yyError);
26920: } // End scope for v$11.
26921: }
26922:
26923: // Done.
26924: return yyError;
26925: }
26926:
26927: // =========================================================================
26928:
26929: /**
26930: * Parse synthetic nonterminal DebuggerC.PostfixExpression$$Tail1.
26931: *
26932: * @param yyStart The index.
26933: * @return The result.
26934: * @throws IOException Signals an I/O error.
26935: */
26936: private Result pDebuggerC$PostfixExpression$$Tail1(final int yyStart)
26937: throws IOException {
26938:
26939: Result yyResult;
26940: int yyBase;
26941: int yyOption1;
26942: Node yyOpValue1;
26943: Action<Node> yyValue;
26944: ParseError yyError = ParseError.DUMMY;
26945:
26946: // Alternative 1.
26947:
26948: yyResult = pSymbol(yyStart);
26949: yyError = yyResult.select(yyError);
26950: if (yyResult.hasValue("[")) {
26951:
26952: yyResult = pDebuggerC$CommaExpression(yyResult.index);
26953: yyError = yyResult.select(yyError);
26954: if (yyResult.hasValue()) {
26955: final Node v$g$2 = yyResult.semanticValue();
26956:
26957: yyBase = yyResult.index;
26958: yyResult = pSymbol(yyBase);
26959: yyError = yyResult.select(yyError);
26960: if (yyResult.hasValue("]")) {
26961:
26962: yyValue = new Action<Node>() {
26963: public Node run(Node v$1) {
26964: return GNode.create("SubscriptExpression",
26965: v$1, v$g$2);
26966: }
26967: };
26968:
26969: return yyResult.createValue(yyValue, yyError);
26970: } else {
26971: yyError = yyError.select("\"]\" expected", yyBase);
26972: }
26973: }
26974: }
26975:
26976: // Alternative 2.
26977:
26978: yyResult = pSymbol(yyStart);
26979: yyError = yyResult.select(yyError);
26980: if (yyResult.hasValue(".")) {
26981:
26982: yyResult = pCIdentifier$Identifier(yyResult.index);
26983: yyError = yyResult.select(yyError);
26984: if (yyResult.hasValue()) {
26985: final String v$g$3 = yyResult.semanticValue();
26986:
26987: yyValue = new Action<Node>() {
26988: public Node run(Node v$1) {
26989: return GNode.create("DirectComponentSelection",
26990: v$1, v$g$3);
26991: }
26992: };
26993:
26994: return yyResult.createValue(yyValue, yyError);
26995: }
26996: }
26997:
26998: // Alternative 3.
26999:
27000: yyResult = pSymbol(yyStart);
27001: yyError = yyResult.select(yyError);
27002: if (yyResult.hasValue("->")) {
27003:
27004: yyResult = pCIdentifier$Identifier(yyResult.index);
27005: yyError = yyResult.select(yyError);
27006: if (yyResult.hasValue()) {
27007: final String v$g$4 = yyResult.semanticValue();
27008:
27009: yyValue = new Action<Node>() {
27010: public Node run(Node v$1) {
27011: return GNode.create(
27012: "IndirectComponentSelection", v$1,
27013: v$g$4);
27014: }
27015: };
27016:
27017: return yyResult.createValue(yyValue, yyError);
27018: }
27019: }
27020:
27021: // Alternative 4.
27022:
27023: yyResult = pSymbol(yyStart);
27024: yyError = yyResult.select(yyError);
27025: if (yyResult.hasValue("(")) {
27026:
27027: yyOption1 = yyResult.index;
27028: yyOpValue1 = null;
27029:
27030: yyResult = pDebuggerC$ExpressionList(yyOption1);
27031: yyError = yyResult.select(yyError);
27032: if (yyResult.hasValue()) {
27033: final Node v$el$1 = yyResult.semanticValue();
27034:
27035: yyOption1 = yyResult.index;
27036: yyOpValue1 = v$el$1;
27037: }
27038: { // Start scope for v$g$5.
27039: final Node v$g$5 = yyOpValue1;
27040:
27041: yyBase = yyOption1;
27042: yyResult = pSymbol(yyBase);
27043: yyError = yyResult.select(yyError);
27044: if (yyResult.hasValue(")")) {
27045:
27046: yyValue = new Action<Node>() {
27047: public Node run(Node v$1) {
27048: return GNode.create("FunctionCall", v$1,
27049: v$g$5);
27050: }
27051: };
27052:
27053: return yyResult.createValue(yyValue, yyError);
27054: } else {
27055: yyError = yyError.select("\")\" expected", yyBase);
27056: }
27057: } // End scope for v$g$5.
27058: }
27059:
27060: // Alternative 5.
27061:
27062: yyResult = pSymbol(yyStart);
27063: yyError = yyResult.select(yyError);
27064: if (yyResult.hasValue("++")) {
27065:
27066: yyValue = new Action<Node>() {
27067: public Node run(Node v$1) {
27068: return GNode.create("PostincrementExpression", v$1);
27069: }
27070: };
27071:
27072: return yyResult.createValue(yyValue, yyError);
27073: }
27074:
27075: // Alternative 6.
27076:
27077: yyResult = pSymbol(yyStart);
27078: yyError = yyResult.select(yyError);
27079: if (yyResult.hasValue("--")) {
27080:
27081: yyValue = new Action<Node>() {
27082: public Node run(Node v$1) {
27083: return GNode.create("PostdecrementExpression", v$1);
27084: }
27085: };
27086:
27087: return yyResult.createValue(yyValue, yyError);
27088: }
27089:
27090: // Done.
27091: yyError = yyError
27092: .select("postfix expression expected", yyStart);
27093: return yyError;
27094: }
27095:
27096: // =========================================================================
27097:
27098: /**
27099: * Parse nonterminal xtc.lang.jeannie.DebuggerC.ExpressionList.
27100: *
27101: * @param yyStart The index.
27102: * @return The result.
27103: * @throws IOException Signals an I/O error.
27104: */
27105: private Result pDebuggerC$ExpressionList(final int yyStart)
27106: throws IOException {
27107:
27108: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
27109: if (null == yyColumn.chunk9)
27110: yyColumn.chunk9 = new Chunk9();
27111: if (null == yyColumn.chunk9.fDebuggerC$ExpressionList)
27112: yyColumn.chunk9.fDebuggerC$ExpressionList = pDebuggerC$ExpressionList$1(yyStart);
27113: return yyColumn.chunk9.fDebuggerC$ExpressionList;
27114: }
27115:
27116: /** Actually parse xtc.lang.jeannie.DebuggerC.ExpressionList. */
27117: private Result pDebuggerC$ExpressionList$1(final int yyStart)
27118: throws IOException {
27119:
27120: Result yyResult;
27121: Node yyValue;
27122: ParseError yyError = ParseError.DUMMY;
27123:
27124: // Alternative <Expressions>.
27125:
27126: yyResult = pDebuggerC$AssignmentExpression(yyStart);
27127: yyError = yyResult.select(yyError);
27128: if (yyResult.hasValue()) {
27129: final Node v$g$1 = yyResult.semanticValue();
27130:
27131: yyResult = pDebuggerC$ExpressionList$$Star1(yyResult.index);
27132: yyError = yyResult.select(yyError);
27133: if (yyResult.hasValue()) {
27134: final Pair<Node> v$g$2 = yyResult.semanticValue();
27135:
27136: yyValue = GNode.createFromPair("ExpressionList", v$g$1,
27137: v$g$2);
27138: yyValue.setLocation(location(yyStart));
27139:
27140: return yyResult.createValue(yyValue, yyError);
27141: }
27142: }
27143:
27144: // Done.
27145: return yyError;
27146: }
27147:
27148: // =========================================================================
27149:
27150: /**
27151: * Parse synthetic nonterminal DebuggerC.ExpressionList$$Star1.
27152: *
27153: * @param yyStart The index.
27154: * @return The result.
27155: * @throws IOException Signals an I/O error.
27156: */
27157: private Result pDebuggerC$ExpressionList$$Star1(final int yyStart)
27158: throws IOException {
27159:
27160: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
27161: if (null == yyColumn.chunk10)
27162: yyColumn.chunk10 = new Chunk10();
27163: if (null == yyColumn.chunk10.fDebuggerC$ExpressionList$$Star1)
27164: yyColumn.chunk10.fDebuggerC$ExpressionList$$Star1 = pDebuggerC$ExpressionList$$Star1$1(yyStart);
27165: return yyColumn.chunk10.fDebuggerC$ExpressionList$$Star1;
27166: }
27167:
27168: /** Actually parse DebuggerC.ExpressionList$$Star1. */
27169: private Result pDebuggerC$ExpressionList$$Star1$1(final int yyStart)
27170: throws IOException {
27171:
27172: Result yyResult;
27173: Pair<Node> yyValue;
27174: ParseError yyError = ParseError.DUMMY;
27175:
27176: // Alternative 1.
27177:
27178: yyResult = pSymbol(yyStart);
27179: yyError = yyResult.select(yyError);
27180: if (yyResult.hasValue(",")) {
27181:
27182: yyResult = pDebuggerC$AssignmentExpression(yyResult.index);
27183: yyError = yyResult.select(yyError);
27184: if (yyResult.hasValue()) {
27185: final Node v$el$1 = yyResult.semanticValue();
27186:
27187: yyResult = pDebuggerC$ExpressionList$$Star1(yyResult.index);
27188: yyError = yyResult.select(yyError);
27189: if (yyResult.hasValue()) {
27190: final Pair<Node> v$2 = yyResult.semanticValue();
27191:
27192: yyValue = new Pair<Node>(v$el$1, v$2);
27193:
27194: return yyResult.createValue(yyValue, yyError);
27195: }
27196: }
27197: }
27198:
27199: // Alternative 2.
27200:
27201: yyValue = Pair.empty();
27202:
27203: return new SemanticValue(yyValue, yyStart, yyError);
27204: }
27205:
27206: // =========================================================================
27207:
27208: /**
27209: * Parse nonterminal xtc.lang.jeannie.DebuggerC.CompoundLiteral.
27210: *
27211: * @param yyStart The index.
27212: * @return The result.
27213: * @throws IOException Signals an I/O error.
27214: */
27215: private Result pDebuggerC$CompoundLiteral(final int yyStart)
27216: throws IOException {
27217:
27218: Result yyResult;
27219: int yyBase;
27220: int yyOption1;
27221: Node yyValue;
27222: ParseError yyError = ParseError.DUMMY;
27223:
27224: // Alternative 1.
27225:
27226: yyResult = pSymbol(yyStart);
27227: yyError = yyResult.select(yyError);
27228: if (yyResult.hasValue("(")) {
27229:
27230: yyResult = pDebuggerC$TypeName(yyResult.index);
27231: yyError = yyResult.select(yyError);
27232: if (yyResult.hasValue()) {
27233: final Node v$g$1 = yyResult.semanticValue();
27234:
27235: yyBase = yyResult.index;
27236: yyResult = pSymbol(yyBase);
27237: yyError = yyResult.select(yyError);
27238: if (yyResult.hasValue(")")) {
27239:
27240: yyBase = yyResult.index;
27241: yyResult = pSymbol(yyBase);
27242: yyError = yyResult.select(yyError);
27243: if (yyResult.hasValue("{")) {
27244:
27245: yyResult = pDebuggerC$InitializerList(yyResult.index);
27246: yyError = yyResult.select(yyError);
27247: if (yyResult.hasValue()) {
27248: final Node v$g$2 = yyResult.semanticValue();
27249:
27250: yyOption1 = yyResult.index;
27251:
27252: yyBase = yyOption1;
27253: yyResult = pSymbol(yyBase);
27254: yyError = yyResult.select(yyError);
27255: if (yyResult.hasValue(",")) {
27256:
27257: yyOption1 = yyResult.index;
27258: } else {
27259: yyError = yyError.select(
27260: "\",\" expected", yyBase);
27261: }
27262:
27263: yyBase = yyOption1;
27264: yyResult = pSymbol(yyBase);
27265: yyError = yyResult.select(yyError);
27266: if (yyResult.hasValue("}")) {
27267:
27268: yyValue = GNode
27269: .create("CompoundLiteral",
27270: v$g$1, v$g$2);
27271: yyValue.setLocation(location(yyStart));
27272:
27273: return yyResult.createValue(yyValue,
27274: yyError);
27275: } else {
27276: yyError = yyError.select(
27277: "\"}\" expected", yyBase);
27278: }
27279: }
27280: } else {
27281: yyError = yyError.select("\"{\" expected",
27282: yyBase);
27283: }
27284: } else {
27285: yyError = yyError.select("\")\" expected", yyBase);
27286: }
27287: }
27288: }
27289:
27290: // Done.
27291: yyError = yyError.select("compound literal expected", yyStart);
27292: return yyError;
27293: }
27294:
27295: // =========================================================================
27296:
27297: /**
27298: * Parse nonterminal xtc.lang.jeannie.DebuggerC.PrimaryExpression.
27299: *
27300: * @param yyStart The index.
27301: * @return The result.
27302: * @throws IOException Signals an I/O error.
27303: */
27304: private Result pDebuggerC$PrimaryExpression(final int yyStart)
27305: throws IOException {
27306:
27307: Result yyResult;
27308: int yyBase;
27309: Node yyValue;
27310: ParseError yyError = ParseError.DUMMY;
27311:
27312: // Alternative <Meta>.
27313:
27314: yyResult = pMetaVariable(yyStart);
27315: yyError = yyResult.select(yyError);
27316: if (yyResult.hasValue()) {
27317: yyValue = yyResult.semanticValue();
27318:
27319: return yyResult.createValue(yyValue, yyError);
27320: }
27321:
27322: // Alternative <Constant>.
27323:
27324: yyResult = pConstant(yyStart);
27325: yyError = yyResult.select(yyError);
27326: if (yyResult.hasValue()) {
27327: yyValue = yyResult.semanticValue();
27328:
27329: return yyResult.createValue(yyValue, yyError);
27330: }
27331:
27332: // Alternative 3.
27333:
27334: yyResult = pCIdentifier$Identifier(yyStart);
27335: yyError = yyResult.select(yyError);
27336: if (yyResult.hasValue()) {
27337: final String v$g$1 = yyResult.semanticValue();
27338:
27339: yyValue = GNode.create("PrimaryIdentifier", v$g$1);
27340: yyValue.setLocation(location(yyStart));
27341:
27342: return yyResult.createValue(yyValue, yyError);
27343: }
27344:
27345: // Alternative 4.
27346:
27347: if (GCC) {
27348:
27349: yyResult = pSymbol(yyStart);
27350: yyError = yyResult.select(yyError);
27351: if (yyResult.hasValue("(")) {
27352:
27353: yyResult = pDebuggerC$CompoundStatement(yyResult.index);
27354: yyError = yyResult.select(yyError);
27355: if (yyResult.hasValue()) {
27356: final Node v$g$1 = yyResult.semanticValue();
27357:
27358: yyBase = yyResult.index;
27359: yyResult = pSymbol(yyBase);
27360: yyError = yyResult.select(yyError);
27361: if (yyResult.hasValue(")")) {
27362:
27363: yyValue = GNode.create("StatementAsExpression",
27364: v$g$1);
27365: yyValue.setLocation(location(yyStart));
27366:
27367: return yyResult.createValue(yyValue, yyError);
27368: } else {
27369: yyError = yyError.select("\")\" expected",
27370: yyBase);
27371: }
27372: }
27373: }
27374: }
27375:
27376: // Alternative 5.
27377:
27378: yyResult = pKeyword(yyStart);
27379: yyError = yyResult.select(yyError);
27380: if (yyResult.hasValue("__builtin_va_arg")) {
27381:
27382: yyBase = yyResult.index;
27383: yyResult = pSymbol(yyBase);
27384: yyError = yyResult.select(yyError);
27385: if (yyResult.hasValue("(")) {
27386:
27387: yyResult = pDebuggerC$AssignmentExpression(yyResult.index);
27388: yyError = yyResult.select(yyError);
27389: if (yyResult.hasValue()) {
27390: final Node v$g$1 = yyResult.semanticValue();
27391:
27392: yyBase = yyResult.index;
27393: yyResult = pSymbol(yyBase);
27394: yyError = yyResult.select(yyError);
27395: if (yyResult.hasValue(",")) {
27396:
27397: yyResult = pDebuggerC$TypeName(yyResult.index);
27398: yyError = yyResult.select(yyError);
27399: if (yyResult.hasValue()) {
27400: final Node v$g$2 = yyResult.semanticValue();
27401:
27402: yyBase = yyResult.index;
27403: yyResult = pSymbol(yyBase);
27404: yyError = yyResult.select(yyError);
27405: if (yyResult.hasValue(")")) {
27406:
27407: yyValue = GNode.create(
27408: "VariableArgumentAccess",
27409: v$g$1, v$g$2);
27410: yyValue.setLocation(location(yyStart));
27411:
27412: return yyResult.createValue(yyValue,
27413: yyError);
27414: } else {
27415: yyError = yyError.select(
27416: "\")\" expected", yyBase);
27417: }
27418: }
27419: } else {
27420: yyError = yyError.select("\",\" expected",
27421: yyBase);
27422: }
27423: }
27424: } else {
27425: yyError = yyError.select("\"(\" expected", yyBase);
27426: }
27427: }
27428:
27429: // Alternative <ParenthesizedExpression>.
27430:
27431: yyResult = pSymbol(yyStart);
27432: yyError = yyResult.select(yyError);
27433: if (yyResult.hasValue("(")) {
27434:
27435: yyResult = pDebuggerC$CommaExpression(yyResult.index);
27436: yyError = yyResult.select(yyError);
27437: if (yyResult.hasValue()) {
27438: yyValue = yyResult.semanticValue();
27439:
27440: yyBase = yyResult.index;
27441: yyResult = pSymbol(yyBase);
27442: yyError = yyResult.select(yyError);
27443: if (yyResult.hasValue(")")) {
27444:
27445: return yyResult.createValue(yyValue, yyError);
27446: } else {
27447: yyError = yyError.select("\")\" expected", yyBase);
27448: }
27449: }
27450: }
27451:
27452: // Done.
27453: yyError = yyError
27454: .select("primary expression expected", yyStart);
27455: return yyError;
27456: }
27457:
27458: // =========================================================================
27459:
27460: /**
27461: * Parse nonterminal xtc.lang.jeannie.DebuggerC.PrimaryIdentifier.
27462: *
27463: * @param yyStart The index.
27464: * @return The result.
27465: * @throws IOException Signals an I/O error.
27466: */
27467: private Result pDebuggerC$PrimaryIdentifier(final int yyStart)
27468: throws IOException {
27469:
27470: Result yyResult;
27471: Node yyValue;
27472: ParseError yyError = ParseError.DUMMY;
27473:
27474: // Alternative 1.
27475:
27476: yyResult = pCIdentifier$Identifier(yyStart);
27477: yyError = yyResult.select(yyError);
27478: if (yyResult.hasValue()) {
27479: final String v$g$1 = yyResult.semanticValue();
27480:
27481: yyValue = GNode.create("PrimaryIdentifier", v$g$1);
27482: yyValue.setLocation(location(yyStart));
27483:
27484: return yyResult.createValue(yyValue, yyError);
27485: }
27486:
27487: // Done.
27488: return yyError;
27489: }
27490:
27491: // =========================================================================
27492:
27493: /**
27494: * Parse nonterminal xtc.lang.jeannie.DebuggerC.SimpleAssemblyExpression.
27495: *
27496: * @param yyStart The index.
27497: * @return The result.
27498: * @throws IOException Signals an I/O error.
27499: */
27500: private Result pDebuggerC$SimpleAssemblyExpression(final int yyStart)
27501: throws IOException {
27502:
27503: Result yyResult;
27504: int yyBase;
27505: Node yyValue;
27506: ParseError yyError = ParseError.DUMMY;
27507:
27508: // Alternative 1.
27509:
27510: yyResult = p$$Shared18(yyStart);
27511: yyError = yyResult.select(yyError);
27512: if (yyResult.hasValue()) {
27513:
27514: yyBase = yyResult.index;
27515: yyResult = pSymbol(yyBase);
27516: yyError = yyResult.select(yyError);
27517: if (yyResult.hasValue("(")) {
27518:
27519: yyResult = pCConstant$StringConstant(yyResult.index);
27520: yyError = yyResult.select(yyError);
27521: if (yyResult.hasValue()) {
27522: final Node v$g$1 = yyResult.semanticValue();
27523:
27524: yyBase = yyResult.index;
27525: yyResult = pSymbol(yyBase);
27526: yyError = yyResult.select(yyError);
27527: if (yyResult.hasValue(")")) {
27528:
27529: yyValue = GNode.create(
27530: "SimpleAssemblyExpression", v$g$1);
27531: yyValue.setLocation(location(yyStart));
27532:
27533: return yyResult.createValue(yyValue, yyError);
27534: } else {
27535: yyError = yyError.select("\")\" expected",
27536: yyBase);
27537: }
27538: }
27539: } else {
27540: yyError = yyError.select("\"(\" expected", yyBase);
27541: }
27542: }
27543:
27544: // Done.
27545: return yyError;
27546: }
27547:
27548: // =========================================================================
27549:
27550: /**
27551: * Parse nonterminal xtc.lang.jeannie.DebuggerC.AssemblyArgument.
27552: *
27553: * @param yyStart The index.
27554: * @return The result.
27555: * @throws IOException Signals an I/O error.
27556: */
27557: private Result pDebuggerC$AssemblyArgument(final int yyStart)
27558: throws IOException {
27559:
27560: Result yyResult;
27561: int yyBase;
27562: int yyOption1;
27563: Node yyOpValue1;
27564: Node yyValue;
27565: ParseError yyError = ParseError.DUMMY;
27566:
27567: // Alternative 1.
27568:
27569: yyResult = pCConstant$StringConstant(yyStart);
27570: yyError = yyResult.select(yyError);
27571: if (yyResult.hasValue()) {
27572: final Node v$g$1 = yyResult.semanticValue();
27573:
27574: final int yyChoice1 = yyResult.index;
27575:
27576: // Nested alternative 1.
27577:
27578: yyBase = yyChoice1;
27579: yyResult = pSymbol(yyBase);
27580: yyError = yyResult.select(yyError);
27581: if (yyResult.hasValue(":")) {
27582:
27583: yyOption1 = yyResult.index;
27584: yyOpValue1 = null;
27585:
27586: yyResult = pDebuggerC$AssemblyOperands(yyOption1);
27587: yyError = yyResult.select(yyError);
27588: if (yyResult.hasValue()) {
27589: final Node v$el$1 = yyResult.semanticValue();
27590:
27591: yyOption1 = yyResult.index;
27592: yyOpValue1 = v$el$1;
27593: }
27594: { // Start scope for v$g$2.
27595: final Node v$g$2 = yyOpValue1;
27596:
27597: final int yyChoice2 = yyOption1;
27598:
27599: // Nested alternative 1.
27600:
27601: yyBase = yyChoice2;
27602: yyResult = pSymbol(yyBase);
27603: yyError = yyResult.select(yyError);
27604: if (yyResult.hasValue(":")) {
27605:
27606: yyOption1 = yyResult.index;
27607: yyOpValue1 = null;
27608:
27609: yyResult = pDebuggerC$AssemblyOperands(yyOption1);
27610: yyError = yyResult.select(yyError);
27611: if (yyResult.hasValue()) {
27612: final Node v$el$2 = yyResult
27613: .semanticValue();
27614:
27615: yyOption1 = yyResult.index;
27616: yyOpValue1 = v$el$2;
27617: }
27618: { // Start scope for v$g$3.
27619: final Node v$g$3 = yyOpValue1;
27620:
27621: final int yyChoice3 = yyOption1;
27622:
27623: // Nested alternative 1.
27624:
27625: yyBase = yyChoice3;
27626: yyResult = pSymbol(yyBase);
27627: yyError = yyResult.select(yyError);
27628: if (yyResult.hasValue(":")) {
27629:
27630: yyResult = pDebuggerC$AssemblyClobbers(yyResult.index);
27631: yyError = yyResult.select(yyError);
27632: if (yyResult.hasValue()) {
27633: final Node v$g$4 = yyResult
27634: .semanticValue();
27635:
27636: yyValue = GNode.create(
27637: "AssemblyArgument", v$g$1,
27638: v$g$2, v$g$3, v$g$4);
27639: yyValue
27640: .setLocation(location(yyStart));
27641:
27642: return yyResult.createValue(
27643: yyValue, yyError);
27644: }
27645: } else {
27646: yyError = yyError.select(
27647: "\":\" expected", yyBase);
27648: }
27649:
27650: // Nested alternative 2.
27651:
27652: yyValue = GNode.create("AssemblyArgument",
27653: v$g$1, v$g$2, v$g$3);
27654: yyValue.setLocation(location(yyStart));
27655:
27656: return new SemanticValue(yyValue,
27657: yyChoice3, yyError);
27658: } // End scope for v$g$3.
27659: } else {
27660: yyError = yyError.select("\":\" expected",
27661: yyBase);
27662: }
27663:
27664: // Nested alternative 2.
27665:
27666: yyValue = GNode.create("AssemblyArgument", v$g$1,
27667: v$g$2);
27668: yyValue.setLocation(location(yyStart));
27669:
27670: return new SemanticValue(yyValue, yyChoice2,
27671: yyError);
27672: } // End scope for v$g$2.
27673: } else {
27674: yyError = yyError.select("\":\" expected", yyBase);
27675: }
27676:
27677: // Nested alternative 2.
27678:
27679: yyValue = GNode.create("AssemblyArgument", v$g$1);
27680: yyValue.setLocation(location(yyStart));
27681:
27682: return new SemanticValue(yyValue, yyChoice1, yyError);
27683: }
27684:
27685: // Done.
27686: return yyError;
27687: }
27688:
27689: // =========================================================================
27690:
27691: /**
27692: * Parse nonterminal xtc.lang.jeannie.DebuggerC.AssemblyOperands.
27693: *
27694: * @param yyStart The index.
27695: * @return The result.
27696: * @throws IOException Signals an I/O error.
27697: */
27698: private Result pDebuggerC$AssemblyOperands(final int yyStart)
27699: throws IOException {
27700:
27701: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
27702: if (null == yyColumn.chunk10)
27703: yyColumn.chunk10 = new Chunk10();
27704: if (null == yyColumn.chunk10.fDebuggerC$AssemblyOperands)
27705: yyColumn.chunk10.fDebuggerC$AssemblyOperands = pDebuggerC$AssemblyOperands$1(yyStart);
27706: return yyColumn.chunk10.fDebuggerC$AssemblyOperands;
27707: }
27708:
27709: /** Actually parse xtc.lang.jeannie.DebuggerC.AssemblyOperands. */
27710: private Result pDebuggerC$AssemblyOperands$1(final int yyStart)
27711: throws IOException {
27712:
27713: Result yyResult;
27714: Node yyValue;
27715: ParseError yyError = ParseError.DUMMY;
27716:
27717: // Alternative 1.
27718:
27719: yyResult = pDebuggerC$AssemblyOperand(yyStart);
27720: yyError = yyResult.select(yyError);
27721: if (yyResult.hasValue()) {
27722: final Node v$g$1 = yyResult.semanticValue();
27723:
27724: yyResult = pDebuggerC$AssemblyOperands$$Star1(yyResult.index);
27725: yyError = yyResult.select(yyError);
27726: if (yyResult.hasValue()) {
27727: final Pair<Node> v$g$2 = yyResult.semanticValue();
27728:
27729: yyValue = GNode.createFromPair("AssemblyOperands",
27730: v$g$1, v$g$2);
27731: yyValue.setLocation(location(yyStart));
27732:
27733: return yyResult.createValue(yyValue, yyError);
27734: }
27735: }
27736:
27737: // Done.
27738: return yyError;
27739: }
27740:
27741: // =========================================================================
27742:
27743: /**
27744: * Parse synthetic nonterminal DebuggerC.AssemblyOperands$$Star1.
27745: *
27746: * @param yyStart The index.
27747: * @return The result.
27748: * @throws IOException Signals an I/O error.
27749: */
27750: private Result pDebuggerC$AssemblyOperands$$Star1(final int yyStart)
27751: throws IOException {
27752:
27753: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
27754: if (null == yyColumn.chunk10)
27755: yyColumn.chunk10 = new Chunk10();
27756: if (null == yyColumn.chunk10.fDebuggerC$AssemblyOperands$$Star1)
27757: yyColumn.chunk10.fDebuggerC$AssemblyOperands$$Star1 = pDebuggerC$AssemblyOperands$$Star1$1(yyStart);
27758: return yyColumn.chunk10.fDebuggerC$AssemblyOperands$$Star1;
27759: }
27760:
27761: /** Actually parse DebuggerC.AssemblyOperands$$Star1. */
27762: private Result pDebuggerC$AssemblyOperands$$Star1$1(
27763: final int yyStart) throws IOException {
27764:
27765: Result yyResult;
27766: Pair<Node> yyValue;
27767: ParseError yyError = ParseError.DUMMY;
27768:
27769: // Alternative 1.
27770:
27771: yyResult = pSymbol(yyStart);
27772: yyError = yyResult.select(yyError);
27773: if (yyResult.hasValue(",")) {
27774:
27775: yyResult = pDebuggerC$AssemblyOperand(yyResult.index);
27776: yyError = yyResult.select(yyError);
27777: if (yyResult.hasValue()) {
27778: final Node v$el$1 = yyResult.semanticValue();
27779:
27780: yyResult = pDebuggerC$AssemblyOperands$$Star1(yyResult.index);
27781: yyError = yyResult.select(yyError);
27782: if (yyResult.hasValue()) {
27783: final Pair<Node> v$2 = yyResult.semanticValue();
27784:
27785: yyValue = new Pair<Node>(v$el$1, v$2);
27786:
27787: return yyResult.createValue(yyValue, yyError);
27788: }
27789: }
27790: }
27791:
27792: // Alternative 2.
27793:
27794: yyValue = Pair.empty();
27795:
27796: return new SemanticValue(yyValue, yyStart, yyError);
27797: }
27798:
27799: // =========================================================================
27800:
27801: /**
27802: * Parse nonterminal xtc.lang.jeannie.DebuggerC.AssemblyOperand.
27803: *
27804: * @param yyStart The index.
27805: * @return The result.
27806: * @throws IOException Signals an I/O error.
27807: */
27808: private Result pDebuggerC$AssemblyOperand(final int yyStart)
27809: throws IOException {
27810:
27811: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
27812: if (null == yyColumn.chunk10)
27813: yyColumn.chunk10 = new Chunk10();
27814: if (null == yyColumn.chunk10.fDebuggerC$AssemblyOperand)
27815: yyColumn.chunk10.fDebuggerC$AssemblyOperand = pDebuggerC$AssemblyOperand$1(yyStart);
27816: return yyColumn.chunk10.fDebuggerC$AssemblyOperand;
27817: }
27818:
27819: /** Actually parse xtc.lang.jeannie.DebuggerC.AssemblyOperand. */
27820: private Result pDebuggerC$AssemblyOperand$1(final int yyStart)
27821: throws IOException {
27822:
27823: Result yyResult;
27824: int yyBase;
27825: int yyOption1;
27826: String yyOpValue1;
27827: Node yyValue;
27828: ParseError yyError = ParseError.DUMMY;
27829:
27830: // Alternative 1.
27831:
27832: yyOption1 = yyStart;
27833: yyOpValue1 = null;
27834:
27835: yyBase = yyOption1;
27836: yyResult = pSymbol(yyBase);
27837: yyError = yyResult.select(yyError);
27838: if (yyResult.hasValue("[")) {
27839:
27840: yyResult = pCIdentifier$Word(yyResult.index);
27841: yyError = yyResult.select(yyError);
27842: if (yyResult.hasValue()) {
27843: final String v$el$1 = yyResult.semanticValue();
27844:
27845: yyBase = yyResult.index;
27846: yyResult = pSymbol(yyBase);
27847: yyError = yyResult.select(yyError);
27848: if (yyResult.hasValue("]")) {
27849:
27850: yyOption1 = yyResult.index;
27851: yyOpValue1 = v$el$1;
27852: } else {
27853: yyError = yyError.select("\"]\" expected", yyBase);
27854: }
27855: }
27856: } else {
27857: yyError = yyError.select("\"[\" expected", yyBase);
27858: }
27859: { // Start scope for v$g$1.
27860: final String v$g$1 = yyOpValue1;
27861:
27862: yyResult = pCConstant$StringConstant(yyOption1);
27863: yyError = yyResult.select(yyError);
27864: if (yyResult.hasValue()) {
27865: final Node v$g$2 = yyResult.semanticValue();
27866:
27867: yyBase = yyResult.index;
27868: yyResult = pSymbol(yyBase);
27869: yyError = yyResult.select(yyError);
27870: if (yyResult.hasValue("(")) {
27871:
27872: yyResult = pDebuggerC$CommaExpression(yyResult.index);
27873: yyError = yyResult.select(yyError);
27874: if (yyResult.hasValue()) {
27875: final Node v$g$3 = yyResult.semanticValue();
27876:
27877: yyBase = yyResult.index;
27878: yyResult = pSymbol(yyBase);
27879: yyError = yyResult.select(yyError);
27880: if (yyResult.hasValue(")")) {
27881:
27882: yyValue = GNode.create("AssemblyOperand",
27883: v$g$1, v$g$2, v$g$3);
27884: yyValue.setLocation(location(yyStart));
27885:
27886: return yyResult.createValue(yyValue,
27887: yyError);
27888: } else {
27889: yyError = yyError.select("\")\" expected",
27890: yyBase);
27891: }
27892: }
27893: } else {
27894: yyError = yyError.select("\"(\" expected", yyBase);
27895: }
27896: }
27897: } // End scope for v$g$1.
27898:
27899: // Done.
27900: return yyError;
27901: }
27902:
27903: // =========================================================================
27904:
27905: /**
27906: * Parse nonterminal xtc.lang.jeannie.DebuggerC.AssemblyClobbers.
27907: *
27908: * @param yyStart The index.
27909: * @return The result.
27910: * @throws IOException Signals an I/O error.
27911: */
27912: private Result pDebuggerC$AssemblyClobbers(final int yyStart)
27913: throws IOException {
27914:
27915: Result yyResult;
27916: int yyBase;
27917: int yyRepetition1;
27918: Pair<Node> yyRepValue1;
27919: Node yyValue;
27920: ParseError yyError = ParseError.DUMMY;
27921:
27922: // Alternative 1.
27923:
27924: yyResult = pCConstant$StringConstant(yyStart);
27925: yyError = yyResult.select(yyError);
27926: if (yyResult.hasValue()) {
27927: final Node v$g$1 = yyResult.semanticValue();
27928:
27929: yyRepetition1 = yyResult.index;
27930: yyRepValue1 = Pair.empty();
27931: while (true) {
27932:
27933: yyBase = yyRepetition1;
27934: yyResult = pSymbol(yyBase);
27935: yyError = yyResult.select(yyError);
27936: if (yyResult.hasValue(",")) {
27937:
27938: yyResult = pCConstant$StringConstant(yyResult.index);
27939: yyError = yyResult.select(yyError);
27940: if (yyResult.hasValue()) {
27941: final Node v$el$1 = yyResult.semanticValue();
27942:
27943: yyRepetition1 = yyResult.index;
27944: yyRepValue1 = new Pair<Node>(v$el$1,
27945: yyRepValue1);
27946: continue;
27947: }
27948: } else {
27949: yyError = yyError.select("\",\" expected", yyBase);
27950: }
27951: break;
27952: }
27953: { // Start scope for v$g$2.
27954: final Pair<Node> v$g$2 = yyRepValue1.reverse();
27955:
27956: yyValue = GNode.createFromPair("AssemblyClobbers",
27957: v$g$1, v$g$2);
27958: yyValue.setLocation(location(yyStart));
27959:
27960: return new SemanticValue(yyValue, yyRepetition1,
27961: yyError);
27962: } // End scope for v$g$2.
27963: }
27964:
27965: // Done.
27966: return yyError;
27967: }
27968:
27969: // =========================================================================
27970:
27971: /**
27972: * Parse nonterminal xtc.lang.jeannie.DebuggerC.WithStatement.
27973: *
27974: * @param yyStart The index.
27975: * @return The result.
27976: * @throws IOException Signals an I/O error.
27977: */
27978: private Result pDebuggerC$WithStatement(final int yyStart)
27979: throws IOException {
27980:
27981: Result yyResult;
27982: int yyBase;
27983: Node yyValue;
27984: ParseError yyError = ParseError.DUMMY;
27985:
27986: // Alternative 1.
27987:
27988: yyResult = pKeyword(yyStart);
27989: yyError = yyResult.select(yyError);
27990: if (yyResult.hasValue("_with")) {
27991:
27992: yyResult = pPushScope(yyResult.index);
27993: yyError = yyResult.select(yyError);
27994: if (yyResult.hasValue()) {
27995:
27996: yyBase = yyResult.index;
27997: yyResult = pSymbol(yyBase);
27998: yyError = yyResult.select(yyError);
27999: if (yyResult.hasValue("(")) {
28000:
28001: yyResult = pDebuggerC$WithInitializer(yyResult.index);
28002: yyError = yyResult.select(yyError);
28003: if (yyResult.hasValue()) {
28004: final Node v$g$1 = yyResult.semanticValue();
28005:
28006: yyBase = yyResult.index;
28007: yyResult = pSymbol(yyBase);
28008: yyError = yyResult.select(yyError);
28009: if (yyResult.hasValue(")")) {
28010:
28011: yyResult = pDebuggerC$CInCBlock(yyResult.index);
28012: yyError = yyResult.select(yyError);
28013: if (yyResult.hasValue()) {
28014: final Node v$g$2 = yyResult
28015: .semanticValue();
28016:
28017: yyResult = pPopScope(yyResult.index);
28018: yyError = yyResult.select(yyError);
28019: if (yyResult.hasValue()) {
28020:
28021: yyValue = GNode.create(
28022: "WithStatement", v$g$1,
28023: v$g$2);
28024: yyValue
28025: .setLocation(location(yyStart));
28026:
28027: return yyResult.createValue(
28028: yyValue, yyError);
28029: }
28030: }
28031: } else {
28032: yyError = yyError.select("\")\" expected",
28033: yyBase);
28034: }
28035: }
28036: } else {
28037: yyError = yyError.select("\"(\" expected", yyBase);
28038: }
28039: }
28040: }
28041:
28042: // Done.
28043: yyError = yyError.select("with statement expected", yyStart);
28044: return yyError;
28045: }
28046:
28047: // =========================================================================
28048:
28049: /**
28050: * Parse nonterminal xtc.lang.jeannie.DebuggerC.WithInitializer.
28051: *
28052: * @param yyStart The index.
28053: * @return The result.
28054: * @throws IOException Signals an I/O error.
28055: */
28056: private Result pDebuggerC$WithInitializer(final int yyStart)
28057: throws IOException {
28058:
28059: Result yyResult;
28060: Node yyValue;
28061: ParseError yyError = ParseError.DUMMY;
28062:
28063: // Alternative <Declaration>.
28064:
28065: yyResult = pDebuggerC$DeclarationNoSemicolon(yyStart);
28066: yyError = yyResult.select(yyError);
28067: if (yyResult.hasValue()) {
28068: yyValue = yyResult.semanticValue();
28069:
28070: return yyResult.createValue(yyValue, yyError);
28071: }
28072:
28073: // Alternative <Assignment>.
28074:
28075: yyResult = pDebuggerC$AssignmentExpression(yyStart);
28076: yyError = yyResult.select(yyError);
28077: if (yyResult.hasValue()) {
28078: yyValue = yyResult.semanticValue();
28079:
28080: return yyResult.createValue(yyValue, yyError);
28081: }
28082:
28083: // Done.
28084: return yyError;
28085: }
28086:
28087: // =========================================================================
28088:
28089: /**
28090: * Parse nonterminal xtc.lang.jeannie.DebuggerC.DeclarationNoSemicolon.
28091: *
28092: * @param yyStart The index.
28093: * @return The result.
28094: * @throws IOException Signals an I/O error.
28095: */
28096: private Result pDebuggerC$DeclarationNoSemicolon(final int yyStart)
28097: throws IOException {
28098:
28099: Result yyResult;
28100: int yyOption1;
28101: Node yyOpValue1;
28102: Node yyValue;
28103: ParseError yyError = ParseError.DUMMY;
28104:
28105: // Alternative 1.
28106:
28107: yyResult = pDebuggerC$DeclarationSpecifiers(yyStart);
28108: yyError = yyResult.select(yyError);
28109: if (yyResult.hasValue()) {
28110: final Node v$g$2 = yyResult.semanticValue();
28111:
28112: yyOption1 = yyResult.index;
28113: yyOpValue1 = null;
28114:
28115: yyResult = pDebuggerC$InitializedDeclaratorList(yyOption1);
28116: yyError = yyResult.select(yyError);
28117: if (yyResult.hasValue()) {
28118: final Node v$el$1 = yyResult.semanticValue();
28119:
28120: yyOption1 = yyResult.index;
28121: yyOpValue1 = v$el$1;
28122: }
28123: { // Start scope for l.
28124: final Node l = yyOpValue1;
28125:
28126: if (yyState.isValid(l)) {
28127:
28128: yyValue = GNode.create("Declaration", null, v$g$2,
28129: l);
28130: yyValue.setLocation(location(yyStart));
28131:
28132: return new SemanticValue(yyValue, yyOption1,
28133: yyError);
28134: }
28135: } // End scope for l.
28136: }
28137:
28138: // Done.
28139: yyError = yyError.select("declaration no semicolon expected",
28140: yyStart);
28141: return yyError;
28142: }
28143:
28144: // =========================================================================
28145:
28146: /**
28147: * Parse nonterminal xtc.lang.jeannie.DebuggerC.CancelStatement.
28148: *
28149: * @param yyStart The index.
28150: * @return The result.
28151: * @throws IOException Signals an I/O error.
28152: */
28153: private Result pDebuggerC$CancelStatement(final int yyStart)
28154: throws IOException {
28155:
28156: Result yyResult;
28157: int yyBase;
28158: Node yyValue;
28159: ParseError yyError = ParseError.DUMMY;
28160:
28161: // Alternative 1.
28162:
28163: yyResult = pKeyword(yyStart);
28164: yyError = yyResult.select(yyError);
28165: if (yyResult.hasValue("_cancel")) {
28166:
28167: yyResult = pDebuggerC$PrimaryIdentifier(yyResult.index);
28168: yyError = yyResult.select(yyError);
28169: if (yyResult.hasValue()) {
28170: final Node v$g$1 = yyResult.semanticValue();
28171:
28172: yyBase = yyResult.index;
28173: yyResult = pSymbol(yyBase);
28174: yyError = yyResult.select(yyError);
28175: if (yyResult.hasValue(";")) {
28176:
28177: yyValue = GNode.create("CancelStatement", v$g$1);
28178: yyValue.setLocation(location(yyStart));
28179:
28180: return yyResult.createValue(yyValue, yyError);
28181: } else {
28182: yyError = yyError.select("\";\" expected", yyBase);
28183: }
28184: }
28185: }
28186:
28187: // Done.
28188: yyError = yyError.select("cancel statement expected", yyStart);
28189: return yyError;
28190: }
28191:
28192: // =========================================================================
28193:
28194: /**
28195: * Parse nonterminal xtc.lang.jeannie.DebuggerC.CommitStatement.
28196: *
28197: * @param yyStart The index.
28198: * @return The result.
28199: * @throws IOException Signals an I/O error.
28200: */
28201: private Result pDebuggerC$CommitStatement(final int yyStart)
28202: throws IOException {
28203:
28204: Result yyResult;
28205: int yyBase;
28206: Node yyValue;
28207: ParseError yyError = ParseError.DUMMY;
28208:
28209: // Alternative 1.
28210:
28211: yyResult = pKeyword(yyStart);
28212: yyError = yyResult.select(yyError);
28213: if (yyResult.hasValue("_commit")) {
28214:
28215: yyResult = pDebuggerC$PrimaryIdentifier(yyResult.index);
28216: yyError = yyResult.select(yyError);
28217: if (yyResult.hasValue()) {
28218: final Node v$g$1 = yyResult.semanticValue();
28219:
28220: yyBase = yyResult.index;
28221: yyResult = pSymbol(yyBase);
28222: yyError = yyResult.select(yyError);
28223: if (yyResult.hasValue(";")) {
28224:
28225: yyValue = GNode.create("CommitStatement", v$g$1);
28226: yyValue.setLocation(location(yyStart));
28227:
28228: return yyResult.createValue(yyValue, yyError);
28229: } else {
28230: yyError = yyError.select("\";\" expected", yyBase);
28231: }
28232: }
28233: }
28234:
28235: // Done.
28236: yyError = yyError.select("commit statement expected", yyStart);
28237: return yyError;
28238: }
28239:
28240: // =========================================================================
28241:
28242: /**
28243: * Parse nonterminal xtc.lang.jeannie.DebuggerC.CInCBlock.
28244: *
28245: * @param yyStart The index.
28246: * @return The result.
28247: * @throws IOException Signals an I/O error.
28248: */
28249: private Result pDebuggerC$CInCBlock(final int yyStart)
28250: throws IOException {
28251: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
28252: if (null == yyColumn.chunk10)
28253: yyColumn.chunk10 = new Chunk10();
28254: if (null == yyColumn.chunk10.fDebuggerC$CInCBlock)
28255: yyColumn.chunk10.fDebuggerC$CInCBlock = pDebuggerC$CInCBlock$1(yyStart);
28256: return yyColumn.chunk10.fDebuggerC$CInCBlock;
28257: }
28258:
28259: /** Actually parse xtc.lang.jeannie.DebuggerC.CInCBlock. */
28260: private Result pDebuggerC$CInCBlock$1(final int yyStart)
28261: throws IOException {
28262:
28263: int yyC;
28264: int yyIndex;
28265: Result yyResult;
28266: int yyBase;
28267: Node yyValue;
28268: ParseError yyError = ParseError.DUMMY;
28269:
28270: // Alternative 1.
28271:
28272: yyResult = pSymbol(yyStart);
28273: yyError = yyResult.select(yyError);
28274: if (yyResult.hasValue("{")) {
28275:
28276: yyResult = pPushScope(yyResult.index);
28277: yyError = yyResult.select(yyError);
28278: if (yyResult.hasValue()) {
28279:
28280: yyResult = pDebuggerC$CInCBlock$$Star1(yyResult.index);
28281: yyError = yyResult.select(yyError);
28282: if (yyResult.hasValue()) {
28283: final Pair<Node> v$g$1 = yyResult.semanticValue();
28284:
28285: yyResult = pDebuggerC$CInCBlock$$Star2(yyResult.index);
28286: yyError = yyResult.select(yyError);
28287: if (yyResult.hasValue()) {
28288: final Pair<Node> v$g$2 = yyResult
28289: .semanticValue();
28290:
28291: yyResult = p$$Shared6(yyResult.index);
28292: yyError = yyResult.select(yyError);
28293: if (yyResult.hasValue()) {
28294: final Node v$g$3 = yyResult.semanticValue();
28295:
28296: yyBase = yyResult.index;
28297: yyC = character(yyBase);
28298: if ('}' == yyC) {
28299: yyIndex = yyResult.index + 1;
28300:
28301: yyResult = pSpacing(yyIndex);
28302: yyError = yyResult.select(yyError);
28303: if (yyResult.hasValue()) {
28304:
28305: yyResult = pPopScope(yyResult.index);
28306: yyError = yyResult.select(yyError);
28307: if (yyResult.hasValue()) {
28308:
28309: yyValue = GNode.create(
28310: "CInCBlock",
28311: v$g$1.size()
28312: + v$g$2.size()
28313: + 1).addAll(
28314: v$g$1).addAll(v$g$2)
28315: .add(v$g$3);
28316: yyValue
28317: .setLocation(location(yyStart));
28318:
28319: return yyResult.createValue(
28320: yyValue, yyError);
28321: }
28322: }
28323: } else {
28324: yyError = yyError.select(
28325: "\"}\" expected", yyBase);
28326: }
28327: }
28328: }
28329: }
28330: }
28331: }
28332:
28333: // Done.
28334: yyError = yyError.select("c in c block expected", yyStart);
28335: return yyError;
28336: }
28337:
28338: // =========================================================================
28339:
28340: /**
28341: * Parse synthetic nonterminal DebuggerC.CInCBlock$$Star1.
28342: *
28343: * @param yyStart The index.
28344: * @return The result.
28345: * @throws IOException Signals an I/O error.
28346: */
28347: private Result pDebuggerC$CInCBlock$$Star1(final int yyStart)
28348: throws IOException {
28349:
28350: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
28351: if (null == yyColumn.chunk10)
28352: yyColumn.chunk10 = new Chunk10();
28353: if (null == yyColumn.chunk10.fDebuggerC$CInCBlock$$Star1)
28354: yyColumn.chunk10.fDebuggerC$CInCBlock$$Star1 = pDebuggerC$CInCBlock$$Star1$1(yyStart);
28355: return yyColumn.chunk10.fDebuggerC$CInCBlock$$Star1;
28356: }
28357:
28358: /** Actually parse DebuggerC.CInCBlock$$Star1. */
28359: private Result pDebuggerC$CInCBlock$$Star1$1(final int yyStart)
28360: throws IOException {
28361:
28362: Result yyResult;
28363: Pair<Node> yyValue;
28364: ParseError yyError = ParseError.DUMMY;
28365:
28366: // Alternative 1.
28367:
28368: yyResult = pDebuggerC$LocalLabelDeclaration(yyStart);
28369: yyError = yyResult.select(yyError);
28370: if (yyResult.hasValue()) {
28371: final Node v$el$1 = yyResult.semanticValue();
28372:
28373: yyResult = pDebuggerC$CInCBlock$$Star1(yyResult.index);
28374: yyError = yyResult.select(yyError);
28375: if (yyResult.hasValue()) {
28376: final Pair<Node> v$2 = yyResult.semanticValue();
28377:
28378: yyValue = new Pair<Node>(v$el$1, v$2);
28379:
28380: return yyResult.createValue(yyValue, yyError);
28381: }
28382: }
28383:
28384: // Alternative 2.
28385:
28386: yyValue = Pair.empty();
28387:
28388: return new SemanticValue(yyValue, yyStart, yyError);
28389: }
28390:
28391: // =========================================================================
28392:
28393: /**
28394: * Parse synthetic nonterminal DebuggerC.CInCBlock$$Star2.
28395: *
28396: * @param yyStart The index.
28397: * @return The result.
28398: * @throws IOException Signals an I/O error.
28399: */
28400: private Result pDebuggerC$CInCBlock$$Star2(final int yyStart)
28401: throws IOException {
28402:
28403: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
28404: if (null == yyColumn.chunk10)
28405: yyColumn.chunk10 = new Chunk10();
28406: if (null == yyColumn.chunk10.fDebuggerC$CInCBlock$$Star2)
28407: yyColumn.chunk10.fDebuggerC$CInCBlock$$Star2 = pDebuggerC$CInCBlock$$Star2$1(yyStart);
28408: return yyColumn.chunk10.fDebuggerC$CInCBlock$$Star2;
28409: }
28410:
28411: /** Actually parse DebuggerC.CInCBlock$$Star2. */
28412: private Result pDebuggerC$CInCBlock$$Star2$1(final int yyStart)
28413: throws IOException {
28414:
28415: Result yyResult;
28416: Pair<Node> yyValue;
28417: ParseError yyError = ParseError.DUMMY;
28418:
28419: // Alternative 1.
28420:
28421: yyResult = pDebuggerC$DeclarationOrStatement(yyStart);
28422: yyError = yyResult.select(yyError);
28423: if (yyResult.hasValue()) {
28424: final Node v$el$3 = yyResult.semanticValue();
28425:
28426: yyResult = pDebuggerC$CInCBlock$$Star2(yyResult.index);
28427: yyError = yyResult.select(yyError);
28428: if (yyResult.hasValue()) {
28429: final Pair<Node> v$4 = yyResult.semanticValue();
28430:
28431: yyValue = new Pair<Node>(v$el$3, v$4);
28432:
28433: return yyResult.createValue(yyValue, yyError);
28434: }
28435: }
28436:
28437: // Alternative 2.
28438:
28439: yyValue = Pair.empty();
28440:
28441: return new SemanticValue(yyValue, yyStart, yyError);
28442: }
28443:
28444: // =========================================================================
28445:
28446: /**
28447: * Parse nonterminal xtc.lang.jeannie.DebuggerC.JavaInCBlock.
28448: *
28449: * @param yyStart The index.
28450: * @return The result.
28451: * @throws IOException Signals an I/O error.
28452: */
28453: private Result pDebuggerC$JavaInCBlock(final int yyStart)
28454: throws IOException {
28455:
28456: Result yyResult;
28457: Node yyValue;
28458: ParseError yyError = ParseError.DUMMY;
28459:
28460: // Alternative 1.
28461:
28462: yyResult = p$$Shared25(yyStart);
28463: yyError = yyResult.select(yyError);
28464: if (yyResult.hasValue()) {
28465:
28466: yyResult = pJeannieJava$JavaInJavaBlock(yyResult.index);
28467: yyError = yyResult.select(yyError);
28468: if (yyResult.hasValue()) {
28469: final Node v$g$1 = yyResult.semanticValue();
28470:
28471: yyValue = GNode.create("JavaInCBlock", v$g$1);
28472: yyValue.setLocation(location(yyStart));
28473:
28474: return yyResult.createValue(yyValue, yyError);
28475: }
28476: }
28477:
28478: // Done.
28479: return yyError;
28480: }
28481:
28482: // =========================================================================
28483:
28484: /**
28485: * Parse nonterminal xtc.lang.jeannie.DebuggerC.JavaInCExpression.
28486: *
28487: * @param yyStart The index.
28488: * @return The result.
28489: * @throws IOException Signals an I/O error.
28490: */
28491: private Result pDebuggerC$JavaInCExpression(final int yyStart)
28492: throws IOException {
28493:
28494: Result yyResult;
28495: Node yyValue;
28496: ParseError yyError = ParseError.DUMMY;
28497:
28498: // Alternative 1.
28499:
28500: yyResult = p$$Shared25(yyStart);
28501: yyError = yyResult.select(yyError);
28502: if (yyResult.hasValue()) {
28503:
28504: yyResult = pJeannieJava$UnaryExpression(yyResult.index);
28505: yyError = yyResult.select(yyError);
28506: if (yyResult.hasValue()) {
28507: final Node v$g$1 = yyResult.semanticValue();
28508:
28509: yyValue = GNode.create("JavaInCExpression", v$g$1);
28510: yyValue.setLocation(location(yyStart));
28511:
28512: return yyResult.createValue(yyValue, yyError);
28513: }
28514: }
28515:
28516: // Done.
28517: return yyError;
28518: }
28519:
28520: // =========================================================================
28521:
28522: /**
28523: * Parse nonterminal xtc.lang.jeannie.DebuggerC.JavaInCStatement.
28524: *
28525: * @param yyStart The index.
28526: * @return The result.
28527: * @throws IOException Signals an I/O error.
28528: */
28529: private Result pDebuggerC$JavaInCStatement(final int yyStart)
28530: throws IOException {
28531:
28532: Result yyResult;
28533: Node yyValue;
28534: ParseError yyError = ParseError.DUMMY;
28535:
28536: // Alternative 1.
28537:
28538: yyResult = p$$Shared25(yyStart);
28539: yyError = yyResult.select(yyError);
28540: if (yyResult.hasValue()) {
28541:
28542: final int yyChoice1 = yyResult.index;
28543:
28544: // Nested alternative 1.
28545:
28546: yyResult = pJeannieJava$TryCatchFinallyStatement(yyChoice1);
28547: yyError = yyResult.select(yyError);
28548: if (yyResult.hasValue()) {
28549: final Node v$g$1 = yyResult.semanticValue();
28550:
28551: yyValue = GNode.create("JavaInCStatement", v$g$1);
28552: yyValue.setLocation(location(yyStart));
28553:
28554: return yyResult.createValue(yyValue, yyError);
28555: }
28556:
28557: // Nested alternative 2.
28558:
28559: yyResult = pJeannieJava$SynchronizedStatement(yyChoice1);
28560: yyError = yyResult.select(yyError);
28561: if (yyResult.hasValue()) {
28562: final Node v$g$2 = yyResult.semanticValue();
28563:
28564: yyValue = GNode.create("JavaInCStatement", v$g$2);
28565: yyValue.setLocation(location(yyStart));
28566:
28567: return yyResult.createValue(yyValue, yyError);
28568: }
28569:
28570: // Nested alternative 3.
28571:
28572: yyResult = pJeannieJava$ThrowStatement(yyChoice1);
28573: yyError = yyResult.select(yyError);
28574: if (yyResult.hasValue()) {
28575: final Node v$g$3 = yyResult.semanticValue();
28576:
28577: yyValue = GNode.create("JavaInCStatement", v$g$3);
28578: yyValue.setLocation(location(yyStart));
28579:
28580: return yyResult.createValue(yyValue, yyError);
28581: }
28582: }
28583:
28584: // Done.
28585: return yyError;
28586: }
28587:
28588: // =========================================================================
28589:
28590: /**
28591: * Parse nonterminal xtc.lang.jeannie.DebuggerC.JavaThrows.
28592: *
28593: * @param yyStart The index.
28594: * @return The result.
28595: * @throws IOException Signals an I/O error.
28596: */
28597: private Result pDebuggerC$JavaThrows(final int yyStart)
28598: throws IOException {
28599: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
28600: if (null == yyColumn.chunk10)
28601: yyColumn.chunk10 = new Chunk10();
28602: if (null == yyColumn.chunk10.fDebuggerC$JavaThrows)
28603: yyColumn.chunk10.fDebuggerC$JavaThrows = pDebuggerC$JavaThrows$1(yyStart);
28604: return yyColumn.chunk10.fDebuggerC$JavaThrows;
28605: }
28606:
28607: /** Actually parse xtc.lang.jeannie.DebuggerC.JavaThrows. */
28608: private Result pDebuggerC$JavaThrows$1(final int yyStart)
28609: throws IOException {
28610:
28611: Result yyResult;
28612: int yyOption1;
28613: Node yyOpValue1;
28614: Node yyValue;
28615: ParseError yyError = ParseError.DUMMY;
28616:
28617: // Alternative 1.
28618:
28619: yyOption1 = yyStart;
28620: yyOpValue1 = null;
28621:
28622: yyResult = p$$Shared25(yyOption1);
28623: yyError = yyResult.select(yyError);
28624: if (yyResult.hasValue()) {
28625:
28626: yyResult = pJeannieJava$ThrowsClause(yyResult.index);
28627: yyError = yyResult.select(yyError);
28628: if (yyResult.hasValue()) {
28629: final Node v$el$1 = yyResult.semanticValue();
28630:
28631: yyOption1 = yyResult.index;
28632: yyOpValue1 = v$el$1;
28633: }
28634: }
28635: { // Start scope for v$g$1.
28636: final Node v$g$1 = yyOpValue1;
28637:
28638: yyValue = GNode.create("JavaThrows", v$g$1);
28639: yyValue.setLocation(location(yyStart));
28640:
28641: return new SemanticValue(yyValue, yyOption1, yyError);
28642: } // End scope for v$g$1.
28643: }
28644:
28645: // =========================================================================
28646:
28647: /**
28648: * Parse nonterminal xtc.lang.jeannie.DebuggerC.JavaType.
28649: *
28650: * @param yyStart The index.
28651: * @return The result.
28652: * @throws IOException Signals an I/O error.
28653: */
28654: private Result pDebuggerC$JavaType(final int yyStart)
28655: throws IOException {
28656: Result yyResult;
28657: Node yyValue;
28658: ParseError yyError = ParseError.DUMMY;
28659:
28660: // Alternative 1.
28661:
28662: yyResult = p$$Shared25(yyStart);
28663: yyError = yyResult.select(yyError);
28664: if (yyResult.hasValue()) {
28665:
28666: yyResult = pJavaType$TypeName(yyResult.index);
28667: yyError = yyResult.select(yyError);
28668: if (yyResult.hasValue()) {
28669: final Node v$g$1 = yyResult.semanticValue();
28670:
28671: yyValue = GNode.create("JavaType", v$g$1);
28672: yyValue.setLocation(location(yyStart));
28673:
28674: return yyResult.createValue(yyValue, yyError);
28675: }
28676: }
28677:
28678: // Done.
28679: return yyError;
28680: }
28681:
28682: // =========================================================================
28683:
28684: /**
28685: * Parse nonterminal xtc.lang.jeannie.JeannieJava.Modifiers.
28686: *
28687: * @param yyStart The index.
28688: * @return The result.
28689: * @throws IOException Signals an I/O error.
28690: */
28691: private Result pJeannieJava$Modifiers(final int yyStart)
28692: throws IOException {
28693:
28694: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
28695: if (null == yyColumn.chunk10)
28696: yyColumn.chunk10 = new Chunk10();
28697: if (null == yyColumn.chunk10.fJeannieJava$Modifiers)
28698: yyColumn.chunk10.fJeannieJava$Modifiers = pJeannieJava$Modifiers$1(yyStart);
28699: return yyColumn.chunk10.fJeannieJava$Modifiers;
28700: }
28701:
28702: /** Actually parse xtc.lang.jeannie.JeannieJava.Modifiers. */
28703: private Result pJeannieJava$Modifiers$1(final int yyStart)
28704: throws IOException {
28705:
28706: Result yyResult;
28707: Node yyValue;
28708: ParseError yyError = ParseError.DUMMY;
28709:
28710: // Alternative 1.
28711:
28712: yyResult = pJeannieJava$ModifierList(yyStart);
28713: yyError = yyResult.select(yyError);
28714: if (yyResult.hasValue()) {
28715: final Pair<Node> v$g$1 = yyResult.semanticValue();
28716:
28717: yyValue = GNode.createFromPair("Modifiers", v$g$1);
28718: yyValue.setLocation(location(yyStart));
28719:
28720: return yyResult.createValue(yyValue, yyError);
28721: }
28722:
28723: // Done.
28724: return yyError;
28725: }
28726:
28727: // =========================================================================
28728:
28729: /**
28730: * Parse nonterminal xtc.lang.jeannie.JeannieJava.ModifierList.
28731: *
28732: * @param yyStart The index.
28733: * @return The result.
28734: * @throws IOException Signals an I/O error.
28735: */
28736: private Result pJeannieJava$ModifierList(final int yyStart)
28737: throws IOException {
28738:
28739: Result yyResult;
28740: int yyRepetition1;
28741: Pair<Node> yyRepValue1;
28742: Pair<Node> yyValue;
28743: ParseError yyError = ParseError.DUMMY;
28744:
28745: // Alternative 1.
28746:
28747: yyRepetition1 = yyStart;
28748: yyRepValue1 = Pair.empty();
28749: while (true) {
28750:
28751: yyResult = pJeannieJava$Modifier(yyRepetition1);
28752: yyError = yyResult.select(yyError);
28753: if (yyResult.hasValue()) {
28754: final Node v$el$1 = yyResult.semanticValue();
28755:
28756: yyRepetition1 = yyResult.index;
28757: yyRepValue1 = new Pair<Node>(v$el$1, yyRepValue1);
28758: continue;
28759: }
28760: break;
28761: }
28762: { // Start scope for yyValue.
28763: yyValue = yyRepValue1.reverse();
28764:
28765: return new SemanticValue(yyValue, yyRepetition1, yyError);
28766: } // End scope for yyValue.
28767: }
28768:
28769: // =========================================================================
28770:
28771: /**
28772: * Parse nonterminal xtc.lang.jeannie.JeannieJava.Modifier.
28773: *
28774: * @param yyStart The index.
28775: * @return The result.
28776: * @throws IOException Signals an I/O error.
28777: */
28778: private Result pJeannieJava$Modifier(final int yyStart)
28779: throws IOException {
28780: Result yyResult;
28781: Node yyValue;
28782: ParseError yyError = ParseError.DUMMY;
28783:
28784: // Alternative <Public>.
28785:
28786: yyResult = pJavaIdentifier$Word(yyStart);
28787: yyError = yyResult.select(yyError);
28788: if (yyResult.hasValue("public")) {
28789: final String v$g$1 = "public";
28790:
28791: yyValue = GNode.create("Modifier", v$g$1);
28792: yyValue.setLocation(location(yyStart));
28793:
28794: return yyResult.createValue(yyValue, yyError);
28795: }
28796:
28797: // Alternative <Protected>.
28798:
28799: yyResult = pJavaIdentifier$Word(yyStart);
28800: yyError = yyResult.select(yyError);
28801: if (yyResult.hasValue("protected")) {
28802: final String v$g$2 = "protected";
28803:
28804: yyValue = GNode.create("Modifier", v$g$2);
28805: yyValue.setLocation(location(yyStart));
28806:
28807: return yyResult.createValue(yyValue, yyError);
28808: }
28809:
28810: // Alternative <Private>.
28811:
28812: yyResult = pJavaIdentifier$Word(yyStart);
28813: yyError = yyResult.select(yyError);
28814: if (yyResult.hasValue("private")) {
28815: final String v$g$3 = "private";
28816:
28817: yyValue = GNode.create("Modifier", v$g$3);
28818: yyValue.setLocation(location(yyStart));
28819:
28820: return yyResult.createValue(yyValue, yyError);
28821: }
28822:
28823: // Alternative <Static>.
28824:
28825: yyResult = pJavaIdentifier$Word(yyStart);
28826: yyError = yyResult.select(yyError);
28827: if (yyResult.hasValue("static")) {
28828: final String v$g$4 = "static";
28829:
28830: yyValue = GNode.create("Modifier", v$g$4);
28831: yyValue.setLocation(location(yyStart));
28832:
28833: return yyResult.createValue(yyValue, yyError);
28834: }
28835:
28836: // Alternative <Abstract>.
28837:
28838: yyResult = pJavaIdentifier$Word(yyStart);
28839: yyError = yyResult.select(yyError);
28840: if (yyResult.hasValue("abstract")) {
28841: final String v$g$5 = "abstract";
28842:
28843: yyValue = GNode.create("Modifier", v$g$5);
28844: yyValue.setLocation(location(yyStart));
28845:
28846: return yyResult.createValue(yyValue, yyError);
28847: }
28848:
28849: // Alternative <Final>.
28850:
28851: yyResult = pJavaIdentifier$Word(yyStart);
28852: yyError = yyResult.select(yyError);
28853: if (yyResult.hasValue("final")) {
28854: final String v$g$6 = "final";
28855:
28856: yyValue = GNode.create("Modifier", v$g$6);
28857: yyValue.setLocation(location(yyStart));
28858:
28859: return yyResult.createValue(yyValue, yyError);
28860: }
28861:
28862: // Alternative <Native>.
28863:
28864: yyResult = pJavaIdentifier$Word(yyStart);
28865: yyError = yyResult.select(yyError);
28866: if (yyResult.hasValue("native")) {
28867: final String v$g$7 = "native";
28868:
28869: yyValue = GNode.create("Modifier", v$g$7);
28870: yyValue.setLocation(location(yyStart));
28871:
28872: return yyResult.createValue(yyValue, yyError);
28873: }
28874:
28875: // Alternative <Synchronized>.
28876:
28877: yyResult = pJavaIdentifier$Word(yyStart);
28878: yyError = yyResult.select(yyError);
28879: if (yyResult.hasValue("synchronized")) {
28880: final String v$g$8 = "synchronized";
28881:
28882: yyValue = GNode.create("Modifier", v$g$8);
28883: yyValue.setLocation(location(yyStart));
28884:
28885: return yyResult.createValue(yyValue, yyError);
28886: }
28887:
28888: // Alternative <Transient>.
28889:
28890: yyResult = pJavaIdentifier$Word(yyStart);
28891: yyError = yyResult.select(yyError);
28892: if (yyResult.hasValue("transient")) {
28893: final String v$g$9 = "transient";
28894:
28895: yyValue = GNode.create("Modifier", v$g$9);
28896: yyValue.setLocation(location(yyStart));
28897:
28898: return yyResult.createValue(yyValue, yyError);
28899: }
28900:
28901: // Alternative <Volatile>.
28902:
28903: yyResult = pJavaIdentifier$Word(yyStart);
28904: yyError = yyResult.select(yyError);
28905: if (yyResult.hasValue("volatile")) {
28906: final String v$g$10 = "volatile";
28907:
28908: yyValue = GNode.create("Modifier", v$g$10);
28909: yyValue.setLocation(location(yyStart));
28910:
28911: return yyResult.createValue(yyValue, yyError);
28912: }
28913:
28914: // Alternative <Strictfp>.
28915:
28916: yyResult = pJavaIdentifier$Word(yyStart);
28917: yyError = yyResult.select(yyError);
28918: if (yyResult.hasValue("strictfp")) {
28919: final String v$g$11 = "strictfp";
28920:
28921: yyValue = GNode.create("Modifier", v$g$11);
28922: yyValue.setLocation(location(yyStart));
28923:
28924: return yyResult.createValue(yyValue, yyError);
28925: }
28926:
28927: // Done.
28928: yyError = yyError.select("modifier expected", yyStart);
28929: return yyError;
28930: }
28931:
28932: // =========================================================================
28933:
28934: /**
28935: * Parse nonterminal xtc.lang.jeannie.JeannieJava.FormalParameter.
28936: *
28937: * @param yyStart The index.
28938: * @return The result.
28939: * @throws IOException Signals an I/O error.
28940: */
28941: private Result pJeannieJava$FormalParameter(final int yyStart)
28942: throws IOException {
28943:
28944: Result yyResult;
28945: int yyOption1;
28946: Node yyOpValue1;
28947: Node yyValue;
28948: ParseError yyError = ParseError.DUMMY;
28949:
28950: // Alternative <Parameter>.
28951:
28952: yyResult = pJeannieJava$VariableModifiers(yyStart);
28953: yyError = yyResult.select(yyError);
28954: if (yyResult.hasValue()) {
28955: final Node v$g$1 = yyResult.semanticValue();
28956:
28957: yyResult = pType(yyResult.index);
28958: yyError = yyResult.select(yyError);
28959: if (yyResult.hasValue()) {
28960: final Node v$g$2 = yyResult.semanticValue();
28961:
28962: yyResult = pJavaIdentifier$Identifier(yyResult.index);
28963: yyError = yyResult.select(yyError);
28964: if (yyResult.hasValue()) {
28965: final String v$g$4 = yyResult.semanticValue();
28966:
28967: yyOption1 = yyResult.index;
28968: yyOpValue1 = null;
28969:
28970: yyResult = pDimensions(yyOption1);
28971: yyError = yyResult.select(yyError);
28972: if (yyResult.hasValue()) {
28973: final Node v$el$1 = yyResult.semanticValue();
28974:
28975: yyOption1 = yyResult.index;
28976: yyOpValue1 = v$el$1;
28977: }
28978: { // Start scope for v$g$5.
28979: final Node v$g$5 = yyOpValue1;
28980:
28981: yyValue = GNode.create("FormalParameter",
28982: v$g$1, v$g$2, null, v$g$4, v$g$5);
28983: yyValue.setLocation(location(yyStart));
28984:
28985: return new SemanticValue(yyValue, yyOption1,
28986: yyError);
28987: } // End scope for v$g$5.
28988: }
28989: }
28990: }
28991:
28992: // Done.
28993: return yyError;
28994: }
28995:
28996: // =========================================================================
28997:
28998: /**
28999: * Parse nonterminal xtc.lang.jeannie.JeannieJava.VariableModifiers.
29000: *
29001: * @param yyStart The index.
29002: * @return The result.
29003: * @throws IOException Signals an I/O error.
29004: */
29005: private Result pJeannieJava$VariableModifiers(final int yyStart)
29006: throws IOException {
29007:
29008: Result yyResult;
29009: Node yyValue;
29010: ParseError yyError = ParseError.DUMMY;
29011:
29012: // Alternative <Final>.
29013:
29014: yyResult = pJeannieJava$FinalModifier(yyStart);
29015: yyError = yyResult.select(yyError);
29016: if (yyResult.hasValue()) {
29017: final Node v$g$1 = yyResult.semanticValue();
29018:
29019: yyValue = GNode.create("Modifiers", v$g$1);
29020: yyValue.setLocation(location(yyStart));
29021:
29022: return yyResult.createValue(yyValue, yyError);
29023: }
29024:
29025: // Alternative <Nonfinal>.
29026:
29027: yyValue = GNode.create("Modifiers", false);
29028: yyValue.setLocation(location(yyStart));
29029:
29030: return new SemanticValue(yyValue, yyStart, yyError);
29031: }
29032:
29033: // =========================================================================
29034:
29035: /**
29036: * Parse nonterminal xtc.lang.jeannie.JeannieJava.FinalModifier.
29037: *
29038: * @param yyStart The index.
29039: * @return The result.
29040: * @throws IOException Signals an I/O error.
29041: */
29042: private Result pJeannieJava$FinalModifier(final int yyStart)
29043: throws IOException {
29044:
29045: Result yyResult;
29046: Node yyValue;
29047: ParseError yyError = ParseError.DUMMY;
29048:
29049: // Alternative 1.
29050:
29051: yyResult = pJavaIdentifier$Word(yyStart);
29052: yyError = yyResult.select(yyError);
29053: if (yyResult.hasValue("final")) {
29054: final String v$g$1 = "final";
29055:
29056: yyValue = GNode.create("Modifier", v$g$1);
29057: yyValue.setLocation(location(yyStart));
29058:
29059: return yyResult.createValue(yyValue, yyError);
29060: }
29061:
29062: // Done.
29063: yyError = yyError.select("final modifier expected", yyStart);
29064: return yyError;
29065: }
29066:
29067: // =========================================================================
29068:
29069: /**
29070: * Parse nonterminal xtc.lang.jeannie.JeannieJava.FormalParameters.
29071: *
29072: * @param yyStart The index.
29073: * @return The result.
29074: * @throws IOException Signals an I/O error.
29075: */
29076: private Result pJeannieJava$FormalParameters(final int yyStart)
29077: throws IOException {
29078:
29079: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
29080: if (null == yyColumn.chunk10)
29081: yyColumn.chunk10 = new Chunk10();
29082: if (null == yyColumn.chunk10.fJeannieJava$FormalParameters)
29083: yyColumn.chunk10.fJeannieJava$FormalParameters = pJeannieJava$FormalParameters$1(yyStart);
29084: return yyColumn.chunk10.fJeannieJava$FormalParameters;
29085: }
29086:
29087: /** Actually parse xtc.lang.jeannie.JeannieJava.FormalParameters. */
29088: private Result pJeannieJava$FormalParameters$1(final int yyStart)
29089: throws IOException {
29090:
29091: Result yyResult;
29092: int yyBase;
29093: Node yyValue;
29094: ParseError yyError = ParseError.DUMMY;
29095:
29096: // Alternative 1.
29097:
29098: yyResult = pSymbol(yyStart);
29099: yyError = yyResult.select(yyError);
29100: if (yyResult.hasValue("(")) {
29101:
29102: final int yyChoice1 = yyResult.index;
29103:
29104: // Nested alternative 1.
29105:
29106: yyResult = pJeannieJava$FormalParameter(yyChoice1);
29107: yyError = yyResult.select(yyError);
29108: if (yyResult.hasValue()) {
29109: final Node v$g$1 = yyResult.semanticValue();
29110:
29111: yyResult = pJeannieJava$FormalParameters$$Star1(yyResult.index);
29112: yyError = yyResult.select(yyError);
29113: if (yyResult.hasValue()) {
29114: final Pair<Node> v$g$2 = yyResult.semanticValue();
29115:
29116: yyBase = yyResult.index;
29117: yyResult = pSymbol(yyBase);
29118: yyError = yyResult.select(yyError);
29119: if (yyResult.hasValue(")")) {
29120:
29121: yyValue = GNode.createFromPair(
29122: "FormalParameters", v$g$1, v$g$2);
29123: yyValue.setLocation(location(yyStart));
29124:
29125: return yyResult.createValue(yyValue, yyError);
29126: } else {
29127: yyError = yyError.select("\")\" expected",
29128: yyBase);
29129: }
29130: }
29131: }
29132:
29133: // Nested alternative 2.
29134:
29135: yyBase = yyChoice1;
29136: yyResult = pSymbol(yyBase);
29137: yyError = yyResult.select(yyError);
29138: if (yyResult.hasValue(")")) {
29139:
29140: yyValue = GNode.create("FormalParameters", false);
29141: yyValue.setLocation(location(yyStart));
29142:
29143: return yyResult.createValue(yyValue, yyError);
29144: } else {
29145: yyError = yyError.select("\")\" expected", yyBase);
29146: }
29147: }
29148:
29149: // Done.
29150: yyError = yyError.select("formal parameters expected", yyStart);
29151: return yyError;
29152: }
29153:
29154: // =========================================================================
29155:
29156: /**
29157: * Parse synthetic nonterminal JeannieJava.FormalParameters$$Star1.
29158: *
29159: * @param yyStart The index.
29160: * @return The result.
29161: * @throws IOException Signals an I/O error.
29162: */
29163: private Result pJeannieJava$FormalParameters$$Star1(
29164: final int yyStart) throws IOException {
29165:
29166: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
29167: if (null == yyColumn.chunk11)
29168: yyColumn.chunk11 = new Chunk11();
29169: if (null == yyColumn.chunk11.fJeannieJava$FormalParameters$$Star1)
29170: yyColumn.chunk11.fJeannieJava$FormalParameters$$Star1 = pJeannieJava$FormalParameters$$Star1$1(yyStart);
29171: return yyColumn.chunk11.fJeannieJava$FormalParameters$$Star1;
29172: }
29173:
29174: /** Actually parse JeannieJava.FormalParameters$$Star1. */
29175: private Result pJeannieJava$FormalParameters$$Star1$1(
29176: final int yyStart) throws IOException {
29177:
29178: Result yyResult;
29179: Pair<Node> yyValue;
29180: ParseError yyError = ParseError.DUMMY;
29181:
29182: // Alternative 1.
29183:
29184: yyResult = pSymbol(yyStart);
29185: yyError = yyResult.select(yyError);
29186: if (yyResult.hasValue(",")) {
29187:
29188: yyResult = pJeannieJava$FormalParameter(yyResult.index);
29189: yyError = yyResult.select(yyError);
29190: if (yyResult.hasValue()) {
29191: final Node v$el$1 = yyResult.semanticValue();
29192:
29193: yyResult = pJeannieJava$FormalParameters$$Star1(yyResult.index);
29194: yyError = yyResult.select(yyError);
29195: if (yyResult.hasValue()) {
29196: final Pair<Node> v$2 = yyResult.semanticValue();
29197:
29198: yyValue = new Pair<Node>(v$el$1, v$2);
29199:
29200: return yyResult.createValue(yyValue, yyError);
29201: }
29202: }
29203: }
29204:
29205: // Alternative 2.
29206:
29207: yyValue = Pair.empty();
29208:
29209: return new SemanticValue(yyValue, yyStart, yyError);
29210: }
29211:
29212: // =========================================================================
29213:
29214: /**
29215: * Parse nonterminal xtc.lang.jeannie.JeannieJava.Declarator.
29216: *
29217: * @param yyStart The index.
29218: * @return The result.
29219: * @throws IOException Signals an I/O error.
29220: */
29221: private Result pJeannieJava$Declarator(final int yyStart)
29222: throws IOException {
29223:
29224: Result yyResult;
29225: int yyBase;
29226: int yyOption1;
29227: Node yyOpValue1;
29228: Node yyValue;
29229: ParseError yyError = ParseError.DUMMY;
29230:
29231: // Alternative <Declarator>.
29232:
29233: yyResult = pJavaIdentifier$Identifier(yyStart);
29234: yyError = yyResult.select(yyError);
29235: if (yyResult.hasValue()) {
29236: final String v$g$1 = yyResult.semanticValue();
29237:
29238: yyOption1 = yyResult.index;
29239: yyOpValue1 = null;
29240:
29241: yyResult = pDimensions(yyOption1);
29242: yyError = yyResult.select(yyError);
29243: if (yyResult.hasValue()) {
29244: final Node v$el$1 = yyResult.semanticValue();
29245:
29246: yyOption1 = yyResult.index;
29247: yyOpValue1 = v$el$1;
29248: }
29249: { // Start scope for v$g$2.
29250: final Node v$g$2 = yyOpValue1;
29251:
29252: yyOpValue1 = null;
29253:
29254: yyBase = yyOption1;
29255: yyResult = pSymbol(yyBase);
29256: yyError = yyResult.select(yyError);
29257: if (yyResult.hasValue("=")) {
29258:
29259: yyResult = pJeannieJava$VariableInitializer(yyResult.index);
29260: yyError = yyResult.select(yyError);
29261: if (yyResult.hasValue()) {
29262: final Node v$el$2 = yyResult.semanticValue();
29263:
29264: yyOption1 = yyResult.index;
29265: yyOpValue1 = v$el$2;
29266: }
29267: } else {
29268: yyError = yyError.select("\"=\" expected", yyBase);
29269: }
29270: { // Start scope for v$g$3.
29271: final Node v$g$3 = yyOpValue1;
29272:
29273: yyValue = GNode.create("Declarator", v$g$1, v$g$2,
29274: v$g$3);
29275: yyValue.setLocation(location(yyStart));
29276:
29277: return new SemanticValue(yyValue, yyOption1,
29278: yyError);
29279: } // End scope for v$g$3.
29280: } // End scope for v$g$2.
29281: }
29282:
29283: // Done.
29284: return yyError;
29285: }
29286:
29287: // =========================================================================
29288:
29289: /**
29290: * Parse nonterminal xtc.lang.jeannie.JeannieJava.Declarators.
29291: *
29292: * @param yyStart The index.
29293: * @return The result.
29294: * @throws IOException Signals an I/O error.
29295: */
29296: private Result pJeannieJava$Declarators(final int yyStart)
29297: throws IOException {
29298:
29299: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
29300: if (null == yyColumn.chunk11)
29301: yyColumn.chunk11 = new Chunk11();
29302: if (null == yyColumn.chunk11.fJeannieJava$Declarators)
29303: yyColumn.chunk11.fJeannieJava$Declarators = pJeannieJava$Declarators$1(yyStart);
29304: return yyColumn.chunk11.fJeannieJava$Declarators;
29305: }
29306:
29307: /** Actually parse xtc.lang.jeannie.JeannieJava.Declarators. */
29308: private Result pJeannieJava$Declarators$1(final int yyStart)
29309: throws IOException {
29310:
29311: Result yyResult;
29312: Node yyValue;
29313: ParseError yyError = ParseError.DUMMY;
29314:
29315: // Alternative 1.
29316:
29317: yyResult = pJeannieJava$Declarator(yyStart);
29318: yyError = yyResult.select(yyError);
29319: if (yyResult.hasValue()) {
29320: final Node v$g$1 = yyResult.semanticValue();
29321:
29322: yyResult = pJeannieJava$Declarators$$Star1(yyResult.index);
29323: yyError = yyResult.select(yyError);
29324: if (yyResult.hasValue()) {
29325: final Pair<Node> v$g$2 = yyResult.semanticValue();
29326:
29327: yyValue = GNode.createFromPair("Declarators", v$g$1,
29328: v$g$2);
29329: yyValue.setLocation(location(yyStart));
29330:
29331: return yyResult.createValue(yyValue, yyError);
29332: }
29333: }
29334:
29335: // Done.
29336: return yyError;
29337: }
29338:
29339: // =========================================================================
29340:
29341: /**
29342: * Parse synthetic nonterminal JeannieJava.Declarators$$Star1.
29343: *
29344: * @param yyStart The index.
29345: * @return The result.
29346: * @throws IOException Signals an I/O error.
29347: */
29348: private Result pJeannieJava$Declarators$$Star1(final int yyStart)
29349: throws IOException {
29350:
29351: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
29352: if (null == yyColumn.chunk11)
29353: yyColumn.chunk11 = new Chunk11();
29354: if (null == yyColumn.chunk11.fJeannieJava$Declarators$$Star1)
29355: yyColumn.chunk11.fJeannieJava$Declarators$$Star1 = pJeannieJava$Declarators$$Star1$1(yyStart);
29356: return yyColumn.chunk11.fJeannieJava$Declarators$$Star1;
29357: }
29358:
29359: /** Actually parse JeannieJava.Declarators$$Star1. */
29360: private Result pJeannieJava$Declarators$$Star1$1(final int yyStart)
29361: throws IOException {
29362:
29363: Result yyResult;
29364: Pair<Node> yyValue;
29365: ParseError yyError = ParseError.DUMMY;
29366:
29367: // Alternative 1.
29368:
29369: yyResult = pSymbol(yyStart);
29370: yyError = yyResult.select(yyError);
29371: if (yyResult.hasValue(",")) {
29372:
29373: yyResult = pJeannieJava$Declarator(yyResult.index);
29374: yyError = yyResult.select(yyError);
29375: if (yyResult.hasValue()) {
29376: final Node v$el$1 = yyResult.semanticValue();
29377:
29378: yyResult = pJeannieJava$Declarators$$Star1(yyResult.index);
29379: yyError = yyResult.select(yyError);
29380: if (yyResult.hasValue()) {
29381: final Pair<Node> v$2 = yyResult.semanticValue();
29382:
29383: yyValue = new Pair<Node>(v$el$1, v$2);
29384:
29385: return yyResult.createValue(yyValue, yyError);
29386: }
29387: }
29388: }
29389:
29390: // Alternative 2.
29391:
29392: yyValue = Pair.empty();
29393:
29394: return new SemanticValue(yyValue, yyStart, yyError);
29395: }
29396:
29397: // =========================================================================
29398:
29399: /**
29400: * Parse nonterminal xtc.lang.jeannie.JeannieJava.ClassBody.
29401: *
29402: * @param yyStart The index.
29403: * @return The result.
29404: * @throws IOException Signals an I/O error.
29405: */
29406: private Result pJeannieJava$ClassBody(final int yyStart)
29407: throws IOException {
29408:
29409: Result yyResult;
29410: int yyBase;
29411: int yyRepetition1;
29412: Pair<Node> yyRepValue1;
29413: Node yyValue;
29414: ParseError yyError = ParseError.DUMMY;
29415:
29416: // Alternative <Body>.
29417:
29418: yyResult = pSymbol(yyStart);
29419: yyError = yyResult.select(yyError);
29420: if (yyResult.hasValue("{")) {
29421:
29422: yyRepetition1 = yyResult.index;
29423: yyRepValue1 = Pair.empty();
29424: while (true) {
29425:
29426: yyResult = pJeannieJava$Declaration(yyRepetition1);
29427: yyError = yyResult.select(yyError);
29428: if (yyResult.hasValue()) {
29429: final Node v$el$1 = yyResult.semanticValue();
29430:
29431: yyRepetition1 = yyResult.index;
29432: yyRepValue1 = new Pair<Node>(v$el$1, yyRepValue1);
29433: continue;
29434: }
29435: break;
29436: }
29437: { // Start scope for v$g$1.
29438: final Pair<Node> v$g$1 = yyRepValue1.reverse();
29439:
29440: yyBase = yyRepetition1;
29441: yyResult = pSymbol(yyBase);
29442: yyError = yyResult.select(yyError);
29443: if (yyResult.hasValue("}")) {
29444:
29445: yyValue = GNode.createFromPair("ClassBody", v$g$1);
29446: yyValue.setLocation(location(yyStart));
29447:
29448: return yyResult.createValue(yyValue, yyError);
29449: } else {
29450: yyError = yyError.select("\"}\" expected", yyBase);
29451: }
29452: } // End scope for v$g$1.
29453: }
29454:
29455: // Done.
29456: yyError = yyError.select("class body expected", yyStart);
29457: return yyError;
29458: }
29459:
29460: // =========================================================================
29461:
29462: /**
29463: * Parse nonterminal xtc.lang.jeannie.JeannieJava.Declaration.
29464: *
29465: * @param yyStart The index.
29466: * @return The result.
29467: * @throws IOException Signals an I/O error.
29468: */
29469: private Result pJeannieJava$Declaration(final int yyStart)
29470: throws IOException {
29471:
29472: Result yyResult;
29473: int yyBase;
29474: int yyOption1;
29475: Object yyOpValue1;
29476: Node yyValue;
29477: ParseError yyError = ParseError.DUMMY;
29478:
29479: // Alternative 1.
29480:
29481: yyResult = pJeannieJava$Modifiers(yyStart);
29482: yyError = yyResult.select(yyError);
29483: if (yyResult.hasValue()) {
29484: final Node v$g$1 = yyResult.semanticValue();
29485:
29486: final int yyChoice1 = yyResult.index;
29487:
29488: // Nested alternative 1.
29489:
29490: yyResult = pType(yyChoice1);
29491: yyError = yyResult.select(yyError);
29492: if (yyResult.hasValue()) {
29493: final Node v$g$2 = yyResult.semanticValue();
29494:
29495: yyResult = pJeannieJava$Declarators(yyResult.index);
29496: yyError = yyResult.select(yyError);
29497: if (yyResult.hasValue()) {
29498: final Node v$g$3 = yyResult.semanticValue();
29499:
29500: yyBase = yyResult.index;
29501: yyResult = pSymbol(yyBase);
29502: yyError = yyResult.select(yyError);
29503: if (yyResult.hasValue(";")) {
29504:
29505: yyValue = GNode.create("FieldDeclaration",
29506: v$g$1, v$g$2, v$g$3);
29507: yyValue.setLocation(location(yyStart));
29508:
29509: return yyResult.createValue(yyValue, yyError);
29510: } else {
29511: yyError = yyError.select("\";\" expected",
29512: yyBase);
29513: }
29514: }
29515: }
29516:
29517: // Nested alternative 2.
29518: { // Start scope for nested choice.
29519:
29520: final int yyChoice2 = yyChoice1;
29521:
29522: // Nested alternative 1.
29523:
29524: yyResult = pResultType(yyChoice2);
29525: yyError = yyResult.select(yyError);
29526: if (yyResult.hasValue()) {
29527: final Node v$g$3 = yyResult.semanticValue();
29528:
29529: yyResult = pJavaIdentifier$Identifier(yyResult.index);
29530: yyError = yyResult.select(yyError);
29531: if (yyResult.hasValue()) {
29532: final String v$g$4 = yyResult.semanticValue();
29533:
29534: yyResult = pJeannieJava$FormalParameters(yyResult.index);
29535: yyError = yyResult.select(yyError);
29536: if (yyResult.hasValue()) {
29537: final Node v$g$5 = yyResult.semanticValue();
29538:
29539: yyOption1 = yyResult.index;
29540: yyOpValue1 = null;
29541:
29542: yyResult = pDimensions(yyOption1);
29543: yyError = yyResult.select(yyError);
29544: if (yyResult.hasValue()) {
29545: final Node v$el$1 = yyResult
29546: .semanticValue();
29547:
29548: yyOption1 = yyResult.index;
29549: yyOpValue1 = v$el$1;
29550: }
29551: { // Start scope for v$g$6.
29552: final Node v$g$6 = cast(yyOpValue1);
29553:
29554: yyOpValue1 = null;
29555:
29556: yyResult = pJeannieJava$ThrowsClause(yyOption1);
29557: yyError = yyResult.select(yyError);
29558: if (yyResult.hasValue()) {
29559: final Node v$el$2 = yyResult
29560: .semanticValue();
29561:
29562: yyOption1 = yyResult.index;
29563: yyOpValue1 = v$el$2;
29564: }
29565: { // Start scope for v$g$7.
29566: final Node v$g$7 = cast(yyOpValue1);
29567:
29568: final int yyChoice3 = yyOption1;
29569:
29570: // Nested alternative 1.
29571:
29572: yyResult = pJeannieJava$Block(yyChoice3);
29573: yyError = yyResult.select(yyError);
29574: if (yyResult.hasValue()) {
29575: final Node v$g$8 = yyResult
29576: .semanticValue();
29577:
29578: yyValue = GNode.create(
29579: "MethodDeclaration",
29580: v$g$1, null, v$g$3,
29581: v$g$4, v$g$5, v$g$6,
29582: v$g$7, v$g$8);
29583: yyValue
29584: .setLocation(location(yyStart));
29585:
29586: return yyResult.createValue(
29587: yyValue, yyError);
29588: }
29589:
29590: // Nested alternative 2.
29591:
29592: yyBase = yyChoice3;
29593: yyResult = pSymbol(yyBase);
29594: yyError = yyResult.select(yyError);
29595: if (yyResult.hasValue(";")) {
29596:
29597: yyValue = GNode.create(
29598: "MethodDeclaration",
29599: v$g$1, null, v$g$3,
29600: v$g$4, v$g$5, v$g$6,
29601: v$g$7, null);
29602: yyValue
29603: .setLocation(location(yyStart));
29604:
29605: return yyResult.createValue(
29606: yyValue, yyError);
29607: } else {
29608: yyError = yyError.select(
29609: "\";\" expected",
29610: yyBase);
29611: }
29612: } // End scope for v$g$7.
29613: } // End scope for v$g$6.
29614: }
29615: }
29616: }
29617:
29618: // Nested alternative 2.
29619:
29620: yyResult = pJavaIdentifier$Identifier(yyChoice2);
29621: yyError = yyResult.select(yyError);
29622: if (yyResult.hasValue()) {
29623: final String v$g$3 = yyResult.semanticValue();
29624:
29625: yyResult = pJeannieJava$FormalParameters(yyResult.index);
29626: yyError = yyResult.select(yyError);
29627: if (yyResult.hasValue()) {
29628: final Node v$g$4 = yyResult.semanticValue();
29629:
29630: yyOption1 = yyResult.index;
29631: yyOpValue1 = null;
29632:
29633: yyResult = pJeannieJava$ThrowsClause(yyOption1);
29634: yyError = yyResult.select(yyError);
29635: if (yyResult.hasValue()) {
29636: final Node v$el$1 = yyResult
29637: .semanticValue();
29638:
29639: yyOption1 = yyResult.index;
29640: yyOpValue1 = v$el$1;
29641: }
29642: { // Start scope for v$g$5.
29643: final Node v$g$5 = cast(yyOpValue1);
29644:
29645: yyResult = pJeannieJava$Block(yyOption1);
29646: yyError = yyResult.select(yyError);
29647: if (yyResult.hasValue()) {
29648: final Node v$g$6 = yyResult
29649: .semanticValue();
29650:
29651: yyValue = GNode.create(
29652: "ConstructorDeclaration",
29653: v$g$1, null, v$g$3, v$g$4,
29654: v$g$5, v$g$6);
29655: yyValue.setLocation(location(yyStart));
29656:
29657: return yyResult.createValue(yyValue,
29658: yyError);
29659: }
29660: } // End scope for v$g$5.
29661: }
29662: }
29663: } // End scope for nested choice.
29664:
29665: // Nested alternative 3.
29666:
29667: yyBase = yyChoice1;
29668: yyResult = pJavaIdentifier$Word(yyBase);
29669: yyError = yyResult.select(yyError);
29670: if (yyResult.hasValue("class")) {
29671:
29672: yyResult = pJavaIdentifier$Identifier(yyResult.index);
29673: yyError = yyResult.select(yyError);
29674: if (yyResult.hasValue()) {
29675: final String v$g$2 = yyResult.semanticValue();
29676:
29677: yyOption1 = yyResult.index;
29678: yyOpValue1 = null;
29679:
29680: yyResult = pJeannieJava$Extension(yyOption1);
29681: yyError = yyResult.select(yyError);
29682: if (yyResult.hasValue()) {
29683: final Node v$el$1 = yyResult.semanticValue();
29684:
29685: yyOption1 = yyResult.index;
29686: yyOpValue1 = v$el$1;
29687: }
29688: { // Start scope for v$g$4.
29689: final Node v$g$4 = cast(yyOpValue1);
29690:
29691: yyOpValue1 = null;
29692:
29693: yyResult = pJeannieJava$Implementation(yyOption1);
29694: yyError = yyResult.select(yyError);
29695: if (yyResult.hasValue()) {
29696: final Node v$el$2 = yyResult
29697: .semanticValue();
29698:
29699: yyOption1 = yyResult.index;
29700: yyOpValue1 = v$el$2;
29701: }
29702: { // Start scope for v$g$5.
29703: final Node v$g$5 = cast(yyOpValue1);
29704:
29705: yyResult = pJeannieJava$ClassBody(yyOption1);
29706: yyError = yyResult.select(yyError);
29707: if (yyResult.hasValue()) {
29708: final Node v$g$6 = yyResult
29709: .semanticValue();
29710:
29711: yyValue = GNode.create(
29712: "ClassDeclaration", v$g$1,
29713: v$g$2, null, v$g$4, v$g$5,
29714: v$g$6);
29715: yyValue.setLocation(location(yyStart));
29716:
29717: return yyResult.createValue(yyValue,
29718: yyError);
29719: }
29720: } // End scope for v$g$5.
29721: } // End scope for v$g$4.
29722: }
29723: } else {
29724: yyError = yyError.select("\"class\" expected", yyBase);
29725: }
29726:
29727: // Nested alternative 4.
29728:
29729: yyBase = yyChoice1;
29730: yyResult = pJavaIdentifier$Word(yyBase);
29731: yyError = yyResult.select(yyError);
29732: if (yyResult.hasValue("interface")) {
29733:
29734: yyResult = pJavaIdentifier$Identifier(yyResult.index);
29735: yyError = yyResult.select(yyError);
29736: if (yyResult.hasValue()) {
29737: final String v$g$2 = yyResult.semanticValue();
29738:
29739: yyOption1 = yyResult.index;
29740: yyOpValue1 = null;
29741:
29742: yyResult = pJeannieJava$Extension(yyOption1);
29743: yyError = yyResult.select(yyError);
29744: if (yyResult.hasValue()) {
29745: final Node v$el$1 = yyResult.semanticValue();
29746:
29747: yyOption1 = yyResult.index;
29748: yyOpValue1 = v$el$1;
29749: }
29750: { // Start scope for v$g$4.
29751: final Node v$g$4 = cast(yyOpValue1);
29752:
29753: yyResult = pJeannieJava$ClassBody(yyOption1);
29754: yyError = yyResult.select(yyError);
29755: if (yyResult.hasValue()) {
29756: final Node v$g$5 = yyResult.semanticValue();
29757:
29758: yyValue = GNode.create(
29759: "InterfaceDeclaration", v$g$1,
29760: v$g$2, null, v$g$4, v$g$5);
29761: yyValue.setLocation(location(yyStart));
29762:
29763: return yyResult.createValue(yyValue,
29764: yyError);
29765: }
29766: } // End scope for v$g$4.
29767: }
29768: } else {
29769: yyError = yyError.select("\"interface\" expected",
29770: yyBase);
29771: }
29772: }
29773:
29774: // Alternative 2.
29775:
29776: yyOption1 = yyStart;
29777: yyOpValue1 = null;
29778:
29779: yyBase = yyOption1;
29780: yyResult = pJavaIdentifier$Word(yyBase);
29781: yyError = yyResult.select(yyError);
29782: if (yyResult.hasValue("static")) {
29783: final String v$el$1 = "static";
29784:
29785: yyOption1 = yyResult.index;
29786: yyOpValue1 = v$el$1;
29787: } else {
29788: yyError = yyError.select("\"static\" expected", yyBase);
29789: }
29790: { // Start scope for v$g$1.
29791: final String v$g$1 = cast(yyOpValue1);
29792:
29793: yyResult = pJeannieJava$Block(yyOption1);
29794: yyError = yyResult.select(yyError);
29795: if (yyResult.hasValue()) {
29796: final Node v$g$2 = yyResult.semanticValue();
29797:
29798: yyValue = GNode
29799: .create("BlockDeclaration", v$g$1, v$g$2);
29800: yyValue.setLocation(location(yyStart));
29801:
29802: return yyResult.createValue(yyValue, yyError);
29803: }
29804: } // End scope for v$g$1.
29805:
29806: // Alternative 3.
29807:
29808: yyResult = pSymbol(yyStart);
29809: yyError = yyResult.select(yyError);
29810: if (yyResult.hasValue(";")) {
29811:
29812: yyValue = GNode.create("EmptyDeclaration", false);
29813: yyValue.setLocation(location(yyStart));
29814:
29815: return yyResult.createValue(yyValue, yyError);
29816: }
29817:
29818: // Done.
29819: yyError = yyError.select("declaration expected", yyStart);
29820: return yyError;
29821: }
29822:
29823: // =========================================================================
29824:
29825: /**
29826: * Parse nonterminal xtc.lang.jeannie.JeannieJava.ThrowsClause.
29827: *
29828: * @param yyStart The index.
29829: * @return The result.
29830: * @throws IOException Signals an I/O error.
29831: */
29832: private Result pJeannieJava$ThrowsClause(final int yyStart)
29833: throws IOException {
29834:
29835: Result yyResult;
29836: int yyBase;
29837: int yyRepetition1;
29838: Pair<Node> yyRepValue1;
29839: Node yyValue;
29840: ParseError yyError = ParseError.DUMMY;
29841:
29842: // Alternative 1.
29843:
29844: yyResult = pJavaIdentifier$Word(yyStart);
29845: yyError = yyResult.select(yyError);
29846: if (yyResult.hasValue("throws")) {
29847:
29848: yyResult = pQualifiedIdentifier(yyResult.index);
29849: yyError = yyResult.select(yyError);
29850: if (yyResult.hasValue()) {
29851: final Node v$g$1 = yyResult.semanticValue();
29852:
29853: yyRepetition1 = yyResult.index;
29854: yyRepValue1 = Pair.empty();
29855: while (true) {
29856:
29857: yyBase = yyRepetition1;
29858: yyResult = pSymbol(yyBase);
29859: yyError = yyResult.select(yyError);
29860: if (yyResult.hasValue(",")) {
29861:
29862: yyResult = pQualifiedIdentifier(yyResult.index);
29863: yyError = yyResult.select(yyError);
29864: if (yyResult.hasValue()) {
29865: final Node v$el$1 = yyResult
29866: .semanticValue();
29867:
29868: yyRepetition1 = yyResult.index;
29869: yyRepValue1 = new Pair<Node>(v$el$1,
29870: yyRepValue1);
29871: continue;
29872: }
29873: } else {
29874: yyError = yyError.select("\",\" expected",
29875: yyBase);
29876: }
29877: break;
29878: }
29879: { // Start scope for v$g$2.
29880: final Pair<Node> v$g$2 = yyRepValue1.reverse();
29881:
29882: yyValue = GNode.createFromPair("ThrowsClause",
29883: v$g$1, v$g$2);
29884: yyValue.setLocation(location(yyStart));
29885:
29886: return new SemanticValue(yyValue, yyRepetition1,
29887: yyError);
29888: } // End scope for v$g$2.
29889: }
29890: }
29891:
29892: // Done.
29893: yyError = yyError.select("throws clause expected", yyStart);
29894: return yyError;
29895: }
29896:
29897: // =========================================================================
29898:
29899: /**
29900: * Parse nonterminal xtc.lang.jeannie.JeannieJava.Extension.
29901: *
29902: * @param yyStart The index.
29903: * @return The result.
29904: * @throws IOException Signals an I/O error.
29905: */
29906: private Result pJeannieJava$Extension(final int yyStart)
29907: throws IOException {
29908:
29909: Result yyResult;
29910: int yyBase;
29911: int yyRepetition1;
29912: Pair<Node> yyRepValue1;
29913: Node yyValue;
29914: ParseError yyError = ParseError.DUMMY;
29915:
29916: // Alternative 1.
29917:
29918: yyResult = pJavaIdentifier$Word(yyStart);
29919: yyError = yyResult.select(yyError);
29920: if (yyResult.hasValue("extends")) {
29921:
29922: yyResult = pType(yyResult.index);
29923: yyError = yyResult.select(yyError);
29924: if (yyResult.hasValue()) {
29925: final Node v$g$1 = yyResult.semanticValue();
29926:
29927: yyRepetition1 = yyResult.index;
29928: yyRepValue1 = Pair.empty();
29929: while (true) {
29930:
29931: yyBase = yyRepetition1;
29932: yyResult = pSymbol(yyBase);
29933: yyError = yyResult.select(yyError);
29934: if (yyResult.hasValue(",")) {
29935:
29936: yyResult = pType(yyResult.index);
29937: yyError = yyResult.select(yyError);
29938: if (yyResult.hasValue()) {
29939: final Node v$el$1 = yyResult
29940: .semanticValue();
29941:
29942: yyRepetition1 = yyResult.index;
29943: yyRepValue1 = new Pair<Node>(v$el$1,
29944: yyRepValue1);
29945: continue;
29946: }
29947: } else {
29948: yyError = yyError.select("\",\" expected",
29949: yyBase);
29950: }
29951: break;
29952: }
29953: { // Start scope for v$g$2.
29954: final Pair<Node> v$g$2 = yyRepValue1.reverse();
29955:
29956: yyValue = GNode.createFromPair("Extension", v$g$1,
29957: v$g$2);
29958: yyValue.setLocation(location(yyStart));
29959:
29960: return new SemanticValue(yyValue, yyRepetition1,
29961: yyError);
29962: } // End scope for v$g$2.
29963: }
29964: }
29965:
29966: // Done.
29967: yyError = yyError.select("extension expected", yyStart);
29968: return yyError;
29969: }
29970:
29971: // =========================================================================
29972:
29973: /**
29974: * Parse nonterminal xtc.lang.jeannie.JeannieJava.Implementation.
29975: *
29976: * @param yyStart The index.
29977: * @return The result.
29978: * @throws IOException Signals an I/O error.
29979: */
29980: private Result pJeannieJava$Implementation(final int yyStart)
29981: throws IOException {
29982:
29983: Result yyResult;
29984: int yyBase;
29985: int yyRepetition1;
29986: Pair<Node> yyRepValue1;
29987: Node yyValue;
29988: ParseError yyError = ParseError.DUMMY;
29989:
29990: // Alternative 1.
29991:
29992: yyResult = pJavaIdentifier$Word(yyStart);
29993: yyError = yyResult.select(yyError);
29994: if (yyResult.hasValue("implements")) {
29995:
29996: yyResult = pType(yyResult.index);
29997: yyError = yyResult.select(yyError);
29998: if (yyResult.hasValue()) {
29999: final Node v$g$1 = yyResult.semanticValue();
30000:
30001: yyRepetition1 = yyResult.index;
30002: yyRepValue1 = Pair.empty();
30003: while (true) {
30004:
30005: yyBase = yyRepetition1;
30006: yyResult = pSymbol(yyBase);
30007: yyError = yyResult.select(yyError);
30008: if (yyResult.hasValue(",")) {
30009:
30010: yyResult = pType(yyResult.index);
30011: yyError = yyResult.select(yyError);
30012: if (yyResult.hasValue()) {
30013: final Node v$el$1 = yyResult
30014: .semanticValue();
30015:
30016: yyRepetition1 = yyResult.index;
30017: yyRepValue1 = new Pair<Node>(v$el$1,
30018: yyRepValue1);
30019: continue;
30020: }
30021: } else {
30022: yyError = yyError.select("\",\" expected",
30023: yyBase);
30024: }
30025: break;
30026: }
30027: { // Start scope for v$g$2.
30028: final Pair<Node> v$g$2 = yyRepValue1.reverse();
30029:
30030: yyValue = GNode.createFromPair("Implementation",
30031: v$g$1, v$g$2);
30032: yyValue.setLocation(location(yyStart));
30033:
30034: return new SemanticValue(yyValue, yyRepetition1,
30035: yyError);
30036: } // End scope for v$g$2.
30037: }
30038: }
30039:
30040: // Done.
30041: yyError = yyError.select("implementation expected", yyStart);
30042: return yyError;
30043: }
30044:
30045: // =========================================================================
30046:
30047: /**
30048: * Parse nonterminal xtc.lang.jeannie.JeannieJava.Block.
30049: *
30050: * @param yyStart The index.
30051: * @return The result.
30052: * @throws IOException Signals an I/O error.
30053: */
30054: private Result pJeannieJava$Block(final int yyStart)
30055: throws IOException {
30056: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
30057: if (null == yyColumn.chunk11)
30058: yyColumn.chunk11 = new Chunk11();
30059: if (null == yyColumn.chunk11.fJeannieJava$Block)
30060: yyColumn.chunk11.fJeannieJava$Block = pJeannieJava$Block$1(yyStart);
30061: return yyColumn.chunk11.fJeannieJava$Block;
30062: }
30063:
30064: /** Actually parse xtc.lang.jeannie.JeannieJava.Block. */
30065: private Result pJeannieJava$Block$1(final int yyStart)
30066: throws IOException {
30067: Result yyResult;
30068: Node yyValue;
30069: ParseError yyError = ParseError.DUMMY;
30070:
30071: // Alternative <JavaBlock>.
30072:
30073: yyResult = pJeannieJava$JavaInJavaBlock(yyStart);
30074: yyError = yyResult.select(yyError);
30075: if (yyResult.hasValue()) {
30076: yyValue = yyResult.semanticValue();
30077:
30078: return yyResult.createValue(yyValue, yyError);
30079: }
30080:
30081: // Alternative <CBlock>.
30082:
30083: yyResult = pJeannieJava$CInJavaBlock(yyStart);
30084: yyError = yyResult.select(yyError);
30085: if (yyResult.hasValue()) {
30086: yyValue = yyResult.semanticValue();
30087:
30088: return yyResult.createValue(yyValue, yyError);
30089: }
30090:
30091: // Done.
30092: return yyError;
30093: }
30094:
30095: // =========================================================================
30096:
30097: /**
30098: * Parse nonterminal xtc.lang.jeannie.JeannieJava.DeclarationOrStatement.
30099: *
30100: * @param yyStart The index.
30101: * @return The result.
30102: * @throws IOException Signals an I/O error.
30103: */
30104: private Result pJeannieJava$DeclarationOrStatement(final int yyStart)
30105: throws IOException {
30106:
30107: Result yyResult;
30108: Node yyValue;
30109: ParseError yyError = ParseError.DUMMY;
30110:
30111: // Alternative <Declaration>.
30112:
30113: yyResult = pJeannieJava$InBlockDeclaration(yyStart);
30114: yyError = yyResult.select(yyError);
30115: if (yyResult.hasValue()) {
30116: yyValue = yyResult.semanticValue();
30117:
30118: return yyResult.createValue(yyValue, yyError);
30119: }
30120:
30121: // Alternative <Statement>.
30122:
30123: yyResult = pJeannieJava$Statement(yyStart);
30124: yyError = yyResult.select(yyError);
30125: if (yyResult.hasValue()) {
30126: yyValue = yyResult.semanticValue();
30127:
30128: return yyResult.createValue(yyValue, yyError);
30129: }
30130:
30131: // Done.
30132: return yyError;
30133: }
30134:
30135: // =========================================================================
30136:
30137: /**
30138: * Parse nonterminal xtc.lang.jeannie.JeannieJava.InBlockDeclaration.
30139: *
30140: * @param yyStart The index.
30141: * @return The result.
30142: * @throws IOException Signals an I/O error.
30143: */
30144: private Result pJeannieJava$InBlockDeclaration(final int yyStart)
30145: throws IOException {
30146:
30147: Result yyResult;
30148: int yyBase;
30149: int yyOption1;
30150: Node yyOpValue1;
30151: Node yyValue;
30152: ParseError yyError = ParseError.DUMMY;
30153:
30154: // Alternative <Variable>.
30155:
30156: yyResult = pJeannieJava$VariableDeclaration(yyStart);
30157: yyError = yyResult.select(yyError);
30158: if (yyResult.hasValue()) {
30159: yyValue = yyResult.semanticValue();
30160:
30161: return yyResult.createValue(yyValue, yyError);
30162: }
30163:
30164: // Alternative 2.
30165:
30166: yyResult = pJeannieJava$Modifiers(yyStart);
30167: yyError = yyResult.select(yyError);
30168: if (yyResult.hasValue()) {
30169: final Node v$g$1 = yyResult.semanticValue();
30170:
30171: final int yyChoice1 = yyResult.index;
30172:
30173: // Nested alternative 1.
30174:
30175: yyBase = yyChoice1;
30176: yyResult = pJavaIdentifier$Word(yyBase);
30177: yyError = yyResult.select(yyError);
30178: if (yyResult.hasValue("class")) {
30179:
30180: yyResult = pJavaIdentifier$Identifier(yyResult.index);
30181: yyError = yyResult.select(yyError);
30182: if (yyResult.hasValue()) {
30183: final String v$g$2 = yyResult.semanticValue();
30184:
30185: yyOption1 = yyResult.index;
30186: yyOpValue1 = null;
30187:
30188: yyResult = pJeannieJava$Extension(yyOption1);
30189: yyError = yyResult.select(yyError);
30190: if (yyResult.hasValue()) {
30191: final Node v$el$1 = yyResult.semanticValue();
30192:
30193: yyOption1 = yyResult.index;
30194: yyOpValue1 = v$el$1;
30195: }
30196: { // Start scope for v$g$4.
30197: final Node v$g$4 = yyOpValue1;
30198:
30199: yyOpValue1 = null;
30200:
30201: yyResult = pJeannieJava$Implementation(yyOption1);
30202: yyError = yyResult.select(yyError);
30203: if (yyResult.hasValue()) {
30204: final Node v$el$2 = yyResult
30205: .semanticValue();
30206:
30207: yyOption1 = yyResult.index;
30208: yyOpValue1 = v$el$2;
30209: }
30210: { // Start scope for v$g$5.
30211: final Node v$g$5 = yyOpValue1;
30212:
30213: yyResult = pJeannieJava$ClassBody(yyOption1);
30214: yyError = yyResult.select(yyError);
30215: if (yyResult.hasValue()) {
30216: final Node v$g$6 = yyResult
30217: .semanticValue();
30218:
30219: yyValue = GNode.create(
30220: "ClassDeclaration", v$g$1,
30221: v$g$2, null, v$g$4, v$g$5,
30222: v$g$6);
30223: yyValue.setLocation(location(yyStart));
30224:
30225: return yyResult.createValue(yyValue,
30226: yyError);
30227: }
30228: } // End scope for v$g$5.
30229: } // End scope for v$g$4.
30230: }
30231: } else {
30232: yyError = yyError.select("\"class\" expected", yyBase);
30233: }
30234:
30235: // Nested alternative 2.
30236:
30237: yyBase = yyChoice1;
30238: yyResult = pJavaIdentifier$Word(yyBase);
30239: yyError = yyResult.select(yyError);
30240: if (yyResult.hasValue("interface")) {
30241:
30242: yyResult = pJavaIdentifier$Identifier(yyResult.index);
30243: yyError = yyResult.select(yyError);
30244: if (yyResult.hasValue()) {
30245: final String v$g$2 = yyResult.semanticValue();
30246:
30247: yyOption1 = yyResult.index;
30248: yyOpValue1 = null;
30249:
30250: yyResult = pJeannieJava$Extension(yyOption1);
30251: yyError = yyResult.select(yyError);
30252: if (yyResult.hasValue()) {
30253: final Node v$el$1 = yyResult.semanticValue();
30254:
30255: yyOption1 = yyResult.index;
30256: yyOpValue1 = v$el$1;
30257: }
30258: { // Start scope for v$g$4.
30259: final Node v$g$4 = yyOpValue1;
30260:
30261: yyResult = pJeannieJava$ClassBody(yyOption1);
30262: yyError = yyResult.select(yyError);
30263: if (yyResult.hasValue()) {
30264: final Node v$g$5 = yyResult.semanticValue();
30265:
30266: yyValue = GNode.create(
30267: "InterfaceDeclaration", v$g$1,
30268: v$g$2, null, v$g$4, v$g$5);
30269: yyValue.setLocation(location(yyStart));
30270:
30271: return yyResult.createValue(yyValue,
30272: yyError);
30273: }
30274: } // End scope for v$g$4.
30275: }
30276: } else {
30277: yyError = yyError.select("\"interface\" expected",
30278: yyBase);
30279: }
30280: }
30281:
30282: // Done.
30283: return yyError;
30284: }
30285:
30286: // =========================================================================
30287:
30288: /**
30289: * Parse nonterminal xtc.lang.jeannie.JeannieJava.VariableDeclaration.
30290: *
30291: * @param yyStart The index.
30292: * @return The result.
30293: * @throws IOException Signals an I/O error.
30294: */
30295: private Result pJeannieJava$VariableDeclaration(final int yyStart)
30296: throws IOException {
30297:
30298: Result yyResult;
30299: int yyBase;
30300: Node yyValue;
30301: ParseError yyError = ParseError.DUMMY;
30302:
30303: // Alternative <Declaration>.
30304:
30305: yyResult = pJeannieJava$VariableModifiers(yyStart);
30306: yyError = yyResult.select(yyError);
30307: if (yyResult.hasValue()) {
30308: final Node v$g$1 = yyResult.semanticValue();
30309:
30310: yyResult = pType(yyResult.index);
30311: yyError = yyResult.select(yyError);
30312: if (yyResult.hasValue()) {
30313: final Node v$g$2 = yyResult.semanticValue();
30314:
30315: yyResult = pJeannieJava$Declarators(yyResult.index);
30316: yyError = yyResult.select(yyError);
30317: if (yyResult.hasValue()) {
30318: final Node v$g$3 = yyResult.semanticValue();
30319:
30320: yyBase = yyResult.index;
30321: yyResult = pSymbol(yyBase);
30322: yyError = yyResult.select(yyError);
30323: if (yyResult.hasValue(";")) {
30324:
30325: yyValue = GNode.create("FieldDeclaration",
30326: v$g$1, v$g$2, v$g$3);
30327: yyValue.setLocation(location(yyStart));
30328:
30329: return yyResult.createValue(yyValue, yyError);
30330: } else {
30331: yyError = yyError.select("\";\" expected",
30332: yyBase);
30333: }
30334: }
30335: }
30336: }
30337:
30338: // Done.
30339: return yyError;
30340: }
30341:
30342: // =========================================================================
30343:
30344: /**
30345: * Parse nonterminal xtc.lang.jeannie.JeannieJava.Statement.
30346: *
30347: * @param yyStart The index.
30348: * @return The result.
30349: * @throws IOException Signals an I/O error.
30350: */
30351: private Result pJeannieJava$Statement(final int yyStart)
30352: throws IOException {
30353:
30354: Result yyResult;
30355: int yyBase;
30356: int yyRepetition1;
30357: boolean yyRepeated1;
30358: Pair<Node> yyRepValue1;
30359: int yyOption1;
30360: Object yyOpValue1;
30361: Node yyValue;
30362: ParseError yyError = ParseError.DUMMY;
30363:
30364: // Alternative <Block>.
30365:
30366: yyResult = pJeannieJava$Block(yyStart);
30367: yyError = yyResult.select(yyError);
30368: if (yyResult.hasValue()) {
30369: yyValue = yyResult.semanticValue();
30370:
30371: return yyResult.createValue(yyValue, yyError);
30372: }
30373:
30374: // Alternative 2.
30375:
30376: yyResult = pJavaIdentifier$Word(yyStart);
30377: yyError = yyResult.select(yyError);
30378: if (yyResult.hasValue("if")) {
30379:
30380: yyResult = pJeannieJava$ParExpression(yyResult.index);
30381: yyError = yyResult.select(yyError);
30382: if (yyResult.hasValue()) {
30383: final Node v$g$1 = yyResult.semanticValue();
30384:
30385: yyResult = pJeannieJava$Statement(yyResult.index);
30386: yyError = yyResult.select(yyError);
30387: if (yyResult.hasValue()) {
30388: final Node v$g$2 = yyResult.semanticValue();
30389:
30390: final int yyChoice1 = yyResult.index;
30391:
30392: // Nested alternative 1.
30393:
30394: yyBase = yyChoice1;
30395: yyResult = pJavaIdentifier$Word(yyBase);
30396: yyError = yyResult.select(yyError);
30397: if (yyResult.hasValue("else")) {
30398:
30399: yyResult = pJeannieJava$Statement(yyResult.index);
30400: yyError = yyResult.select(yyError);
30401: if (yyResult.hasValue()) {
30402: final Node v$g$3 = yyResult.semanticValue();
30403:
30404: yyValue = GNode.create(
30405: "ConditionalStatement", v$g$1,
30406: v$g$2, v$g$3);
30407: yyValue.setLocation(location(yyStart));
30408:
30409: return yyResult.createValue(yyValue,
30410: yyError);
30411: }
30412: } else {
30413: yyError = yyError.select("\"else\" expected",
30414: yyBase);
30415: }
30416:
30417: // Nested alternative 2.
30418:
30419: yyValue = GNode.create("ConditionalStatement",
30420: v$g$1, v$g$2, null);
30421: yyValue.setLocation(location(yyStart));
30422:
30423: return new SemanticValue(yyValue, yyChoice1,
30424: yyError);
30425: }
30426: }
30427: }
30428:
30429: // Alternative 3.
30430:
30431: yyResult = pJavaIdentifier$Word(yyStart);
30432: yyError = yyResult.select(yyError);
30433: if (yyResult.hasValue("for")) {
30434:
30435: yyBase = yyResult.index;
30436: yyResult = pSymbol(yyBase);
30437: yyError = yyResult.select(yyError);
30438: if (yyResult.hasValue("(")) {
30439:
30440: yyResult = pJeannieJava$BasicForControl(yyResult.index);
30441: yyError = yyResult.select(yyError);
30442: if (yyResult.hasValue()) {
30443: final Node v$g$1 = yyResult.semanticValue();
30444:
30445: yyBase = yyResult.index;
30446: yyResult = pSymbol(yyBase);
30447: yyError = yyResult.select(yyError);
30448: if (yyResult.hasValue(")")) {
30449:
30450: yyResult = pJeannieJava$Statement(yyResult.index);
30451: yyError = yyResult.select(yyError);
30452: if (yyResult.hasValue()) {
30453: final Node v$g$2 = yyResult.semanticValue();
30454:
30455: yyValue = GNode.create("ForStatement",
30456: v$g$1, v$g$2);
30457: yyValue.setLocation(location(yyStart));
30458:
30459: return yyResult.createValue(yyValue,
30460: yyError);
30461: }
30462: } else {
30463: yyError = yyError.select("\")\" expected",
30464: yyBase);
30465: }
30466: }
30467: } else {
30468: yyError = yyError.select("\"(\" expected", yyBase);
30469: }
30470: }
30471:
30472: // Alternative 4.
30473:
30474: yyResult = pJavaIdentifier$Word(yyStart);
30475: yyError = yyResult.select(yyError);
30476: if (yyResult.hasValue("while")) {
30477:
30478: yyResult = pJeannieJava$ParExpression(yyResult.index);
30479: yyError = yyResult.select(yyError);
30480: if (yyResult.hasValue()) {
30481: final Node v$g$1 = yyResult.semanticValue();
30482:
30483: yyResult = pJeannieJava$Statement(yyResult.index);
30484: yyError = yyResult.select(yyError);
30485: if (yyResult.hasValue()) {
30486: final Node v$g$2 = yyResult.semanticValue();
30487:
30488: yyValue = GNode.create("WhileStatement", v$g$1,
30489: v$g$2);
30490: yyValue.setLocation(location(yyStart));
30491:
30492: return yyResult.createValue(yyValue, yyError);
30493: }
30494: }
30495: }
30496:
30497: // Alternative 5.
30498:
30499: yyResult = pJavaIdentifier$Word(yyStart);
30500: yyError = yyResult.select(yyError);
30501: if (yyResult.hasValue("do")) {
30502:
30503: yyResult = pJeannieJava$Statement(yyResult.index);
30504: yyError = yyResult.select(yyError);
30505: if (yyResult.hasValue()) {
30506: final Node v$g$1 = yyResult.semanticValue();
30507:
30508: yyBase = yyResult.index;
30509: yyResult = pJavaIdentifier$Word(yyBase);
30510: yyError = yyResult.select(yyError);
30511: if (yyResult.hasValue("while")) {
30512:
30513: yyResult = pJeannieJava$ParExpression(yyResult.index);
30514: yyError = yyResult.select(yyError);
30515: if (yyResult.hasValue()) {
30516: final Node v$g$2 = yyResult.semanticValue();
30517:
30518: yyBase = yyResult.index;
30519: yyResult = pSymbol(yyBase);
30520: yyError = yyResult.select(yyError);
30521: if (yyResult.hasValue(";")) {
30522:
30523: yyValue = GNode.create("DoWhileStatement",
30524: v$g$1, v$g$2);
30525: yyValue.setLocation(location(yyStart));
30526:
30527: return yyResult.createValue(yyValue,
30528: yyError);
30529: } else {
30530: yyError = yyError.select("\";\" expected",
30531: yyBase);
30532: }
30533: }
30534: } else {
30535: yyError = yyError.select("\"while\" expected",
30536: yyBase);
30537: }
30538: }
30539: }
30540:
30541: // Alternative 6.
30542:
30543: yyResult = pJavaIdentifier$Word(yyStart);
30544: yyError = yyResult.select(yyError);
30545: if (yyResult.hasValue("try")) {
30546:
30547: yyResult = pJeannieJava$Block(yyResult.index);
30548: yyError = yyResult.select(yyError);
30549: if (yyResult.hasValue()) {
30550: final Node v$g$1 = yyResult.semanticValue();
30551:
30552: final int yyChoice1 = yyResult.index;
30553:
30554: // Nested alternative 1.
30555:
30556: yyRepetition1 = yyChoice1;
30557: yyRepValue1 = Pair.empty();
30558: while (true) {
30559:
30560: yyResult = pJeannieJava$CatchClause(yyRepetition1);
30561: yyError = yyResult.select(yyError);
30562: if (yyResult.hasValue()) {
30563: final Node v$el$1 = yyResult.semanticValue();
30564:
30565: yyRepetition1 = yyResult.index;
30566: yyRepValue1 = new Pair<Node>(v$el$1,
30567: yyRepValue1);
30568: continue;
30569: }
30570: break;
30571: }
30572: { // Start scope for v$g$2.
30573: final Pair<Node> v$g$2 = yyRepValue1.reverse();
30574:
30575: yyBase = yyRepetition1;
30576: yyResult = pJavaIdentifier$Word(yyBase);
30577: yyError = yyResult.select(yyError);
30578: if (yyResult.hasValue("finally")) {
30579:
30580: yyResult = pJeannieJava$Block(yyResult.index);
30581: yyError = yyResult.select(yyError);
30582: if (yyResult.hasValue()) {
30583: final Node v$g$3 = yyResult.semanticValue();
30584:
30585: yyValue = GNode.create(
30586: "TryCatchFinallyStatement",
30587: v$g$2.size() + 2).add(v$g$1)
30588: .addAll(v$g$2).add(v$g$3);
30589: yyValue.setLocation(location(yyStart));
30590:
30591: return yyResult.createValue(yyValue,
30592: yyError);
30593: }
30594: } else {
30595: yyError = yyError.select(
30596: "\"finally\" expected", yyBase);
30597: }
30598: } // End scope for v$g$2.
30599:
30600: // Nested alternative 2.
30601:
30602: yyRepetition1 = yyChoice1;
30603: yyRepeated1 = false;
30604: yyRepValue1 = Pair.empty();
30605: while (true) {
30606:
30607: yyResult = pJeannieJava$CatchClause(yyRepetition1);
30608: yyError = yyResult.select(yyError);
30609: if (yyResult.hasValue()) {
30610: final Node v$el$2 = yyResult.semanticValue();
30611:
30612: yyRepetition1 = yyResult.index;
30613: yyRepeated1 = true;
30614: yyRepValue1 = new Pair<Node>(v$el$2,
30615: yyRepValue1);
30616: continue;
30617: }
30618: break;
30619: }
30620:
30621: if (yyRepeated1) {
30622: final Pair<Node> v$g$4 = yyRepValue1.reverse();
30623:
30624: yyValue = GNode.create("TryCatchFinallyStatement",
30625: v$g$4.size() + 2).add(v$g$1).addAll(v$g$4)
30626: .add(null);
30627: yyValue.setLocation(location(yyStart));
30628:
30629: return new SemanticValue(yyValue, yyRepetition1,
30630: yyError);
30631: }
30632: }
30633: }
30634:
30635: // Alternative 7.
30636:
30637: yyResult = pJavaIdentifier$Word(yyStart);
30638: yyError = yyResult.select(yyError);
30639: if (yyResult.hasValue("switch")) {
30640:
30641: yyResult = pJeannieJava$ParExpression(yyResult.index);
30642: yyError = yyResult.select(yyError);
30643: if (yyResult.hasValue()) {
30644: final Node v$g$1 = yyResult.semanticValue();
30645:
30646: yyBase = yyResult.index;
30647: yyResult = pSymbol(yyBase);
30648: yyError = yyResult.select(yyError);
30649: if (yyResult.hasValue("{")) {
30650:
30651: yyRepetition1 = yyResult.index;
30652: yyRepValue1 = Pair.empty();
30653: while (true) {
30654:
30655: yyResult = pJeannieJava$SwitchClause(yyRepetition1);
30656: yyError = yyResult.select(yyError);
30657: if (yyResult.hasValue()) {
30658: final Node v$el$1 = yyResult
30659: .semanticValue();
30660:
30661: yyRepetition1 = yyResult.index;
30662: yyRepValue1 = new Pair<Node>(v$el$1,
30663: yyRepValue1);
30664: continue;
30665: }
30666: break;
30667: }
30668: { // Start scope for v$g$2.
30669: final Pair<Node> v$g$2 = yyRepValue1.reverse();
30670:
30671: yyBase = yyRepetition1;
30672: yyResult = pSymbol(yyBase);
30673: yyError = yyResult.select(yyError);
30674: if (yyResult.hasValue("}")) {
30675:
30676: yyValue = GNode.createFromPair(
30677: "SwitchStatement", v$g$1, v$g$2);
30678: yyValue.setLocation(location(yyStart));
30679:
30680: return yyResult.createValue(yyValue,
30681: yyError);
30682: } else {
30683: yyError = yyError.select("\"}\" expected",
30684: yyBase);
30685: }
30686: } // End scope for v$g$2.
30687: } else {
30688: yyError = yyError.select("\"{\" expected", yyBase);
30689: }
30690: }
30691: }
30692:
30693: // Alternative 8.
30694:
30695: yyResult = pJavaIdentifier$Word(yyStart);
30696: yyError = yyResult.select(yyError);
30697: if (yyResult.hasValue("synchronized")) {
30698:
30699: yyResult = pJeannieJava$ParExpression(yyResult.index);
30700: yyError = yyResult.select(yyError);
30701: if (yyResult.hasValue()) {
30702: final Node v$g$1 = yyResult.semanticValue();
30703:
30704: yyResult = pJeannieJava$Block(yyResult.index);
30705: yyError = yyResult.select(yyError);
30706: if (yyResult.hasValue()) {
30707: final Node v$g$2 = yyResult.semanticValue();
30708:
30709: yyValue = GNode.create("SynchronizedStatement",
30710: v$g$1, v$g$2);
30711: yyValue.setLocation(location(yyStart));
30712:
30713: return yyResult.createValue(yyValue, yyError);
30714: }
30715: }
30716: }
30717:
30718: // Alternative 9.
30719:
30720: yyResult = pJavaIdentifier$Word(yyStart);
30721: yyError = yyResult.select(yyError);
30722: if (yyResult.hasValue("return")) {
30723:
30724: yyOption1 = yyResult.index;
30725: yyOpValue1 = null;
30726:
30727: yyResult = pJeannieJava$Expression(yyOption1);
30728: yyError = yyResult.select(yyError);
30729: if (yyResult.hasValue()) {
30730: final Node v$el$1 = yyResult.semanticValue();
30731:
30732: yyOption1 = yyResult.index;
30733: yyOpValue1 = v$el$1;
30734: }
30735: { // Start scope for v$g$1.
30736: final Node v$g$1 = cast(yyOpValue1);
30737:
30738: yyBase = yyOption1;
30739: yyResult = pSymbol(yyBase);
30740: yyError = yyResult.select(yyError);
30741: if (yyResult.hasValue(";")) {
30742:
30743: yyValue = GNode.create("ReturnStatement", v$g$1);
30744: yyValue.setLocation(location(yyStart));
30745:
30746: return yyResult.createValue(yyValue, yyError);
30747: } else {
30748: yyError = yyError.select("\";\" expected", yyBase);
30749: }
30750: } // End scope for v$g$1.
30751: }
30752:
30753: // Alternative 10.
30754:
30755: yyResult = pJavaIdentifier$Word(yyStart);
30756: yyError = yyResult.select(yyError);
30757: if (yyResult.hasValue("throw")) {
30758:
30759: yyResult = pJeannieJava$Expression(yyResult.index);
30760: yyError = yyResult.select(yyError);
30761: if (yyResult.hasValue()) {
30762: final Node v$g$1 = yyResult.semanticValue();
30763:
30764: yyBase = yyResult.index;
30765: yyResult = pSymbol(yyBase);
30766: yyError = yyResult.select(yyError);
30767: if (yyResult.hasValue(";")) {
30768:
30769: yyValue = GNode.create("ThrowStatement", v$g$1);
30770: yyValue.setLocation(location(yyStart));
30771:
30772: return yyResult.createValue(yyValue, yyError);
30773: } else {
30774: yyError = yyError.select("\";\" expected", yyBase);
30775: }
30776: }
30777: }
30778:
30779: // Alternative 11.
30780:
30781: yyResult = pJavaIdentifier$Word(yyStart);
30782: yyError = yyResult.select(yyError);
30783: if (yyResult.hasValue("break")) {
30784:
30785: yyOption1 = yyResult.index;
30786: yyOpValue1 = null;
30787:
30788: yyResult = pJavaIdentifier$Identifier(yyOption1);
30789: yyError = yyResult.select(yyError);
30790: if (yyResult.hasValue()) {
30791: final String v$el$1 = yyResult.semanticValue();
30792:
30793: yyOption1 = yyResult.index;
30794: yyOpValue1 = v$el$1;
30795: }
30796: { // Start scope for v$g$1.
30797: final String v$g$1 = cast(yyOpValue1);
30798:
30799: yyBase = yyOption1;
30800: yyResult = pSymbol(yyBase);
30801: yyError = yyResult.select(yyError);
30802: if (yyResult.hasValue(";")) {
30803:
30804: yyValue = GNode.create("BreakStatement", v$g$1);
30805: yyValue.setLocation(location(yyStart));
30806:
30807: return yyResult.createValue(yyValue, yyError);
30808: } else {
30809: yyError = yyError.select("\";\" expected", yyBase);
30810: }
30811: } // End scope for v$g$1.
30812: }
30813:
30814: // Alternative 12.
30815:
30816: yyResult = pJavaIdentifier$Word(yyStart);
30817: yyError = yyResult.select(yyError);
30818: if (yyResult.hasValue("continue")) {
30819:
30820: yyOption1 = yyResult.index;
30821: yyOpValue1 = null;
30822:
30823: yyResult = pJavaIdentifier$Identifier(yyOption1);
30824: yyError = yyResult.select(yyError);
30825: if (yyResult.hasValue()) {
30826: final String v$el$1 = yyResult.semanticValue();
30827:
30828: yyOption1 = yyResult.index;
30829: yyOpValue1 = v$el$1;
30830: }
30831: { // Start scope for v$g$1.
30832: final String v$g$1 = cast(yyOpValue1);
30833:
30834: yyBase = yyOption1;
30835: yyResult = pSymbol(yyBase);
30836: yyError = yyResult.select(yyError);
30837: if (yyResult.hasValue(";")) {
30838:
30839: yyValue = GNode.create("ContinueStatement", v$g$1);
30840: yyValue.setLocation(location(yyStart));
30841:
30842: return yyResult.createValue(yyValue, yyError);
30843: } else {
30844: yyError = yyError.select("\";\" expected", yyBase);
30845: }
30846: } // End scope for v$g$1.
30847: }
30848:
30849: // Alternative 13.
30850:
30851: yyResult = pJavaIdentifier$Identifier(yyStart);
30852: yyError = yyResult.select(yyError);
30853: if (yyResult.hasValue()) {
30854: final String v$g$1 = yyResult.semanticValue();
30855:
30856: yyBase = yyResult.index;
30857: yyResult = pSymbol(yyBase);
30858: yyError = yyResult.select(yyError);
30859: if (yyResult.hasValue(":")) {
30860:
30861: yyResult = pJeannieJava$Statement(yyResult.index);
30862: yyError = yyResult.select(yyError);
30863: if (yyResult.hasValue()) {
30864: final Node v$g$2 = yyResult.semanticValue();
30865:
30866: yyValue = GNode.create("LabeledStatement", v$g$1,
30867: v$g$2);
30868: yyValue.setLocation(location(yyStart));
30869:
30870: return yyResult.createValue(yyValue, yyError);
30871: }
30872: } else {
30873: yyError = yyError.select("\":\" expected", yyBase);
30874: }
30875: }
30876:
30877: // Alternative 14.
30878:
30879: yyResult = pJeannieJava$Expression(yyStart);
30880: yyError = yyResult.select(yyError);
30881: if (yyResult.hasValue()) {
30882: final Node v$g$1 = yyResult.semanticValue();
30883:
30884: yyBase = yyResult.index;
30885: yyResult = pSymbol(yyBase);
30886: yyError = yyResult.select(yyError);
30887: if (yyResult.hasValue(";")) {
30888:
30889: yyValue = GNode.create("ExpressionStatement", v$g$1);
30890: yyValue.setLocation(location(yyStart));
30891:
30892: return yyResult.createValue(yyValue, yyError);
30893: } else {
30894: yyError = yyError.select("\";\" expected", yyBase);
30895: }
30896: }
30897:
30898: // Alternative 15.
30899:
30900: yyResult = pJavaIdentifier$Word(yyStart);
30901: yyError = yyResult.select(yyError);
30902: if (yyResult.hasValue("assert")) {
30903:
30904: yyResult = pJeannieJava$Expression(yyResult.index);
30905: yyError = yyResult.select(yyError);
30906: if (yyResult.hasValue()) {
30907: final Node v$g$1 = yyResult.semanticValue();
30908:
30909: yyOption1 = yyResult.index;
30910: yyOpValue1 = null;
30911:
30912: yyBase = yyOption1;
30913: yyResult = pSymbol(yyBase);
30914: yyError = yyResult.select(yyError);
30915: if (yyResult.hasValue(":")) {
30916:
30917: yyResult = pJeannieJava$Expression(yyResult.index);
30918: yyError = yyResult.select(yyError);
30919: if (yyResult.hasValue()) {
30920: final Node v$el$1 = yyResult.semanticValue();
30921:
30922: yyOption1 = yyResult.index;
30923: yyOpValue1 = v$el$1;
30924: }
30925: } else {
30926: yyError = yyError.select("\":\" expected", yyBase);
30927: }
30928: { // Start scope for v$g$2.
30929: final Node v$g$2 = cast(yyOpValue1);
30930:
30931: yyBase = yyOption1;
30932: yyResult = pSymbol(yyBase);
30933: yyError = yyResult.select(yyError);
30934: if (yyResult.hasValue(";")) {
30935:
30936: yyValue = GNode.create("AssertStatement",
30937: v$g$1, v$g$2);
30938: yyValue.setLocation(location(yyStart));
30939:
30940: return yyResult.createValue(yyValue, yyError);
30941: } else {
30942: yyError = yyError.select("\";\" expected",
30943: yyBase);
30944: }
30945: } // End scope for v$g$2.
30946: }
30947: }
30948:
30949: // Alternative 16.
30950:
30951: yyResult = pSymbol(yyStart);
30952: yyError = yyResult.select(yyError);
30953: if (yyResult.hasValue(";")) {
30954:
30955: yyValue = GNode.create("EmptyStatement", false);
30956: yyValue.setLocation(location(yyStart));
30957:
30958: return yyResult.createValue(yyValue, yyError);
30959: }
30960:
30961: // Done.
30962: yyError = yyError.select("statement expected", yyStart);
30963: return yyError;
30964: }
30965:
30966: // =========================================================================
30967:
30968: /**
30969: * Parse nonterminal xtc.lang.jeannie.JeannieJava.BasicForControl.
30970: *
30971: * @param yyStart The index.
30972: * @return The result.
30973: * @throws IOException Signals an I/O error.
30974: */
30975: private Result pJeannieJava$BasicForControl(final int yyStart)
30976: throws IOException {
30977:
30978: Result yyResult;
30979: int yyBase;
30980: int yyOption1;
30981: Node yyOpValue1;
30982: Node yyValue;
30983: ParseError yyError = ParseError.DUMMY;
30984:
30985: // Alternative <Declaration>.
30986:
30987: yyResult = pJeannieJava$VariableModifiers(yyStart);
30988: yyError = yyResult.select(yyError);
30989: if (yyResult.hasValue()) {
30990: final Node v$g$1 = yyResult.semanticValue();
30991:
30992: yyResult = pType(yyResult.index);
30993: yyError = yyResult.select(yyError);
30994: if (yyResult.hasValue()) {
30995: final Node v$g$2 = yyResult.semanticValue();
30996:
30997: yyResult = pJeannieJava$Declarators(yyResult.index);
30998: yyError = yyResult.select(yyError);
30999: if (yyResult.hasValue()) {
31000: final Node v$g$3 = yyResult.semanticValue();
31001:
31002: yyBase = yyResult.index;
31003: yyResult = pSymbol(yyBase);
31004: yyError = yyResult.select(yyError);
31005: if (yyResult.hasValue(";")) {
31006:
31007: yyOption1 = yyResult.index;
31008: yyOpValue1 = null;
31009:
31010: yyResult = pJeannieJava$Expression(yyOption1);
31011: yyError = yyResult.select(yyError);
31012: if (yyResult.hasValue()) {
31013: final Node v$el$1 = yyResult
31014: .semanticValue();
31015:
31016: yyOption1 = yyResult.index;
31017: yyOpValue1 = v$el$1;
31018: }
31019: { // Start scope for v$g$4.
31020: final Node v$g$4 = yyOpValue1;
31021:
31022: yyBase = yyOption1;
31023: yyResult = pSymbol(yyBase);
31024: yyError = yyResult.select(yyError);
31025: if (yyResult.hasValue(";")) {
31026:
31027: yyOption1 = yyResult.index;
31028: yyOpValue1 = null;
31029:
31030: yyResult = pJeannieJava$ExpressionList(yyOption1);
31031: yyError = yyResult.select(yyError);
31032: if (yyResult.hasValue()) {
31033: final Node v$el$2 = yyResult
31034: .semanticValue();
31035:
31036: yyOption1 = yyResult.index;
31037: yyOpValue1 = v$el$2;
31038: }
31039: { // Start scope for v$g$5.
31040: final Node v$g$5 = yyOpValue1;
31041:
31042: yyValue = GNode.create(
31043: "BasicForControl", v$g$1,
31044: v$g$2, v$g$3, v$g$4, v$g$5);
31045: yyValue
31046: .setLocation(location(yyStart));
31047:
31048: return new SemanticValue(yyValue,
31049: yyOption1, yyError);
31050: } // End scope for v$g$5.
31051: } else {
31052: yyError = yyError.select(
31053: "\";\" expected", yyBase);
31054: }
31055: } // End scope for v$g$4.
31056: } else {
31057: yyError = yyError.select("\";\" expected",
31058: yyBase);
31059: }
31060: }
31061: }
31062: }
31063:
31064: // Alternative <Initialization>.
31065:
31066: yyOption1 = yyStart;
31067: yyOpValue1 = null;
31068:
31069: yyResult = pJeannieJava$ExpressionList(yyOption1);
31070: yyError = yyResult.select(yyError);
31071: if (yyResult.hasValue()) {
31072: final Node v$el$3 = yyResult.semanticValue();
31073:
31074: yyOption1 = yyResult.index;
31075: yyOpValue1 = v$el$3;
31076: }
31077: { // Start scope for v$g$8.
31078: final Node v$g$8 = yyOpValue1;
31079:
31080: yyBase = yyOption1;
31081: yyResult = pSymbol(yyBase);
31082: yyError = yyResult.select(yyError);
31083: if (yyResult.hasValue(";")) {
31084:
31085: yyOption1 = yyResult.index;
31086: yyOpValue1 = null;
31087:
31088: yyResult = pJeannieJava$Expression(yyOption1);
31089: yyError = yyResult.select(yyError);
31090: if (yyResult.hasValue()) {
31091: final Node v$el$4 = yyResult.semanticValue();
31092:
31093: yyOption1 = yyResult.index;
31094: yyOpValue1 = v$el$4;
31095: }
31096: { // Start scope for v$g$9.
31097: final Node v$g$9 = yyOpValue1;
31098:
31099: yyBase = yyOption1;
31100: yyResult = pSymbol(yyBase);
31101: yyError = yyResult.select(yyError);
31102: if (yyResult.hasValue(";")) {
31103:
31104: yyOption1 = yyResult.index;
31105: yyOpValue1 = null;
31106:
31107: yyResult = pJeannieJava$ExpressionList(yyOption1);
31108: yyError = yyResult.select(yyError);
31109: if (yyResult.hasValue()) {
31110: final Node v$el$5 = yyResult
31111: .semanticValue();
31112:
31113: yyOption1 = yyResult.index;
31114: yyOpValue1 = v$el$5;
31115: }
31116: { // Start scope for v$g$10.
31117: final Node v$g$10 = yyOpValue1;
31118:
31119: yyValue = GNode.create("BasicForControl",
31120: null, null, v$g$8, v$g$9, v$g$10);
31121: yyValue.setLocation(location(yyStart));
31122:
31123: return new SemanticValue(yyValue,
31124: yyOption1, yyError);
31125: } // End scope for v$g$10.
31126: } else {
31127: yyError = yyError.select("\";\" expected",
31128: yyBase);
31129: }
31130: } // End scope for v$g$9.
31131: } else {
31132: yyError = yyError.select("\";\" expected", yyBase);
31133: }
31134: } // End scope for v$g$8.
31135:
31136: // Done.
31137: return yyError;
31138: }
31139:
31140: // =========================================================================
31141:
31142: /**
31143: * Parse nonterminal xtc.lang.jeannie.JeannieJava.ParExpression.
31144: *
31145: * @param yyStart The index.
31146: * @return The result.
31147: * @throws IOException Signals an I/O error.
31148: */
31149: private Result pJeannieJava$ParExpression(final int yyStart)
31150: throws IOException {
31151:
31152: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
31153: if (null == yyColumn.chunk11)
31154: yyColumn.chunk11 = new Chunk11();
31155: if (null == yyColumn.chunk11.fJeannieJava$ParExpression)
31156: yyColumn.chunk11.fJeannieJava$ParExpression = pJeannieJava$ParExpression$1(yyStart);
31157: return yyColumn.chunk11.fJeannieJava$ParExpression;
31158: }
31159:
31160: /** Actually parse xtc.lang.jeannie.JeannieJava.ParExpression. */
31161: private Result pJeannieJava$ParExpression$1(final int yyStart)
31162: throws IOException {
31163:
31164: Result yyResult;
31165: int yyBase;
31166: Node yyValue;
31167: ParseError yyError = ParseError.DUMMY;
31168:
31169: // Alternative 1.
31170:
31171: yyResult = pSymbol(yyStart);
31172: yyError = yyResult.select(yyError);
31173: if (yyResult.hasValue("(")) {
31174:
31175: yyResult = pJeannieJava$Expression(yyResult.index);
31176: yyError = yyResult.select(yyError);
31177: if (yyResult.hasValue()) {
31178: yyValue = yyResult.semanticValue();
31179:
31180: yyBase = yyResult.index;
31181: yyResult = pSymbol(yyBase);
31182: yyError = yyResult.select(yyError);
31183: if (yyResult.hasValue(")")) {
31184:
31185: return yyResult.createValue(yyValue, yyError);
31186: } else {
31187: yyError = yyError.select("\")\" expected", yyBase);
31188: }
31189: }
31190: }
31191:
31192: // Done.
31193: yyError = yyError.select("par expression expected", yyStart);
31194: return yyError;
31195: }
31196:
31197: // =========================================================================
31198:
31199: /**
31200: * Parse nonterminal xtc.lang.jeannie.JeannieJava.TryCatchFinallyStatement.
31201: *
31202: * @param yyStart The index.
31203: * @return The result.
31204: * @throws IOException Signals an I/O error.
31205: */
31206: private Result pJeannieJava$TryCatchFinallyStatement(
31207: final int yyStart) throws IOException {
31208:
31209: Result yyResult;
31210: int yyBase;
31211: int yyRepetition1;
31212: boolean yyRepeated1;
31213: Pair<Node> yyRepValue1;
31214: Node yyValue;
31215: ParseError yyError = ParseError.DUMMY;
31216:
31217: // Alternative 1.
31218:
31219: yyResult = pJavaIdentifier$Word(yyStart);
31220: yyError = yyResult.select(yyError);
31221: if (yyResult.hasValue("try")) {
31222:
31223: yyResult = pJeannieJava$Block(yyResult.index);
31224: yyError = yyResult.select(yyError);
31225: if (yyResult.hasValue()) {
31226: final Node v$g$1 = yyResult.semanticValue();
31227:
31228: final int yyChoice1 = yyResult.index;
31229:
31230: // Nested alternative 1.
31231:
31232: yyRepetition1 = yyChoice1;
31233: yyRepValue1 = Pair.empty();
31234: while (true) {
31235:
31236: yyResult = pJeannieJava$CatchClause(yyRepetition1);
31237: yyError = yyResult.select(yyError);
31238: if (yyResult.hasValue()) {
31239: final Node v$el$1 = yyResult.semanticValue();
31240:
31241: yyRepetition1 = yyResult.index;
31242: yyRepValue1 = new Pair<Node>(v$el$1,
31243: yyRepValue1);
31244: continue;
31245: }
31246: break;
31247: }
31248: { // Start scope for v$g$2.
31249: final Pair<Node> v$g$2 = yyRepValue1.reverse();
31250:
31251: yyBase = yyRepetition1;
31252: yyResult = pJavaIdentifier$Word(yyBase);
31253: yyError = yyResult.select(yyError);
31254: if (yyResult.hasValue("finally")) {
31255:
31256: yyResult = pJeannieJava$Block(yyResult.index);
31257: yyError = yyResult.select(yyError);
31258: if (yyResult.hasValue()) {
31259: final Node v$g$3 = yyResult.semanticValue();
31260:
31261: yyValue = GNode.create(
31262: "TryCatchFinallyStatement",
31263: v$g$2.size() + 2).add(v$g$1)
31264: .addAll(v$g$2).add(v$g$3);
31265: yyValue.setLocation(location(yyStart));
31266:
31267: return yyResult.createValue(yyValue,
31268: yyError);
31269: }
31270: } else {
31271: yyError = yyError.select(
31272: "\"finally\" expected", yyBase);
31273: }
31274: } // End scope for v$g$2.
31275:
31276: // Nested alternative 2.
31277:
31278: yyRepetition1 = yyChoice1;
31279: yyRepeated1 = false;
31280: yyRepValue1 = Pair.empty();
31281: while (true) {
31282:
31283: yyResult = pJeannieJava$CatchClause(yyRepetition1);
31284: yyError = yyResult.select(yyError);
31285: if (yyResult.hasValue()) {
31286: final Node v$el$2 = yyResult.semanticValue();
31287:
31288: yyRepetition1 = yyResult.index;
31289: yyRepeated1 = true;
31290: yyRepValue1 = new Pair<Node>(v$el$2,
31291: yyRepValue1);
31292: continue;
31293: }
31294: break;
31295: }
31296:
31297: if (yyRepeated1) {
31298: final Pair<Node> v$g$4 = yyRepValue1.reverse();
31299:
31300: yyValue = GNode.create("TryCatchFinallyStatement",
31301: v$g$4.size() + 2).add(v$g$1).addAll(v$g$4)
31302: .add(null);
31303: yyValue.setLocation(location(yyStart));
31304:
31305: return new SemanticValue(yyValue, yyRepetition1,
31306: yyError);
31307: }
31308: }
31309: }
31310:
31311: // Done.
31312: yyError = yyError.select(
31313: "try catch finally statement expected", yyStart);
31314: return yyError;
31315: }
31316:
31317: // =========================================================================
31318:
31319: /**
31320: * Parse nonterminal xtc.lang.jeannie.JeannieJava.CatchClause.
31321: *
31322: * @param yyStart The index.
31323: * @return The result.
31324: * @throws IOException Signals an I/O error.
31325: */
31326: private Result pJeannieJava$CatchClause(final int yyStart)
31327: throws IOException {
31328:
31329: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
31330: if (null == yyColumn.chunk11)
31331: yyColumn.chunk11 = new Chunk11();
31332: if (null == yyColumn.chunk11.fJeannieJava$CatchClause)
31333: yyColumn.chunk11.fJeannieJava$CatchClause = pJeannieJava$CatchClause$1(yyStart);
31334: return yyColumn.chunk11.fJeannieJava$CatchClause;
31335: }
31336:
31337: /** Actually parse xtc.lang.jeannie.JeannieJava.CatchClause. */
31338: private Result pJeannieJava$CatchClause$1(final int yyStart)
31339: throws IOException {
31340:
31341: Result yyResult;
31342: int yyBase;
31343: Node yyValue;
31344: ParseError yyError = ParseError.DUMMY;
31345:
31346: // Alternative 1.
31347:
31348: yyResult = pJavaIdentifier$Word(yyStart);
31349: yyError = yyResult.select(yyError);
31350: if (yyResult.hasValue("catch")) {
31351:
31352: yyBase = yyResult.index;
31353: yyResult = pSymbol(yyBase);
31354: yyError = yyResult.select(yyError);
31355: if (yyResult.hasValue("(")) {
31356:
31357: yyResult = pJeannieJava$FormalParameter(yyResult.index);
31358: yyError = yyResult.select(yyError);
31359: if (yyResult.hasValue()) {
31360: final Node v$g$1 = yyResult.semanticValue();
31361:
31362: yyBase = yyResult.index;
31363: yyResult = pSymbol(yyBase);
31364: yyError = yyResult.select(yyError);
31365: if (yyResult.hasValue(")")) {
31366:
31367: yyResult = pJeannieJava$Block(yyResult.index);
31368: yyError = yyResult.select(yyError);
31369: if (yyResult.hasValue()) {
31370: final Node v$g$2 = yyResult.semanticValue();
31371:
31372: yyValue = GNode.create("CatchClause",
31373: v$g$1, v$g$2);
31374: yyValue.setLocation(location(yyStart));
31375:
31376: return yyResult.createValue(yyValue,
31377: yyError);
31378: }
31379: } else {
31380: yyError = yyError.select("\")\" expected",
31381: yyBase);
31382: }
31383: }
31384: } else {
31385: yyError = yyError.select("\"(\" expected", yyBase);
31386: }
31387: }
31388:
31389: // Done.
31390: yyError = yyError.select("catch clause expected", yyStart);
31391: return yyError;
31392: }
31393:
31394: // =========================================================================
31395:
31396: /**
31397: * Parse nonterminal xtc.lang.jeannie.JeannieJava.SwitchClause.
31398: *
31399: * @param yyStart The index.
31400: * @return The result.
31401: * @throws IOException Signals an I/O error.
31402: */
31403: private Result pJeannieJava$SwitchClause(final int yyStart)
31404: throws IOException {
31405:
31406: Result yyResult;
31407: int yyBase;
31408: int yyRepetition1;
31409: Pair<Node> yyRepValue1;
31410: Node yyValue;
31411: ParseError yyError = ParseError.DUMMY;
31412:
31413: // Alternative 1.
31414:
31415: yyResult = pJavaIdentifier$Word(yyStart);
31416: yyError = yyResult.select(yyError);
31417: if (yyResult.hasValue("case")) {
31418:
31419: yyResult = pJeannieJava$Expression(yyResult.index);
31420: yyError = yyResult.select(yyError);
31421: if (yyResult.hasValue()) {
31422: final Node v$g$1 = yyResult.semanticValue();
31423:
31424: yyBase = yyResult.index;
31425: yyResult = pSymbol(yyBase);
31426: yyError = yyResult.select(yyError);
31427: if (yyResult.hasValue(":")) {
31428:
31429: yyRepetition1 = yyResult.index;
31430: yyRepValue1 = Pair.empty();
31431: while (true) {
31432:
31433: yyResult = pJeannieJava$DeclarationOrStatement(yyRepetition1);
31434: yyError = yyResult.select(yyError);
31435: if (yyResult.hasValue()) {
31436: final Node v$el$1 = yyResult
31437: .semanticValue();
31438:
31439: yyRepetition1 = yyResult.index;
31440: yyRepValue1 = new Pair<Node>(v$el$1,
31441: yyRepValue1);
31442: continue;
31443: }
31444: break;
31445: }
31446: { // Start scope for v$g$2.
31447: final Pair<Node> v$g$2 = yyRepValue1.reverse();
31448:
31449: yyValue = GNode.createFromPair("CaseClause",
31450: v$g$1, v$g$2);
31451: yyValue.setLocation(location(yyStart));
31452:
31453: return new SemanticValue(yyValue,
31454: yyRepetition1, yyError);
31455: } // End scope for v$g$2.
31456: } else {
31457: yyError = yyError.select("\":\" expected", yyBase);
31458: }
31459: }
31460: }
31461:
31462: // Alternative 2.
31463:
31464: yyResult = pJavaIdentifier$Word(yyStart);
31465: yyError = yyResult.select(yyError);
31466: if (yyResult.hasValue("default")) {
31467:
31468: yyBase = yyResult.index;
31469: yyResult = pSymbol(yyBase);
31470: yyError = yyResult.select(yyError);
31471: if (yyResult.hasValue(":")) {
31472:
31473: yyRepetition1 = yyResult.index;
31474: yyRepValue1 = Pair.empty();
31475: while (true) {
31476:
31477: yyResult = pJeannieJava$DeclarationOrStatement(yyRepetition1);
31478: yyError = yyResult.select(yyError);
31479: if (yyResult.hasValue()) {
31480: final Node v$el$1 = yyResult.semanticValue();
31481:
31482: yyRepetition1 = yyResult.index;
31483: yyRepValue1 = new Pair<Node>(v$el$1,
31484: yyRepValue1);
31485: continue;
31486: }
31487: break;
31488: }
31489: { // Start scope for v$g$1.
31490: final Pair<Node> v$g$1 = yyRepValue1.reverse();
31491:
31492: yyValue = GNode.createFromPair("DefaultClause",
31493: v$g$1);
31494: yyValue.setLocation(location(yyStart));
31495:
31496: return new SemanticValue(yyValue, yyRepetition1,
31497: yyError);
31498: } // End scope for v$g$1.
31499: } else {
31500: yyError = yyError.select("\":\" expected", yyBase);
31501: }
31502: }
31503:
31504: // Done.
31505: yyError = yyError.select("switch clause expected", yyStart);
31506: return yyError;
31507: }
31508:
31509: // =========================================================================
31510:
31511: /**
31512: * Parse nonterminal xtc.lang.jeannie.JeannieJava.SynchronizedStatement.
31513: *
31514: * @param yyStart The index.
31515: * @return The result.
31516: * @throws IOException Signals an I/O error.
31517: */
31518: private Result pJeannieJava$SynchronizedStatement(final int yyStart)
31519: throws IOException {
31520:
31521: Result yyResult;
31522: Node yyValue;
31523: ParseError yyError = ParseError.DUMMY;
31524:
31525: // Alternative 1.
31526:
31527: yyResult = pJavaIdentifier$Word(yyStart);
31528: yyError = yyResult.select(yyError);
31529: if (yyResult.hasValue("synchronized")) {
31530:
31531: yyResult = pJeannieJava$ParExpression(yyResult.index);
31532: yyError = yyResult.select(yyError);
31533: if (yyResult.hasValue()) {
31534: final Node v$g$1 = yyResult.semanticValue();
31535:
31536: yyResult = pJeannieJava$Block(yyResult.index);
31537: yyError = yyResult.select(yyError);
31538: if (yyResult.hasValue()) {
31539: final Node v$g$2 = yyResult.semanticValue();
31540:
31541: yyValue = GNode.create("SynchronizedStatement",
31542: v$g$1, v$g$2);
31543: yyValue.setLocation(location(yyStart));
31544:
31545: return yyResult.createValue(yyValue, yyError);
31546: }
31547: }
31548: }
31549:
31550: // Done.
31551: yyError = yyError.select("synchronized statement expected",
31552: yyStart);
31553: return yyError;
31554: }
31555:
31556: // =========================================================================
31557:
31558: /**
31559: * Parse nonterminal xtc.lang.jeannie.JeannieJava.ThrowStatement.
31560: *
31561: * @param yyStart The index.
31562: * @return The result.
31563: * @throws IOException Signals an I/O error.
31564: */
31565: private Result pJeannieJava$ThrowStatement(final int yyStart)
31566: throws IOException {
31567:
31568: Result yyResult;
31569: int yyBase;
31570: Node yyValue;
31571: ParseError yyError = ParseError.DUMMY;
31572:
31573: // Alternative 1.
31574:
31575: yyResult = pJavaIdentifier$Word(yyStart);
31576: yyError = yyResult.select(yyError);
31577: if (yyResult.hasValue("throw")) {
31578:
31579: yyResult = pJeannieJava$Expression(yyResult.index);
31580: yyError = yyResult.select(yyError);
31581: if (yyResult.hasValue()) {
31582: final Node v$g$1 = yyResult.semanticValue();
31583:
31584: yyBase = yyResult.index;
31585: yyResult = pSymbol(yyBase);
31586: yyError = yyResult.select(yyError);
31587: if (yyResult.hasValue(";")) {
31588:
31589: yyValue = GNode.create("ThrowStatement", v$g$1);
31590: yyValue.setLocation(location(yyStart));
31591:
31592: return yyResult.createValue(yyValue, yyError);
31593: } else {
31594: yyError = yyError.select("\";\" expected", yyBase);
31595: }
31596: }
31597: }
31598:
31599: // Done.
31600: yyError = yyError.select("throw statement expected", yyStart);
31601: return yyError;
31602: }
31603:
31604: // =========================================================================
31605:
31606: /**
31607: * Parse nonterminal xtc.lang.jeannie.JeannieJava.ExpressionList.
31608: *
31609: * @param yyStart The index.
31610: * @return The result.
31611: * @throws IOException Signals an I/O error.
31612: */
31613: private Result pJeannieJava$ExpressionList(final int yyStart)
31614: throws IOException {
31615:
31616: Result yyResult;
31617: int yyBase;
31618: int yyRepetition1;
31619: Pair<Node> yyRepValue1;
31620: Node yyValue;
31621: ParseError yyError = ParseError.DUMMY;
31622:
31623: // Alternative 1.
31624:
31625: yyResult = pJeannieJava$Expression(yyStart);
31626: yyError = yyResult.select(yyError);
31627: if (yyResult.hasValue()) {
31628: final Node v$g$1 = yyResult.semanticValue();
31629:
31630: yyRepetition1 = yyResult.index;
31631: yyRepValue1 = Pair.empty();
31632: while (true) {
31633:
31634: yyBase = yyRepetition1;
31635: yyResult = pSymbol(yyBase);
31636: yyError = yyResult.select(yyError);
31637: if (yyResult.hasValue(",")) {
31638:
31639: yyResult = pJeannieJava$Expression(yyResult.index);
31640: yyError = yyResult.select(yyError);
31641: if (yyResult.hasValue()) {
31642: final Node v$el$1 = yyResult.semanticValue();
31643:
31644: yyRepetition1 = yyResult.index;
31645: yyRepValue1 = new Pair<Node>(v$el$1,
31646: yyRepValue1);
31647: continue;
31648: }
31649: } else {
31650: yyError = yyError.select("\",\" expected", yyBase);
31651: }
31652: break;
31653: }
31654: { // Start scope for v$g$2.
31655: final Pair<Node> v$g$2 = yyRepValue1.reverse();
31656:
31657: yyValue = GNode.createFromPair("ExpressionList", v$g$1,
31658: v$g$2);
31659: yyValue.setLocation(location(yyStart));
31660:
31661: return new SemanticValue(yyValue, yyRepetition1,
31662: yyError);
31663: } // End scope for v$g$2.
31664: }
31665:
31666: // Done.
31667: return yyError;
31668: }
31669:
31670: // =========================================================================
31671:
31672: /**
31673: * Parse nonterminal xtc.lang.jeannie.JeannieJava.Expression.
31674: *
31675: * @param yyStart The index.
31676: * @return The result.
31677: * @throws IOException Signals an I/O error.
31678: */
31679: private Result pJeannieJava$Expression(final int yyStart)
31680: throws IOException {
31681:
31682: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
31683: if (null == yyColumn.chunk11)
31684: yyColumn.chunk11 = new Chunk11();
31685: if (null == yyColumn.chunk11.fJeannieJava$Expression)
31686: yyColumn.chunk11.fJeannieJava$Expression = pJeannieJava$Expression$1(yyStart);
31687: return yyColumn.chunk11.fJeannieJava$Expression;
31688: }
31689:
31690: /** Actually parse xtc.lang.jeannie.JeannieJava.Expression. */
31691: private Result pJeannieJava$Expression$1(final int yyStart)
31692: throws IOException {
31693:
31694: Result yyResult;
31695: Node yyValue;
31696: ParseError yyError = ParseError.DUMMY;
31697:
31698: // Alternative <Assignment>.
31699:
31700: yyResult = pJeannieJava$ConditionalExpression(yyStart);
31701: yyError = yyResult.select(yyError);
31702: if (yyResult.hasValue()) {
31703: final Node v$g$1 = yyResult.semanticValue();
31704:
31705: yyResult = p$$Shared21(yyResult.index);
31706: yyError = yyResult.select(yyError);
31707: if (yyResult.hasValue()) {
31708: final String v$g$2 = yyResult.semanticValue();
31709:
31710: yyResult = pJeannieJava$Expression(yyResult.index);
31711: yyError = yyResult.select(yyError);
31712: if (yyResult.hasValue()) {
31713: final Node v$g$3 = yyResult.semanticValue();
31714:
31715: yyValue = GNode.create("Expression", v$g$1, v$g$2,
31716: v$g$3);
31717: yyValue.setLocation(location(yyStart));
31718:
31719: return yyResult.createValue(yyValue, yyError);
31720: }
31721: }
31722: }
31723:
31724: // Alternative <Base>.
31725:
31726: yyResult = pJeannieJava$ConditionalExpression(yyStart);
31727: yyError = yyResult.select(yyError);
31728: if (yyResult.hasValue()) {
31729: yyValue = yyResult.semanticValue();
31730:
31731: return yyResult.createValue(yyValue, yyError);
31732: }
31733:
31734: // Done.
31735: return yyError;
31736: }
31737:
31738: // =========================================================================
31739:
31740: /**
31741: * Parse synthetic nonterminal xtc.lang.jeannie.Debugger.$$Shared21.
31742: * This nonterminal represents the duplicate productions
31743: * xtc.lang.jeannie.JeannieJava.AssignmentOperator
31744: * and xtc.lang.jeannie.DebuggerJava.AssignmentOperator.
31745: *
31746: * @param yyStart The index.
31747: * @return The result.
31748: * @throws IOException Signals an I/O error.
31749: */
31750: private Result p$$Shared21(final int yyStart) throws IOException {
31751: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
31752: if (null == yyColumn.chunk11)
31753: yyColumn.chunk11 = new Chunk11();
31754: if (null == yyColumn.chunk11.f$$Shared21)
31755: yyColumn.chunk11.f$$Shared21 = p$$Shared21$1(yyStart);
31756: return yyColumn.chunk11.f$$Shared21;
31757: }
31758:
31759: /** Actually parse xtc.lang.jeannie.Debugger.$$Shared21. */
31760: private Result p$$Shared21$1(final int yyStart) throws IOException {
31761: Result yyResult;
31762: String yyValue;
31763: ParseError yyError = ParseError.DUMMY;
31764:
31765: // Alternative <Equal>.
31766:
31767: yyResult = pSymbol(yyStart);
31768: yyError = yyResult.select(yyError);
31769: if (yyResult.hasValue("=")) {
31770: yyValue = "=";
31771:
31772: return yyResult.createValue(yyValue, yyError);
31773: }
31774:
31775: // Alternative <PlusEqual>.
31776:
31777: yyResult = pSymbol(yyStart);
31778: yyError = yyResult.select(yyError);
31779: if (yyResult.hasValue("+=")) {
31780: yyValue = "+=";
31781:
31782: return yyResult.createValue(yyValue, yyError);
31783: }
31784:
31785: // Alternative <MinusEqual>.
31786:
31787: yyResult = pSymbol(yyStart);
31788: yyError = yyResult.select(yyError);
31789: if (yyResult.hasValue("-=")) {
31790: yyValue = "-=";
31791:
31792: return yyResult.createValue(yyValue, yyError);
31793: }
31794:
31795: // Alternative <StarEqual>.
31796:
31797: yyResult = pSymbol(yyStart);
31798: yyError = yyResult.select(yyError);
31799: if (yyResult.hasValue("*=")) {
31800: yyValue = "*=";
31801:
31802: return yyResult.createValue(yyValue, yyError);
31803: }
31804:
31805: // Alternative <SlashEqual>.
31806:
31807: yyResult = pSymbol(yyStart);
31808: yyError = yyResult.select(yyError);
31809: if (yyResult.hasValue("/=")) {
31810: yyValue = "/=";
31811:
31812: return yyResult.createValue(yyValue, yyError);
31813: }
31814:
31815: // Alternative <AmpersandEqual>.
31816:
31817: yyResult = pSymbol(yyStart);
31818: yyError = yyResult.select(yyError);
31819: if (yyResult.hasValue("&=")) {
31820: yyValue = "&=";
31821:
31822: return yyResult.createValue(yyValue, yyError);
31823: }
31824:
31825: // Alternative <BarEqual>.
31826:
31827: yyResult = pSymbol(yyStart);
31828: yyError = yyResult.select(yyError);
31829: if (yyResult.hasValue("|=")) {
31830: yyValue = "|=";
31831:
31832: return yyResult.createValue(yyValue, yyError);
31833: }
31834:
31835: // Alternative <CaretEqual>.
31836:
31837: yyResult = pSymbol(yyStart);
31838: yyError = yyResult.select(yyError);
31839: if (yyResult.hasValue("^=")) {
31840: yyValue = "^=";
31841:
31842: return yyResult.createValue(yyValue, yyError);
31843: }
31844:
31845: // Alternative <PercentEqual>.
31846:
31847: yyResult = pSymbol(yyStart);
31848: yyError = yyResult.select(yyError);
31849: if (yyResult.hasValue("%=")) {
31850: yyValue = "%=";
31851:
31852: return yyResult.createValue(yyValue, yyError);
31853: }
31854:
31855: // Alternative <DoubleLessEqual>.
31856:
31857: yyResult = pSymbol(yyStart);
31858: yyError = yyResult.select(yyError);
31859: if (yyResult.hasValue("<<=")) {
31860: yyValue = "<<=";
31861:
31862: return yyResult.createValue(yyValue, yyError);
31863: }
31864:
31865: // Alternative <DoubleGreaterEqual>.
31866:
31867: yyResult = pSymbol(yyStart);
31868: yyError = yyResult.select(yyError);
31869: if (yyResult.hasValue(">>=")) {
31870: yyValue = ">>=";
31871:
31872: return yyResult.createValue(yyValue, yyError);
31873: }
31874:
31875: // Alternative <TripleGreaterEqual>.
31876:
31877: yyResult = pSymbol(yyStart);
31878: yyError = yyResult.select(yyError);
31879: if (yyResult.hasValue(">>>=")) {
31880: yyValue = ">>>=";
31881:
31882: return yyResult.createValue(yyValue, yyError);
31883: }
31884:
31885: // Done.
31886: yyError = yyError.select(" expected", yyStart);
31887: return yyError;
31888: }
31889:
31890: // =========================================================================
31891:
31892: /**
31893: * Parse nonterminal xtc.lang.jeannie.JeannieJava.ConditionalExpression.
31894: *
31895: * @param yyStart The index.
31896: * @return The result.
31897: * @throws IOException Signals an I/O error.
31898: */
31899: private Result pJeannieJava$ConditionalExpression(final int yyStart)
31900: throws IOException {
31901:
31902: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
31903: if (null == yyColumn.chunk11)
31904: yyColumn.chunk11 = new Chunk11();
31905: if (null == yyColumn.chunk11.fJeannieJava$ConditionalExpression)
31906: yyColumn.chunk11.fJeannieJava$ConditionalExpression = pJeannieJava$ConditionalExpression$1(yyStart);
31907: return yyColumn.chunk11.fJeannieJava$ConditionalExpression;
31908: }
31909:
31910: /** Actually parse xtc.lang.jeannie.JeannieJava.ConditionalExpression. */
31911: private Result pJeannieJava$ConditionalExpression$1(
31912: final int yyStart) throws IOException {
31913:
31914: Result yyResult;
31915: int yyBase;
31916: Node yyValue;
31917: ParseError yyError = ParseError.DUMMY;
31918:
31919: // Alternative <Conditional>.
31920:
31921: yyResult = pJeannieJava$LogicalOrExpression(yyStart);
31922: yyError = yyResult.select(yyError);
31923: if (yyResult.hasValue()) {
31924: final Node v$g$1 = yyResult.semanticValue();
31925:
31926: yyBase = yyResult.index;
31927: yyResult = pSymbol(yyBase);
31928: yyError = yyResult.select(yyError);
31929: if (yyResult.hasValue("?")) {
31930:
31931: yyResult = pJeannieJava$Expression(yyResult.index);
31932: yyError = yyResult.select(yyError);
31933: if (yyResult.hasValue()) {
31934: final Node v$g$2 = yyResult.semanticValue();
31935:
31936: yyBase = yyResult.index;
31937: yyResult = pSymbol(yyBase);
31938: yyError = yyResult.select(yyError);
31939: if (yyResult.hasValue(":")) {
31940:
31941: yyResult = pJeannieJava$ConditionalExpression(yyResult.index);
31942: yyError = yyResult.select(yyError);
31943: if (yyResult.hasValue()) {
31944: final Node v$g$3 = yyResult.semanticValue();
31945:
31946: yyValue = GNode.create(
31947: "ConditionalExpression", v$g$1,
31948: v$g$2, v$g$3);
31949: yyValue.setLocation(location(yyStart));
31950:
31951: return yyResult.createValue(yyValue,
31952: yyError);
31953: }
31954: } else {
31955: yyError = yyError.select("\":\" expected",
31956: yyBase);
31957: }
31958: }
31959: } else {
31960: yyError = yyError.select("\"?\" expected", yyBase);
31961: }
31962: }
31963:
31964: // Alternative <Base>.
31965:
31966: yyResult = pJeannieJava$LogicalOrExpression(yyStart);
31967: yyError = yyResult.select(yyError);
31968: if (yyResult.hasValue()) {
31969: yyValue = yyResult.semanticValue();
31970:
31971: return yyResult.createValue(yyValue, yyError);
31972: }
31973:
31974: // Done.
31975: return yyError;
31976: }
31977:
31978: // =========================================================================
31979:
31980: /**
31981: * Parse nonterminal xtc.lang.jeannie.JeannieJava.LogicalOrExpression.
31982: *
31983: * @param yyStart The index.
31984: * @return The result.
31985: * @throws IOException Signals an I/O error.
31986: */
31987: private Result pJeannieJava$LogicalOrExpression(final int yyStart)
31988: throws IOException {
31989:
31990: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
31991: if (null == yyColumn.chunk11)
31992: yyColumn.chunk11 = new Chunk11();
31993: if (null == yyColumn.chunk11.fJeannieJava$LogicalOrExpression)
31994: yyColumn.chunk11.fJeannieJava$LogicalOrExpression = pJeannieJava$LogicalOrExpression$1(yyStart);
31995: return yyColumn.chunk11.fJeannieJava$LogicalOrExpression;
31996: }
31997:
31998: /** Actually parse xtc.lang.jeannie.JeannieJava.LogicalOrExpression. */
31999: private Result pJeannieJava$LogicalOrExpression$1(final int yyStart)
32000: throws IOException {
32001:
32002: Result yyResult;
32003: int yyRepetition1;
32004: Pair<Action<Node>> yyRepValue1;
32005: Node yyValue;
32006: ParseError yyError = ParseError.DUMMY;
32007:
32008: // Alternative <Base>.
32009:
32010: yyResult = pJeannieJava$LogicalAndExpression(yyStart);
32011: yyError = yyResult.select(yyError);
32012: if (yyResult.hasValue()) {
32013: final Node v$3 = yyResult.semanticValue();
32014:
32015: yyRepetition1 = yyResult.index;
32016: yyRepValue1 = Pair.empty();
32017: while (true) {
32018:
32019: yyResult = pJeannieJava$LogicalOrExpression$$Tail1(yyRepetition1);
32020: yyError = yyResult.select(yyError);
32021: if (yyResult.hasValue()) {
32022: final Action<Node> v$4 = yyResult.semanticValue();
32023:
32024: yyRepetition1 = yyResult.index;
32025: yyRepValue1 = new Pair<Action<Node>>(v$4,
32026: yyRepValue1);
32027: continue;
32028: }
32029: break;
32030: }
32031: { // Start scope for v$5.
32032: final Pair<Action<Node>> v$5 = yyRepValue1.reverse();
32033:
32034: yyValue = apply(v$5, v$3, yyStart);
32035:
32036: return new SemanticValue(yyValue, yyRepetition1,
32037: yyError);
32038: } // End scope for v$5.
32039: }
32040:
32041: // Done.
32042: return yyError;
32043: }
32044:
32045: // =========================================================================
32046:
32047: /**
32048: * Parse synthetic nonterminal JeannieJava.LogicalOrExpression$$Tail1.
32049: *
32050: * @param yyStart The index.
32051: * @return The result.
32052: * @throws IOException Signals an I/O error.
32053: */
32054: private Result pJeannieJava$LogicalOrExpression$$Tail1(
32055: final int yyStart) throws IOException {
32056:
32057: Result yyResult;
32058: Action<Node> yyValue;
32059: ParseError yyError = ParseError.DUMMY;
32060:
32061: // Alternative <Or>.
32062:
32063: yyResult = pSymbol(yyStart);
32064: yyError = yyResult.select(yyError);
32065: if (yyResult.hasValue("||")) {
32066:
32067: yyResult = pJeannieJava$LogicalAndExpression(yyResult.index);
32068: yyError = yyResult.select(yyError);
32069: if (yyResult.hasValue()) {
32070: final Node v$g$2 = yyResult.semanticValue();
32071:
32072: yyValue = new Action<Node>() {
32073: public Node run(Node v$1) {
32074: return GNode.create("LogicalOrExpression", v$1,
32075: v$g$2);
32076: }
32077: };
32078:
32079: return yyResult.createValue(yyValue, yyError);
32080: }
32081: }
32082:
32083: // Done.
32084: yyError = yyError.select("logical or expression expected",
32085: yyStart);
32086: return yyError;
32087: }
32088:
32089: // =========================================================================
32090:
32091: /**
32092: * Parse nonterminal xtc.lang.jeannie.JeannieJava.LogicalAndExpression.
32093: *
32094: * @param yyStart The index.
32095: * @return The result.
32096: * @throws IOException Signals an I/O error.
32097: */
32098: private Result pJeannieJava$LogicalAndExpression(final int yyStart)
32099: throws IOException {
32100:
32101: Result yyResult;
32102: int yyRepetition1;
32103: Pair<Action<Node>> yyRepValue1;
32104: Node yyValue;
32105: ParseError yyError = ParseError.DUMMY;
32106:
32107: // Alternative <Base>.
32108:
32109: yyResult = pJeannieJava$BitwiseOrExpression(yyStart);
32110: yyError = yyResult.select(yyError);
32111: if (yyResult.hasValue()) {
32112: final Node v$3 = yyResult.semanticValue();
32113:
32114: yyRepetition1 = yyResult.index;
32115: yyRepValue1 = Pair.empty();
32116: while (true) {
32117:
32118: yyResult = pJeannieJava$LogicalAndExpression$$Tail1(yyRepetition1);
32119: yyError = yyResult.select(yyError);
32120: if (yyResult.hasValue()) {
32121: final Action<Node> v$4 = yyResult.semanticValue();
32122:
32123: yyRepetition1 = yyResult.index;
32124: yyRepValue1 = new Pair<Action<Node>>(v$4,
32125: yyRepValue1);
32126: continue;
32127: }
32128: break;
32129: }
32130: { // Start scope for v$5.
32131: final Pair<Action<Node>> v$5 = yyRepValue1.reverse();
32132:
32133: yyValue = apply(v$5, v$3, yyStart);
32134:
32135: return new SemanticValue(yyValue, yyRepetition1,
32136: yyError);
32137: } // End scope for v$5.
32138: }
32139:
32140: // Done.
32141: return yyError;
32142: }
32143:
32144: // =========================================================================
32145:
32146: /**
32147: * Parse synthetic nonterminal JeannieJava.LogicalAndExpression$$Tail1.
32148: *
32149: * @param yyStart The index.
32150: * @return The result.
32151: * @throws IOException Signals an I/O error.
32152: */
32153: private Result pJeannieJava$LogicalAndExpression$$Tail1(
32154: final int yyStart) throws IOException {
32155:
32156: Result yyResult;
32157: Action<Node> yyValue;
32158: ParseError yyError = ParseError.DUMMY;
32159:
32160: // Alternative <And>.
32161:
32162: yyResult = pSymbol(yyStart);
32163: yyError = yyResult.select(yyError);
32164: if (yyResult.hasValue("&&")) {
32165:
32166: yyResult = pJeannieJava$BitwiseOrExpression(yyResult.index);
32167: yyError = yyResult.select(yyError);
32168: if (yyResult.hasValue()) {
32169: final Node v$g$2 = yyResult.semanticValue();
32170:
32171: yyValue = new Action<Node>() {
32172: public Node run(Node v$1) {
32173: return GNode.create("LogicalAndExpression",
32174: v$1, v$g$2);
32175: }
32176: };
32177:
32178: return yyResult.createValue(yyValue, yyError);
32179: }
32180: }
32181:
32182: // Done.
32183: yyError = yyError.select("logical and expression expected",
32184: yyStart);
32185: return yyError;
32186: }
32187:
32188: // =========================================================================
32189:
32190: /**
32191: * Parse nonterminal xtc.lang.jeannie.JeannieJava.BitwiseOrExpression.
32192: *
32193: * @param yyStart The index.
32194: * @return The result.
32195: * @throws IOException Signals an I/O error.
32196: */
32197: private Result pJeannieJava$BitwiseOrExpression(final int yyStart)
32198: throws IOException {
32199:
32200: Result yyResult;
32201: int yyRepetition1;
32202: Pair<Action<Node>> yyRepValue1;
32203: Node yyValue;
32204: ParseError yyError = ParseError.DUMMY;
32205:
32206: // Alternative <Base>.
32207:
32208: yyResult = pJeannieJava$BitwiseXorExpression(yyStart);
32209: yyError = yyResult.select(yyError);
32210: if (yyResult.hasValue()) {
32211: final Node v$3 = yyResult.semanticValue();
32212:
32213: yyRepetition1 = yyResult.index;
32214: yyRepValue1 = Pair.empty();
32215: while (true) {
32216:
32217: yyResult = pJeannieJava$BitwiseOrExpression$$Tail1(yyRepetition1);
32218: yyError = yyResult.select(yyError);
32219: if (yyResult.hasValue()) {
32220: final Action<Node> v$4 = yyResult.semanticValue();
32221:
32222: yyRepetition1 = yyResult.index;
32223: yyRepValue1 = new Pair<Action<Node>>(v$4,
32224: yyRepValue1);
32225: continue;
32226: }
32227: break;
32228: }
32229: { // Start scope for v$5.
32230: final Pair<Action<Node>> v$5 = yyRepValue1.reverse();
32231:
32232: yyValue = apply(v$5, v$3, yyStart);
32233:
32234: return new SemanticValue(yyValue, yyRepetition1,
32235: yyError);
32236: } // End scope for v$5.
32237: }
32238:
32239: // Done.
32240: return yyError;
32241: }
32242:
32243: // =========================================================================
32244:
32245: /**
32246: * Parse synthetic nonterminal JeannieJava.BitwiseOrExpression$$Tail1.
32247: *
32248: * @param yyStart The index.
32249: * @return The result.
32250: * @throws IOException Signals an I/O error.
32251: */
32252: private Result pJeannieJava$BitwiseOrExpression$$Tail1(
32253: final int yyStart) throws IOException {
32254:
32255: Result yyResult;
32256: Action<Node> yyValue;
32257: ParseError yyError = ParseError.DUMMY;
32258:
32259: // Alternative <Or>.
32260:
32261: yyResult = pSymbol(yyStart);
32262: yyError = yyResult.select(yyError);
32263: if (yyResult.hasValue("|")) {
32264:
32265: yyResult = pJeannieJava$BitwiseXorExpression(yyResult.index);
32266: yyError = yyResult.select(yyError);
32267: if (yyResult.hasValue()) {
32268: final Node v$g$2 = yyResult.semanticValue();
32269:
32270: yyValue = new Action<Node>() {
32271: public Node run(Node v$1) {
32272: return GNode.create("BitwiseOrExpression", v$1,
32273: v$g$2);
32274: }
32275: };
32276:
32277: return yyResult.createValue(yyValue, yyError);
32278: }
32279: }
32280:
32281: // Done.
32282: yyError = yyError.select("bitwise or expression expected",
32283: yyStart);
32284: return yyError;
32285: }
32286:
32287: // =========================================================================
32288:
32289: /**
32290: * Parse nonterminal xtc.lang.jeannie.JeannieJava.BitwiseXorExpression.
32291: *
32292: * @param yyStart The index.
32293: * @return The result.
32294: * @throws IOException Signals an I/O error.
32295: */
32296: private Result pJeannieJava$BitwiseXorExpression(final int yyStart)
32297: throws IOException {
32298:
32299: Result yyResult;
32300: int yyRepetition1;
32301: Pair<Action<Node>> yyRepValue1;
32302: Node yyValue;
32303: ParseError yyError = ParseError.DUMMY;
32304:
32305: // Alternative <Base>.
32306:
32307: yyResult = pJeannieJava$BitwiseAndExpression(yyStart);
32308: yyError = yyResult.select(yyError);
32309: if (yyResult.hasValue()) {
32310: final Node v$3 = yyResult.semanticValue();
32311:
32312: yyRepetition1 = yyResult.index;
32313: yyRepValue1 = Pair.empty();
32314: while (true) {
32315:
32316: yyResult = pJeannieJava$BitwiseXorExpression$$Tail1(yyRepetition1);
32317: yyError = yyResult.select(yyError);
32318: if (yyResult.hasValue()) {
32319: final Action<Node> v$4 = yyResult.semanticValue();
32320:
32321: yyRepetition1 = yyResult.index;
32322: yyRepValue1 = new Pair<Action<Node>>(v$4,
32323: yyRepValue1);
32324: continue;
32325: }
32326: break;
32327: }
32328: { // Start scope for v$5.
32329: final Pair<Action<Node>> v$5 = yyRepValue1.reverse();
32330:
32331: yyValue = apply(v$5, v$3, yyStart);
32332:
32333: return new SemanticValue(yyValue, yyRepetition1,
32334: yyError);
32335: } // End scope for v$5.
32336: }
32337:
32338: // Done.
32339: return yyError;
32340: }
32341:
32342: // =========================================================================
32343:
32344: /**
32345: * Parse synthetic nonterminal JeannieJava.BitwiseXorExpression$$Tail1.
32346: *
32347: * @param yyStart The index.
32348: * @return The result.
32349: * @throws IOException Signals an I/O error.
32350: */
32351: private Result pJeannieJava$BitwiseXorExpression$$Tail1(
32352: final int yyStart) throws IOException {
32353:
32354: Result yyResult;
32355: Action<Node> yyValue;
32356: ParseError yyError = ParseError.DUMMY;
32357:
32358: // Alternative <Xor>.
32359:
32360: yyResult = pSymbol(yyStart);
32361: yyError = yyResult.select(yyError);
32362: if (yyResult.hasValue("^")) {
32363:
32364: yyResult = pJeannieJava$BitwiseAndExpression(yyResult.index);
32365: yyError = yyResult.select(yyError);
32366: if (yyResult.hasValue()) {
32367: final Node v$g$2 = yyResult.semanticValue();
32368:
32369: yyValue = new Action<Node>() {
32370: public Node run(Node v$1) {
32371: return GNode.create("BitwiseXorExpression",
32372: v$1, v$g$2);
32373: }
32374: };
32375:
32376: return yyResult.createValue(yyValue, yyError);
32377: }
32378: }
32379:
32380: // Done.
32381: yyError = yyError.select("bitwise xor expression expected",
32382: yyStart);
32383: return yyError;
32384: }
32385:
32386: // =========================================================================
32387:
32388: /**
32389: * Parse nonterminal xtc.lang.jeannie.JeannieJava.BitwiseAndExpression.
32390: *
32391: * @param yyStart The index.
32392: * @return The result.
32393: * @throws IOException Signals an I/O error.
32394: */
32395: private Result pJeannieJava$BitwiseAndExpression(final int yyStart)
32396: throws IOException {
32397:
32398: Result yyResult;
32399: int yyRepetition1;
32400: Pair<Action<Node>> yyRepValue1;
32401: Node yyValue;
32402: ParseError yyError = ParseError.DUMMY;
32403:
32404: // Alternative <Base>.
32405:
32406: yyResult = pJeannieJava$EqualityExpression(yyStart);
32407: yyError = yyResult.select(yyError);
32408: if (yyResult.hasValue()) {
32409: final Node v$3 = yyResult.semanticValue();
32410:
32411: yyRepetition1 = yyResult.index;
32412: yyRepValue1 = Pair.empty();
32413: while (true) {
32414:
32415: yyResult = pJeannieJava$BitwiseAndExpression$$Tail1(yyRepetition1);
32416: yyError = yyResult.select(yyError);
32417: if (yyResult.hasValue()) {
32418: final Action<Node> v$4 = yyResult.semanticValue();
32419:
32420: yyRepetition1 = yyResult.index;
32421: yyRepValue1 = new Pair<Action<Node>>(v$4,
32422: yyRepValue1);
32423: continue;
32424: }
32425: break;
32426: }
32427: { // Start scope for v$5.
32428: final Pair<Action<Node>> v$5 = yyRepValue1.reverse();
32429:
32430: yyValue = apply(v$5, v$3, yyStart);
32431:
32432: return new SemanticValue(yyValue, yyRepetition1,
32433: yyError);
32434: } // End scope for v$5.
32435: }
32436:
32437: // Done.
32438: return yyError;
32439: }
32440:
32441: // =========================================================================
32442:
32443: /**
32444: * Parse synthetic nonterminal JeannieJava.BitwiseAndExpression$$Tail1.
32445: *
32446: * @param yyStart The index.
32447: * @return The result.
32448: * @throws IOException Signals an I/O error.
32449: */
32450: private Result pJeannieJava$BitwiseAndExpression$$Tail1(
32451: final int yyStart) throws IOException {
32452:
32453: Result yyResult;
32454: Action<Node> yyValue;
32455: ParseError yyError = ParseError.DUMMY;
32456:
32457: // Alternative <And>.
32458:
32459: yyResult = pSymbol(yyStart);
32460: yyError = yyResult.select(yyError);
32461: if (yyResult.hasValue("&")) {
32462:
32463: yyResult = pJeannieJava$EqualityExpression(yyResult.index);
32464: yyError = yyResult.select(yyError);
32465: if (yyResult.hasValue()) {
32466: final Node v$g$2 = yyResult.semanticValue();
32467:
32468: yyValue = new Action<Node>() {
32469: public Node run(Node v$1) {
32470: return GNode.create("BitwiseAndExpression",
32471: v$1, v$g$2);
32472: }
32473: };
32474:
32475: return yyResult.createValue(yyValue, yyError);
32476: }
32477: }
32478:
32479: // Done.
32480: yyError = yyError.select("bitwise and expression expected",
32481: yyStart);
32482: return yyError;
32483: }
32484:
32485: // =========================================================================
32486:
32487: /**
32488: * Parse nonterminal xtc.lang.jeannie.JeannieJava.EqualityExpression.
32489: *
32490: * @param yyStart The index.
32491: * @return The result.
32492: * @throws IOException Signals an I/O error.
32493: */
32494: private Result pJeannieJava$EqualityExpression(final int yyStart)
32495: throws IOException {
32496:
32497: Result yyResult;
32498: int yyRepetition1;
32499: Pair<Action<Node>> yyRepValue1;
32500: Node yyValue;
32501: ParseError yyError = ParseError.DUMMY;
32502:
32503: // Alternative <Base>.
32504:
32505: yyResult = pJeannieJava$InstanceOfExpression(yyStart);
32506: yyError = yyResult.select(yyError);
32507: if (yyResult.hasValue()) {
32508: final Node v$4 = yyResult.semanticValue();
32509:
32510: yyRepetition1 = yyResult.index;
32511: yyRepValue1 = Pair.empty();
32512: while (true) {
32513:
32514: yyResult = pJeannieJava$EqualityExpression$$Tail1(yyRepetition1);
32515: yyError = yyResult.select(yyError);
32516: if (yyResult.hasValue()) {
32517: final Action<Node> v$5 = yyResult.semanticValue();
32518:
32519: yyRepetition1 = yyResult.index;
32520: yyRepValue1 = new Pair<Action<Node>>(v$5,
32521: yyRepValue1);
32522: continue;
32523: }
32524: break;
32525: }
32526: { // Start scope for v$6.
32527: final Pair<Action<Node>> v$6 = yyRepValue1.reverse();
32528:
32529: yyValue = apply(v$6, v$4, yyStart);
32530:
32531: return new SemanticValue(yyValue, yyRepetition1,
32532: yyError);
32533: } // End scope for v$6.
32534: }
32535:
32536: // Done.
32537: return yyError;
32538: }
32539:
32540: // =========================================================================
32541:
32542: /**
32543: * Parse synthetic nonterminal JeannieJava.EqualityExpression$$Tail1.
32544: *
32545: * @param yyStart The index.
32546: * @return The result.
32547: * @throws IOException Signals an I/O error.
32548: */
32549: private Result pJeannieJava$EqualityExpression$$Tail1(
32550: final int yyStart) throws IOException {
32551:
32552: Result yyResult;
32553: Action<Node> yyValue;
32554: ParseError yyError = ParseError.DUMMY;
32555:
32556: // Alternative <Recursion>.
32557:
32558: yyResult = p$$Shared12(yyStart);
32559: yyError = yyResult.select(yyError);
32560: if (yyResult.hasValue()) {
32561: final String v$g$2 = yyResult.semanticValue();
32562:
32563: yyResult = pJeannieJava$InstanceOfExpression(yyResult.index);
32564: yyError = yyResult.select(yyError);
32565: if (yyResult.hasValue()) {
32566: final Node v$g$3 = yyResult.semanticValue();
32567:
32568: yyValue = new Action<Node>() {
32569: public Node run(Node v$1) {
32570: return GNode.create("EqualityExpression", v$1,
32571: v$g$2, v$g$3);
32572: }
32573: };
32574:
32575: return yyResult.createValue(yyValue, yyError);
32576: }
32577: }
32578:
32579: // Done.
32580: return yyError;
32581: }
32582:
32583: // =========================================================================
32584:
32585: /**
32586: * Parse nonterminal xtc.lang.jeannie.JeannieJava.InstanceOfExpression.
32587: *
32588: * @param yyStart The index.
32589: * @return The result.
32590: * @throws IOException Signals an I/O error.
32591: */
32592: private Result pJeannieJava$InstanceOfExpression(final int yyStart)
32593: throws IOException {
32594:
32595: Result yyResult;
32596: int yyBase;
32597: Node yyValue;
32598: ParseError yyError = ParseError.DUMMY;
32599:
32600: // Alternative <Instanceof>.
32601:
32602: yyResult = pJeannieJava$RelationalExpression(yyStart);
32603: yyError = yyResult.select(yyError);
32604: if (yyResult.hasValue()) {
32605: final Node v$g$1 = yyResult.semanticValue();
32606:
32607: yyBase = yyResult.index;
32608: yyResult = pJavaIdentifier$Word(yyBase);
32609: yyError = yyResult.select(yyError);
32610: if (yyResult.hasValue("instanceof")) {
32611:
32612: yyResult = pType(yyResult.index);
32613: yyError = yyResult.select(yyError);
32614: if (yyResult.hasValue()) {
32615: final Node v$g$2 = yyResult.semanticValue();
32616:
32617: yyValue = GNode.create("InstanceOfExpression",
32618: v$g$1, v$g$2);
32619: yyValue.setLocation(location(yyStart));
32620:
32621: return yyResult.createValue(yyValue, yyError);
32622: }
32623: } else {
32624: yyError = yyError.select("\"instanceof\" expected",
32625: yyBase);
32626: }
32627: }
32628:
32629: // Alternative <Base>.
32630:
32631: yyResult = pJeannieJava$RelationalExpression(yyStart);
32632: yyError = yyResult.select(yyError);
32633: if (yyResult.hasValue()) {
32634: yyValue = yyResult.semanticValue();
32635:
32636: return yyResult.createValue(yyValue, yyError);
32637: }
32638:
32639: // Done.
32640: return yyError;
32641: }
32642:
32643: // =========================================================================
32644:
32645: /**
32646: * Parse nonterminal xtc.lang.jeannie.JeannieJava.RelationalExpression.
32647: *
32648: * @param yyStart The index.
32649: * @return The result.
32650: * @throws IOException Signals an I/O error.
32651: */
32652: private Result pJeannieJava$RelationalExpression(final int yyStart)
32653: throws IOException {
32654:
32655: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
32656: if (null == yyColumn.chunk12)
32657: yyColumn.chunk12 = new Chunk12();
32658: if (null == yyColumn.chunk12.fJeannieJava$RelationalExpression)
32659: yyColumn.chunk12.fJeannieJava$RelationalExpression = pJeannieJava$RelationalExpression$1(yyStart);
32660: return yyColumn.chunk12.fJeannieJava$RelationalExpression;
32661: }
32662:
32663: /** Actually parse xtc.lang.jeannie.JeannieJava.RelationalExpression. */
32664: private Result pJeannieJava$RelationalExpression$1(final int yyStart)
32665: throws IOException {
32666:
32667: Result yyResult;
32668: int yyRepetition1;
32669: Pair<Action<Node>> yyRepValue1;
32670: Node yyValue;
32671: ParseError yyError = ParseError.DUMMY;
32672:
32673: // Alternative <Base>.
32674:
32675: yyResult = pJeannieJava$ShiftExpression(yyStart);
32676: yyError = yyResult.select(yyError);
32677: if (yyResult.hasValue()) {
32678: final Node v$4 = yyResult.semanticValue();
32679:
32680: yyRepetition1 = yyResult.index;
32681: yyRepValue1 = Pair.empty();
32682: while (true) {
32683:
32684: yyResult = pJeannieJava$RelationalExpression$$Tail1(yyRepetition1);
32685: yyError = yyResult.select(yyError);
32686: if (yyResult.hasValue()) {
32687: final Action<Node> v$5 = yyResult.semanticValue();
32688:
32689: yyRepetition1 = yyResult.index;
32690: yyRepValue1 = new Pair<Action<Node>>(v$5,
32691: yyRepValue1);
32692: continue;
32693: }
32694: break;
32695: }
32696: { // Start scope for v$6.
32697: final Pair<Action<Node>> v$6 = yyRepValue1.reverse();
32698:
32699: yyValue = apply(v$6, v$4, yyStart);
32700:
32701: return new SemanticValue(yyValue, yyRepetition1,
32702: yyError);
32703: } // End scope for v$6.
32704: }
32705:
32706: // Done.
32707: return yyError;
32708: }
32709:
32710: // =========================================================================
32711:
32712: /**
32713: * Parse synthetic nonterminal JeannieJava.RelationalExpression$$Tail1.
32714: *
32715: * @param yyStart The index.
32716: * @return The result.
32717: * @throws IOException Signals an I/O error.
32718: */
32719: private Result pJeannieJava$RelationalExpression$$Tail1(
32720: final int yyStart) throws IOException {
32721:
32722: Result yyResult;
32723: Action<Node> yyValue;
32724: ParseError yyError = ParseError.DUMMY;
32725:
32726: // Alternative <Recursion>.
32727:
32728: yyResult = p$$Shared22(yyStart);
32729: yyError = yyResult.select(yyError);
32730: if (yyResult.hasValue()) {
32731: final String v$g$2 = yyResult.semanticValue();
32732:
32733: yyResult = pJeannieJava$ShiftExpression(yyResult.index);
32734: yyError = yyResult.select(yyError);
32735: if (yyResult.hasValue()) {
32736: final Node v$g$3 = yyResult.semanticValue();
32737:
32738: yyValue = new Action<Node>() {
32739: public Node run(Node v$1) {
32740: return GNode.create("RelationalExpression",
32741: v$1, v$g$2, v$g$3);
32742: }
32743: };
32744:
32745: return yyResult.createValue(yyValue, yyError);
32746: }
32747: }
32748:
32749: // Done.
32750: return yyError;
32751: }
32752:
32753: // =========================================================================
32754:
32755: /**
32756: * Parse synthetic nonterminal xtc.lang.jeannie.Debugger.$$Shared22.
32757: * This nonterminal represents the duplicate productions
32758: * xtc.lang.jeannie.JeannieJava.RelationalOperator
32759: * and xtc.lang.jeannie.DebuggerJava.RelationalOperator.
32760: *
32761: * @param yyStart The index.
32762: * @return The result.
32763: * @throws IOException Signals an I/O error.
32764: */
32765: private Result p$$Shared22(final int yyStart) throws IOException {
32766: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
32767: if (null == yyColumn.chunk12)
32768: yyColumn.chunk12 = new Chunk12();
32769: if (null == yyColumn.chunk12.f$$Shared22)
32770: yyColumn.chunk12.f$$Shared22 = p$$Shared22$1(yyStart);
32771: return yyColumn.chunk12.f$$Shared22;
32772: }
32773:
32774: /** Actually parse xtc.lang.jeannie.Debugger.$$Shared22. */
32775: private Result p$$Shared22$1(final int yyStart) throws IOException {
32776: Result yyResult;
32777: String yyValue;
32778: ParseError yyError = ParseError.DUMMY;
32779:
32780: // Alternative <Less>.
32781:
32782: yyResult = pSymbol(yyStart);
32783: yyError = yyResult.select(yyError);
32784: if (yyResult.hasValue("<")) {
32785: yyValue = "<";
32786:
32787: return yyResult.createValue(yyValue, yyError);
32788: }
32789:
32790: // Alternative <Greater>.
32791:
32792: yyResult = pSymbol(yyStart);
32793: yyError = yyResult.select(yyError);
32794: if (yyResult.hasValue(">")) {
32795: yyValue = ">";
32796:
32797: return yyResult.createValue(yyValue, yyError);
32798: }
32799:
32800: // Alternative <LessEqual>.
32801:
32802: yyResult = pSymbol(yyStart);
32803: yyError = yyResult.select(yyError);
32804: if (yyResult.hasValue("<=")) {
32805: yyValue = "<=";
32806:
32807: return yyResult.createValue(yyValue, yyError);
32808: }
32809:
32810: // Alternative <GreaterEqual>.
32811:
32812: yyResult = pSymbol(yyStart);
32813: yyError = yyResult.select(yyError);
32814: if (yyResult.hasValue(">=")) {
32815: yyValue = ">=";
32816:
32817: return yyResult.createValue(yyValue, yyError);
32818: }
32819:
32820: // Done.
32821: yyError = yyError.select(" expected", yyStart);
32822: return yyError;
32823: }
32824:
32825: // =========================================================================
32826:
32827: /**
32828: * Parse nonterminal xtc.lang.jeannie.JeannieJava.ShiftExpression.
32829: *
32830: * @param yyStart The index.
32831: * @return The result.
32832: * @throws IOException Signals an I/O error.
32833: */
32834: private Result pJeannieJava$ShiftExpression(final int yyStart)
32835: throws IOException {
32836:
32837: Result yyResult;
32838: int yyRepetition1;
32839: Pair<Action<Node>> yyRepValue1;
32840: Node yyValue;
32841: ParseError yyError = ParseError.DUMMY;
32842:
32843: // Alternative <Base>.
32844:
32845: yyResult = pJeannieJava$AdditiveExpression(yyStart);
32846: yyError = yyResult.select(yyError);
32847: if (yyResult.hasValue()) {
32848: final Node v$4 = yyResult.semanticValue();
32849:
32850: yyRepetition1 = yyResult.index;
32851: yyRepValue1 = Pair.empty();
32852: while (true) {
32853:
32854: yyResult = pJeannieJava$ShiftExpression$$Tail1(yyRepetition1);
32855: yyError = yyResult.select(yyError);
32856: if (yyResult.hasValue()) {
32857: final Action<Node> v$5 = yyResult.semanticValue();
32858:
32859: yyRepetition1 = yyResult.index;
32860: yyRepValue1 = new Pair<Action<Node>>(v$5,
32861: yyRepValue1);
32862: continue;
32863: }
32864: break;
32865: }
32866: { // Start scope for v$6.
32867: final Pair<Action<Node>> v$6 = yyRepValue1.reverse();
32868:
32869: yyValue = apply(v$6, v$4, yyStart);
32870:
32871: return new SemanticValue(yyValue, yyRepetition1,
32872: yyError);
32873: } // End scope for v$6.
32874: }
32875:
32876: // Done.
32877: return yyError;
32878: }
32879:
32880: // =========================================================================
32881:
32882: /**
32883: * Parse synthetic nonterminal JeannieJava.ShiftExpression$$Tail1.
32884: *
32885: * @param yyStart The index.
32886: * @return The result.
32887: * @throws IOException Signals an I/O error.
32888: */
32889: private Result pJeannieJava$ShiftExpression$$Tail1(final int yyStart)
32890: throws IOException {
32891:
32892: Result yyResult;
32893: Action<Node> yyValue;
32894: ParseError yyError = ParseError.DUMMY;
32895:
32896: // Alternative <Recursion>.
32897:
32898: yyResult = p$$Shared23(yyStart);
32899: yyError = yyResult.select(yyError);
32900: if (yyResult.hasValue()) {
32901: final String v$g$2 = yyResult.semanticValue();
32902:
32903: yyResult = pJeannieJava$AdditiveExpression(yyResult.index);
32904: yyError = yyResult.select(yyError);
32905: if (yyResult.hasValue()) {
32906: final Node v$g$3 = yyResult.semanticValue();
32907:
32908: yyValue = new Action<Node>() {
32909: public Node run(Node v$1) {
32910: return GNode.create("ShiftExpression", v$1,
32911: v$g$2, v$g$3);
32912: }
32913: };
32914:
32915: return yyResult.createValue(yyValue, yyError);
32916: }
32917: }
32918:
32919: // Done.
32920: return yyError;
32921: }
32922:
32923: // =========================================================================
32924:
32925: /**
32926: * Parse synthetic nonterminal xtc.lang.jeannie.Debugger.$$Shared23.
32927: * This nonterminal represents the duplicate productions
32928: * xtc.lang.jeannie.JeannieJava.ShiftOperator
32929: * and xtc.lang.jeannie.DebuggerJava.ShiftOperator.
32930: *
32931: * @param yyStart The index.
32932: * @return The result.
32933: * @throws IOException Signals an I/O error.
32934: */
32935: private Result p$$Shared23(final int yyStart) throws IOException {
32936: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
32937: if (null == yyColumn.chunk12)
32938: yyColumn.chunk12 = new Chunk12();
32939: if (null == yyColumn.chunk12.f$$Shared23)
32940: yyColumn.chunk12.f$$Shared23 = p$$Shared23$1(yyStart);
32941: return yyColumn.chunk12.f$$Shared23;
32942: }
32943:
32944: /** Actually parse xtc.lang.jeannie.Debugger.$$Shared23. */
32945: private Result p$$Shared23$1(final int yyStart) throws IOException {
32946: Result yyResult;
32947: String yyValue;
32948: ParseError yyError = ParseError.DUMMY;
32949:
32950: // Alternative <Left>.
32951:
32952: yyResult = pSymbol(yyStart);
32953: yyError = yyResult.select(yyError);
32954: if (yyResult.hasValue("<<")) {
32955: yyValue = "<<";
32956:
32957: return yyResult.createValue(yyValue, yyError);
32958: }
32959:
32960: // Alternative <Right>.
32961:
32962: yyResult = pSymbol(yyStart);
32963: yyError = yyResult.select(yyError);
32964: if (yyResult.hasValue(">>")) {
32965: yyValue = ">>";
32966:
32967: return yyResult.createValue(yyValue, yyError);
32968: }
32969:
32970: // Alternative <UnsignedRight>.
32971:
32972: yyResult = pSymbol(yyStart);
32973: yyError = yyResult.select(yyError);
32974: if (yyResult.hasValue(">>>")) {
32975: yyValue = ">>>";
32976:
32977: return yyResult.createValue(yyValue, yyError);
32978: }
32979:
32980: // Done.
32981: yyError = yyError.select(" expected", yyStart);
32982: return yyError;
32983: }
32984:
32985: // =========================================================================
32986:
32987: /**
32988: * Parse nonterminal xtc.lang.jeannie.JeannieJava.AdditiveExpression.
32989: *
32990: * @param yyStart The index.
32991: * @return The result.
32992: * @throws IOException Signals an I/O error.
32993: */
32994: private Result pJeannieJava$AdditiveExpression(final int yyStart)
32995: throws IOException {
32996:
32997: Result yyResult;
32998: int yyRepetition1;
32999: Pair<Action<Node>> yyRepValue1;
33000: Node yyValue;
33001: ParseError yyError = ParseError.DUMMY;
33002:
33003: // Alternative <Base>.
33004:
33005: yyResult = pJeannieJava$MultiplicativeExpression(yyStart);
33006: yyError = yyResult.select(yyError);
33007: if (yyResult.hasValue()) {
33008: final Node v$4 = yyResult.semanticValue();
33009:
33010: yyRepetition1 = yyResult.index;
33011: yyRepValue1 = Pair.empty();
33012: while (true) {
33013:
33014: yyResult = pJeannieJava$AdditiveExpression$$Tail1(yyRepetition1);
33015: yyError = yyResult.select(yyError);
33016: if (yyResult.hasValue()) {
33017: final Action<Node> v$5 = yyResult.semanticValue();
33018:
33019: yyRepetition1 = yyResult.index;
33020: yyRepValue1 = new Pair<Action<Node>>(v$5,
33021: yyRepValue1);
33022: continue;
33023: }
33024: break;
33025: }
33026: { // Start scope for v$6.
33027: final Pair<Action<Node>> v$6 = yyRepValue1.reverse();
33028:
33029: yyValue = apply(v$6, v$4, yyStart);
33030:
33031: return new SemanticValue(yyValue, yyRepetition1,
33032: yyError);
33033: } // End scope for v$6.
33034: }
33035:
33036: // Done.
33037: return yyError;
33038: }
33039:
33040: // =========================================================================
33041:
33042: /**
33043: * Parse synthetic nonterminal JeannieJava.AdditiveExpression$$Tail1.
33044: *
33045: * @param yyStart The index.
33046: * @return The result.
33047: * @throws IOException Signals an I/O error.
33048: */
33049: private Result pJeannieJava$AdditiveExpression$$Tail1(
33050: final int yyStart) throws IOException {
33051:
33052: Result yyResult;
33053: Action<Node> yyValue;
33054: ParseError yyError = ParseError.DUMMY;
33055:
33056: // Alternative <Recursion>.
33057:
33058: yyResult = p$$Shared15(yyStart);
33059: yyError = yyResult.select(yyError);
33060: if (yyResult.hasValue()) {
33061: final String v$g$2 = yyResult.semanticValue();
33062:
33063: yyResult = pJeannieJava$MultiplicativeExpression(yyResult.index);
33064: yyError = yyResult.select(yyError);
33065: if (yyResult.hasValue()) {
33066: final Node v$g$3 = yyResult.semanticValue();
33067:
33068: yyValue = new Action<Node>() {
33069: public Node run(Node v$1) {
33070: return GNode.create("AdditiveExpression", v$1,
33071: v$g$2, v$g$3);
33072: }
33073: };
33074:
33075: return yyResult.createValue(yyValue, yyError);
33076: }
33077: }
33078:
33079: // Done.
33080: return yyError;
33081: }
33082:
33083: // =========================================================================
33084:
33085: /**
33086: * Parse nonterminal xtc.lang.jeannie.JeannieJava.MultiplicativeExpression.
33087: *
33088: * @param yyStart The index.
33089: * @return The result.
33090: * @throws IOException Signals an I/O error.
33091: */
33092: private Result pJeannieJava$MultiplicativeExpression(
33093: final int yyStart) throws IOException {
33094:
33095: Result yyResult;
33096: int yyRepetition1;
33097: Pair<Action<Node>> yyRepValue1;
33098: Node yyValue;
33099: ParseError yyError = ParseError.DUMMY;
33100:
33101: // Alternative <Base>.
33102:
33103: yyResult = pJeannieJava$UnaryExpression(yyStart);
33104: yyError = yyResult.select(yyError);
33105: if (yyResult.hasValue()) {
33106: final Node v$4 = yyResult.semanticValue();
33107:
33108: yyRepetition1 = yyResult.index;
33109: yyRepValue1 = Pair.empty();
33110: while (true) {
33111:
33112: yyResult = pJeannieJava$MultiplicativeExpression$$Tail1(yyRepetition1);
33113: yyError = yyResult.select(yyError);
33114: if (yyResult.hasValue()) {
33115: final Action<Node> v$5 = yyResult.semanticValue();
33116:
33117: yyRepetition1 = yyResult.index;
33118: yyRepValue1 = new Pair<Action<Node>>(v$5,
33119: yyRepValue1);
33120: continue;
33121: }
33122: break;
33123: }
33124: { // Start scope for v$6.
33125: final Pair<Action<Node>> v$6 = yyRepValue1.reverse();
33126:
33127: yyValue = apply(v$6, v$4, yyStart);
33128:
33129: return new SemanticValue(yyValue, yyRepetition1,
33130: yyError);
33131: } // End scope for v$6.
33132: }
33133:
33134: // Done.
33135: return yyError;
33136: }
33137:
33138: // =========================================================================
33139:
33140: /**
33141: * Parse synthetic nonterminal JeannieJava.MultiplicativeExpression$$Tail1.
33142: *
33143: * @param yyStart The index.
33144: * @return The result.
33145: * @throws IOException Signals an I/O error.
33146: */
33147: private Result pJeannieJava$MultiplicativeExpression$$Tail1(
33148: final int yyStart) throws IOException {
33149:
33150: Result yyResult;
33151: Action<Node> yyValue;
33152: ParseError yyError = ParseError.DUMMY;
33153:
33154: // Alternative <Times>.
33155:
33156: yyResult = p$$Shared16(yyStart);
33157: yyError = yyResult.select(yyError);
33158: if (yyResult.hasValue()) {
33159: final String v$g$2 = yyResult.semanticValue();
33160:
33161: yyResult = pJeannieJava$UnaryExpression(yyResult.index);
33162: yyError = yyResult.select(yyError);
33163: if (yyResult.hasValue()) {
33164: final Node v$g$3 = yyResult.semanticValue();
33165:
33166: yyValue = new Action<Node>() {
33167: public Node run(Node v$1) {
33168: return GNode.create("MultiplicativeExpression",
33169: v$1, v$g$2, v$g$3);
33170: }
33171: };
33172:
33173: return yyResult.createValue(yyValue, yyError);
33174: }
33175: }
33176:
33177: // Done.
33178: return yyError;
33179: }
33180:
33181: // =========================================================================
33182:
33183: /**
33184: * Parse nonterminal xtc.lang.jeannie.JeannieJava.UnaryExpression.
33185: *
33186: * @param yyStart The index.
33187: * @return The result.
33188: * @throws IOException Signals an I/O error.
33189: */
33190: private Result pJeannieJava$UnaryExpression(final int yyStart)
33191: throws IOException {
33192:
33193: Result yyResult;
33194: Node yyValue;
33195: ParseError yyError = ParseError.DUMMY;
33196:
33197: // Alternative <Plus>.
33198:
33199: yyResult = pSymbol(yyStart);
33200: yyError = yyResult.select(yyError);
33201: if (yyResult.hasValue("+")) {
33202: final String v$g$1 = "+";
33203:
33204: yyResult = pJeannieJava$UnaryExpression(yyResult.index);
33205: yyError = yyResult.select(yyError);
33206: if (yyResult.hasValue()) {
33207: final Node v$g$2 = yyResult.semanticValue();
33208:
33209: yyValue = GNode.create("UnaryExpression", v$g$1, v$g$2);
33210: yyValue.setLocation(location(yyStart));
33211:
33212: return yyResult.createValue(yyValue, yyError);
33213: }
33214: }
33215:
33216: // Alternative <Minus>.
33217:
33218: yyResult = pSymbol(yyStart);
33219: yyError = yyResult.select(yyError);
33220: if (yyResult.hasValue("-")) {
33221: final String v$g$3 = "-";
33222:
33223: yyResult = pJeannieJava$UnaryExpression(yyResult.index);
33224: yyError = yyResult.select(yyError);
33225: if (yyResult.hasValue()) {
33226: final Node v$g$4 = yyResult.semanticValue();
33227:
33228: yyValue = GNode.create("UnaryExpression", v$g$3, v$g$4);
33229: yyValue.setLocation(location(yyStart));
33230:
33231: return yyResult.createValue(yyValue, yyError);
33232: }
33233: }
33234:
33235: // Alternative <Increment>.
33236:
33237: yyResult = pSymbol(yyStart);
33238: yyError = yyResult.select(yyError);
33239: if (yyResult.hasValue("++")) {
33240: final String v$g$5 = "++";
33241:
33242: yyResult = pJeannieJava$UnaryExpression(yyResult.index);
33243: yyError = yyResult.select(yyError);
33244: if (yyResult.hasValue()) {
33245: final Node v$g$6 = yyResult.semanticValue();
33246:
33247: yyValue = GNode.create("UnaryExpression", v$g$5, v$g$6);
33248: yyValue.setLocation(location(yyStart));
33249:
33250: return yyResult.createValue(yyValue, yyError);
33251: }
33252: }
33253:
33254: // Alternative <Decrement>.
33255:
33256: yyResult = pSymbol(yyStart);
33257: yyError = yyResult.select(yyError);
33258: if (yyResult.hasValue("--")) {
33259: final String v$g$7 = "--";
33260:
33261: yyResult = pJeannieJava$UnaryExpression(yyResult.index);
33262: yyError = yyResult.select(yyError);
33263: if (yyResult.hasValue()) {
33264: final Node v$g$8 = yyResult.semanticValue();
33265:
33266: yyValue = GNode.create("UnaryExpression", v$g$7, v$g$8);
33267: yyValue.setLocation(location(yyStart));
33268:
33269: return yyResult.createValue(yyValue, yyError);
33270: }
33271: }
33272:
33273: // Alternative <Base>.
33274:
33275: yyResult = pJeannieJava$UnaryExpressionNotPlusMinus(yyStart);
33276: yyError = yyResult.select(yyError);
33277: if (yyResult.hasValue()) {
33278: yyValue = yyResult.semanticValue();
33279:
33280: return yyResult.createValue(yyValue, yyError);
33281: }
33282:
33283: // Done.
33284: yyError = yyError.select("unary expression expected", yyStart);
33285: return yyError;
33286: }
33287:
33288: // =========================================================================
33289:
33290: /**
33291: * Parse nonterminal
33292: * xtc.lang.jeannie.JeannieJava.UnaryExpressionNotPlusMinus.
33293: *
33294: * @param yyStart The index.
33295: * @return The result.
33296: * @throws IOException Signals an I/O error.
33297: */
33298: private Result pJeannieJava$UnaryExpressionNotPlusMinus(
33299: final int yyStart) throws IOException {
33300:
33301: Result yyResult;
33302: int yyBase;
33303: int yyOption1;
33304: Node yyOpValue1;
33305: Node yyValue;
33306: ParseError yyError = ParseError.DUMMY;
33307:
33308: // Alternative 1.
33309:
33310: yyResult = pSymbol(yyStart);
33311: yyError = yyResult.select(yyError);
33312: if (yyResult.hasValue("~")) {
33313:
33314: yyResult = pJeannieJava$UnaryExpression(yyResult.index);
33315: yyError = yyResult.select(yyError);
33316: if (yyResult.hasValue()) {
33317: final Node v$g$1 = yyResult.semanticValue();
33318:
33319: yyValue = GNode.create("BitwiseNegationExpression",
33320: v$g$1);
33321: yyValue.setLocation(location(yyStart));
33322:
33323: return yyResult.createValue(yyValue, yyError);
33324: }
33325: }
33326:
33327: // Alternative <CInJavaExpression>.
33328:
33329: yyResult = pJeannieJava$CInJavaExpression(yyStart);
33330: yyError = yyResult.select(yyError);
33331: if (yyResult.hasValue()) {
33332: yyValue = yyResult.semanticValue();
33333:
33334: return yyResult.createValue(yyValue, yyError);
33335: }
33336:
33337: // Alternative 3.
33338:
33339: yyResult = pSymbol(yyStart);
33340: yyError = yyResult.select(yyError);
33341: if (yyResult.hasValue("!")) {
33342:
33343: yyResult = pJeannieJava$UnaryExpression(yyResult.index);
33344: yyError = yyResult.select(yyError);
33345: if (yyResult.hasValue()) {
33346: final Node v$g$1 = yyResult.semanticValue();
33347:
33348: yyValue = GNode.create("LogicalNegationExpression",
33349: v$g$1);
33350: yyValue.setLocation(location(yyStart));
33351:
33352: return yyResult.createValue(yyValue, yyError);
33353: }
33354: }
33355:
33356: // Alternative 4.
33357:
33358: yyResult = pSymbol(yyStart);
33359: yyError = yyResult.select(yyError);
33360: if (yyResult.hasValue("(")) {
33361:
33362: final int yyChoice1 = yyResult.index;
33363:
33364: // Nested alternative 1.
33365:
33366: yyResult = pPrimitiveType(yyChoice1);
33367: yyError = yyResult.select(yyError);
33368: if (yyResult.hasValue()) {
33369: final Node v$g$1 = yyResult.semanticValue();
33370:
33371: yyOption1 = yyResult.index;
33372: yyOpValue1 = null;
33373:
33374: yyResult = pDimensions(yyOption1);
33375: yyError = yyResult.select(yyError);
33376: if (yyResult.hasValue()) {
33377: final Node v$el$1 = yyResult.semanticValue();
33378:
33379: yyOption1 = yyResult.index;
33380: yyOpValue1 = v$el$1;
33381: }
33382: { // Start scope for v$g$2.
33383: final Node v$g$2 = yyOpValue1;
33384:
33385: yyBase = yyOption1;
33386: yyResult = pSymbol(yyBase);
33387: yyError = yyResult.select(yyError);
33388: if (yyResult.hasValue(")")) {
33389:
33390: yyResult = pJeannieJava$UnaryExpression(yyResult.index);
33391: yyError = yyResult.select(yyError);
33392: if (yyResult.hasValue()) {
33393: final Node v$g$3 = yyResult.semanticValue();
33394:
33395: yyValue = GNode.create(
33396: "BasicCastExpression", v$g$1,
33397: v$g$2, v$g$3);
33398: yyValue.setLocation(location(yyStart));
33399:
33400: return yyResult.createValue(yyValue,
33401: yyError);
33402: }
33403: } else {
33404: yyError = yyError.select("\")\" expected",
33405: yyBase);
33406: }
33407: } // End scope for v$g$2.
33408: }
33409:
33410: // Nested alternative 2.
33411:
33412: yyResult = pType(yyChoice1);
33413: yyError = yyResult.select(yyError);
33414: if (yyResult.hasValue()) {
33415: final Node v$g$1 = yyResult.semanticValue();
33416:
33417: yyBase = yyResult.index;
33418: yyResult = pSymbol(yyBase);
33419: yyError = yyResult.select(yyError);
33420: if (yyResult.hasValue(")")) {
33421:
33422: yyResult = pJeannieJava$UnaryExpressionNotPlusMinus(yyResult.index);
33423: yyError = yyResult.select(yyError);
33424: if (yyResult.hasValue()) {
33425: final Node v$g$2 = yyResult.semanticValue();
33426:
33427: yyValue = GNode.create("CastExpression", v$g$1,
33428: v$g$2);
33429: yyValue.setLocation(location(yyStart));
33430:
33431: return yyResult.createValue(yyValue, yyError);
33432: }
33433: } else {
33434: yyError = yyError.select("\")\" expected", yyBase);
33435: }
33436: }
33437: }
33438:
33439: // Alternative <Base>.
33440:
33441: yyResult = pJeannieJava$PostfixExpression(yyStart);
33442: yyError = yyResult.select(yyError);
33443: if (yyResult.hasValue()) {
33444: yyValue = yyResult.semanticValue();
33445:
33446: return yyResult.createValue(yyValue, yyError);
33447: }
33448:
33449: // Done.
33450: yyError = yyError.select(
33451: "unary expression not plus minus expected", yyStart);
33452: return yyError;
33453: }
33454:
33455: // =========================================================================
33456:
33457: /**
33458: * Parse nonterminal xtc.lang.jeannie.JeannieJava.PostfixExpression.
33459: *
33460: * @param yyStart The index.
33461: * @return The result.
33462: * @throws IOException Signals an I/O error.
33463: */
33464: private Result pJeannieJava$PostfixExpression(final int yyStart)
33465: throws IOException {
33466:
33467: Result yyResult;
33468: int yyRepetition1;
33469: Pair<Action<Node>> yyRepValue1;
33470: Node yyValue;
33471: ParseError yyError = ParseError.DUMMY;
33472:
33473: // Alternative <Base>.
33474:
33475: yyResult = pJeannieJava$PrimaryExpression(yyStart);
33476: yyError = yyResult.select(yyError);
33477: if (yyResult.hasValue()) {
33478: final Node v$g$15 = yyResult.semanticValue();
33479:
33480: yyRepetition1 = yyResult.index;
33481: yyRepValue1 = Pair.empty();
33482: while (true) {
33483:
33484: yyResult = pJeannieJava$PostfixExpression$$Tail1(yyRepetition1);
33485: yyError = yyResult.select(yyError);
33486: if (yyResult.hasValue()) {
33487: final Action<Node> v$16 = yyResult.semanticValue();
33488:
33489: yyRepetition1 = yyResult.index;
33490: yyRepValue1 = new Pair<Action<Node>>(v$16,
33491: yyRepValue1);
33492: continue;
33493: }
33494: break;
33495: }
33496: { // Start scope for v$17.
33497: final Pair<Action<Node>> v$17 = yyRepValue1.reverse();
33498:
33499: yyValue = apply(v$17, v$g$15, yyStart);
33500:
33501: return new SemanticValue(yyValue, yyRepetition1,
33502: yyError);
33503: } // End scope for v$17.
33504: }
33505:
33506: // Done.
33507: return yyError;
33508: }
33509:
33510: // =========================================================================
33511:
33512: /**
33513: * Parse synthetic nonterminal JeannieJava.PostfixExpression$$Tail1.
33514: *
33515: * @param yyStart The index.
33516: * @return The result.
33517: * @throws IOException Signals an I/O error.
33518: */
33519: private Result pJeannieJava$PostfixExpression$$Tail1(
33520: final int yyStart) throws IOException {
33521:
33522: Result yyResult;
33523: int yyBase;
33524: int yyOption1;
33525: Node yyOpValue1;
33526: Action<Node> yyValue;
33527: ParseError yyError = ParseError.DUMMY;
33528:
33529: // Alternative 1.
33530:
33531: yyResult = pSymbol(yyStart);
33532: yyError = yyResult.select(yyError);
33533: if (yyResult.hasValue(".")) {
33534:
33535: final int yyChoice1 = yyResult.index;
33536:
33537: // Nested alternative 1.
33538: { // Start scope for nested choice.
33539:
33540: final int yyChoice2 = yyChoice1;
33541:
33542: // Nested alternative 1.
33543:
33544: yyResult = pJavaIdentifier$Identifier(yyChoice2);
33545: yyError = yyResult.select(yyError);
33546: if (yyResult.hasValue()) {
33547: final String v$g$3 = yyResult.semanticValue();
33548:
33549: yyResult = pJeannieJava$Arguments(yyResult.index);
33550: yyError = yyResult.select(yyError);
33551: if (yyResult.hasValue()) {
33552: final Node v$g$4 = yyResult.semanticValue();
33553:
33554: yyValue = new Action<Node>() {
33555: public Node run(Node v$1) {
33556: return GNode.create("CallExpression",
33557: v$1, null, v$g$3, v$g$4);
33558: }
33559: };
33560:
33561: return yyResult.createValue(yyValue, yyError);
33562: }
33563: }
33564:
33565: // Nested alternative 2.
33566:
33567: yyBase = yyChoice2;
33568: yyResult = pJavaIdentifier$Word(yyBase);
33569: yyError = yyResult.select(yyError);
33570: if (yyResult.hasValue("super")) {
33571: final String v$g$5 = "super";
33572:
33573: yyResult = pJeannieJava$Arguments(yyResult.index);
33574: yyError = yyResult.select(yyError);
33575: if (yyResult.hasValue()) {
33576: final Node v$g$6 = yyResult.semanticValue();
33577:
33578: yyValue = new Action<Node>() {
33579: public Node run(Node v$1) {
33580: return GNode.create("CallExpression",
33581: v$1, null, v$g$5, v$g$6);
33582: }
33583: };
33584:
33585: return yyResult.createValue(yyValue, yyError);
33586: }
33587: } else {
33588: yyError = yyError.select("\"super\" expected",
33589: yyBase);
33590: }
33591: } // End scope for nested choice.
33592:
33593: // Nested alternative 2.
33594:
33595: yyBase = yyChoice1;
33596: yyResult = pJavaIdentifier$Word(yyBase);
33597: yyError = yyResult.select(yyError);
33598: if (yyResult.hasValue("super")) {
33599:
33600: yyValue = new Action<Node>() {
33601: public Node run(Node v$1) {
33602: return GNode.create("SuperExpression", v$1);
33603: }
33604: };
33605:
33606: return yyResult.createValue(yyValue, yyError);
33607: } else {
33608: yyError = yyError.select("\"super\" expected", yyBase);
33609: }
33610:
33611: // Nested alternative 3.
33612:
33613: yyResult = pJavaIdentifier$Identifier(yyChoice1);
33614: yyError = yyResult.select(yyError);
33615: if (yyResult.hasValue()) {
33616: final String v$g$7 = yyResult.semanticValue();
33617:
33618: yyValue = new Action<Node>() {
33619: public Node run(Node v$1) {
33620: return GNode.create("SelectionExpression", v$1,
33621: v$g$7);
33622: }
33623: };
33624:
33625: return yyResult.createValue(yyValue, yyError);
33626: }
33627: }
33628:
33629: // Alternative 2.
33630:
33631: yyResult = pSymbol(yyStart);
33632: yyError = yyResult.select(yyError);
33633: if (yyResult.hasValue("[")) {
33634:
33635: yyResult = pJeannieJava$Expression(yyResult.index);
33636: yyError = yyResult.select(yyError);
33637: if (yyResult.hasValue()) {
33638: final Node v$g$8 = yyResult.semanticValue();
33639:
33640: yyBase = yyResult.index;
33641: yyResult = pSymbol(yyBase);
33642: yyError = yyResult.select(yyError);
33643: if (yyResult.hasValue("]")) {
33644:
33645: yyValue = new Action<Node>() {
33646: public Node run(Node v$1) {
33647: return GNode.create("SubscriptExpression",
33648: v$1, v$g$8);
33649: }
33650: };
33651:
33652: return yyResult.createValue(yyValue, yyError);
33653: } else {
33654: yyError = yyError.select("\"]\" expected", yyBase);
33655: }
33656: }
33657: }
33658:
33659: // Alternative 3.
33660:
33661: yyResult = pSymbol(yyStart);
33662: yyError = yyResult.select(yyError);
33663: if (yyResult.hasValue("++")) {
33664: final String v$g$9 = "++";
33665:
33666: yyValue = new Action<Node>() {
33667: public Node run(Node v$1) {
33668: return GNode
33669: .create("PostfixExpression", v$1, v$g$9);
33670: }
33671: };
33672:
33673: return yyResult.createValue(yyValue, yyError);
33674: }
33675:
33676: // Alternative 4.
33677:
33678: yyResult = pSymbol(yyStart);
33679: yyError = yyResult.select(yyError);
33680: if (yyResult.hasValue("--")) {
33681: final String v$g$10 = "--";
33682:
33683: yyValue = new Action<Node>() {
33684: public Node run(Node v$1) {
33685: return GNode.create("PostfixExpression", v$1,
33686: v$g$10);
33687: }
33688: };
33689:
33690: return yyResult.createValue(yyValue, yyError);
33691: }
33692:
33693: // Alternative 5.
33694:
33695: yyResult = pSymbol(yyStart);
33696: yyError = yyResult.select(yyError);
33697: if (yyResult.hasValue(".")) {
33698:
33699: yyBase = yyResult.index;
33700: yyResult = pJavaIdentifier$Word(yyBase);
33701: yyError = yyResult.select(yyError);
33702: if (yyResult.hasValue("new")) {
33703:
33704: yyResult = pJavaType$TypeName(yyResult.index);
33705: yyError = yyResult.select(yyError);
33706: if (yyResult.hasValue()) {
33707: final Node v$g$12 = yyResult.semanticValue();
33708:
33709: yyResult = pJeannieJava$Arguments(yyResult.index);
33710: yyError = yyResult.select(yyError);
33711: if (yyResult.hasValue()) {
33712: final Node v$g$13 = yyResult.semanticValue();
33713:
33714: yyOption1 = yyResult.index;
33715: yyOpValue1 = null;
33716:
33717: yyResult = pJeannieJava$ClassBody(yyOption1);
33718: yyError = yyResult.select(yyError);
33719: if (yyResult.hasValue()) {
33720: final Node v$el$1 = yyResult
33721: .semanticValue();
33722:
33723: yyOption1 = yyResult.index;
33724: yyOpValue1 = v$el$1;
33725: }
33726: { // Start scope for v$g$14.
33727: final Node v$g$14 = yyOpValue1;
33728:
33729: yyValue = new Action<Node>() {
33730: public Node run(Node v$1) {
33731: return GNode.create(
33732: "NewClassExpression", v$1,
33733: null, v$g$12, v$g$13,
33734: v$g$14);
33735: }
33736: };
33737:
33738: return new SemanticValue(yyValue,
33739: yyOption1, yyError);
33740: } // End scope for v$g$14.
33741: }
33742: }
33743: } else {
33744: yyError = yyError.select("\"new\" expected", yyBase);
33745: }
33746: }
33747:
33748: // Done.
33749: yyError = yyError
33750: .select("postfix expression expected", yyStart);
33751: return yyError;
33752: }
33753:
33754: // =========================================================================
33755:
33756: /**
33757: * Parse nonterminal xtc.lang.jeannie.JeannieJava.PrimaryExpression.
33758: *
33759: * @param yyStart The index.
33760: * @return The result.
33761: * @throws IOException Signals an I/O error.
33762: */
33763: private Result pJeannieJava$PrimaryExpression(final int yyStart)
33764: throws IOException {
33765:
33766: Result yyResult;
33767: int yyBase;
33768: int yyOption1;
33769: Node yyOpValue1;
33770: Node yyValue;
33771: ParseError yyError = ParseError.DUMMY;
33772:
33773: // Alternative <Literal>.
33774:
33775: yyResult = pLiteral(yyStart);
33776: yyError = yyResult.select(yyError);
33777: if (yyResult.hasValue()) {
33778: yyValue = yyResult.semanticValue();
33779:
33780: return yyResult.createValue(yyValue, yyError);
33781: }
33782:
33783: // Alternative <Expression>.
33784:
33785: yyResult = pJavaIdentifier$Identifier(yyStart);
33786: yyError = yyResult.select(yyError);
33787: if (yyResult.hasValue()) {
33788: final String v$g$3 = yyResult.semanticValue();
33789:
33790: yyResult = pJeannieJava$Arguments(yyResult.index);
33791: yyError = yyResult.select(yyError);
33792: if (yyResult.hasValue()) {
33793: final Node v$g$4 = yyResult.semanticValue();
33794:
33795: yyValue = GNode.create("CallExpression", null, null,
33796: v$g$3, v$g$4);
33797: yyValue.setLocation(location(yyStart));
33798:
33799: return yyResult.createValue(yyValue, yyError);
33800: }
33801: }
33802:
33803: // Alternative <Expression>.
33804:
33805: yyResult = pResultType(yyStart);
33806: yyError = yyResult.select(yyError);
33807: if (yyResult.hasValue()) {
33808: final Node v$g$1 = yyResult.semanticValue();
33809:
33810: yyBase = yyResult.index;
33811: yyResult = pSymbol(yyBase);
33812: yyError = yyResult.select(yyError);
33813: if (yyResult.hasValue(".")) {
33814:
33815: yyBase = yyResult.index;
33816: yyResult = pJavaIdentifier$Word(yyBase);
33817: yyError = yyResult.select(yyError);
33818: if (yyResult.hasValue("class")) {
33819:
33820: yyValue = GNode.create("ClassLiteralExpression",
33821: v$g$1);
33822: yyValue.setLocation(location(yyStart));
33823:
33824: return yyResult.createValue(yyValue, yyError);
33825: } else {
33826: yyError = yyError.select("\"class\" expected",
33827: yyBase);
33828: }
33829: } else {
33830: yyError = yyError.select("\".\" expected", yyBase);
33831: }
33832: }
33833:
33834: // Alternative <Expression>.
33835:
33836: yyResult = pJavaIdentifier$Word(yyStart);
33837: yyError = yyResult.select(yyError);
33838: if (yyResult.hasValue("this")) {
33839: final String v$g$3 = "this";
33840:
33841: yyResult = pJeannieJava$Arguments(yyResult.index);
33842: yyError = yyResult.select(yyError);
33843: if (yyResult.hasValue()) {
33844: final Node v$g$4 = yyResult.semanticValue();
33845:
33846: yyValue = GNode.create("CallExpression", null, null,
33847: v$g$3, v$g$4);
33848: yyValue.setLocation(location(yyStart));
33849:
33850: return yyResult.createValue(yyValue, yyError);
33851: }
33852: }
33853:
33854: // Alternative <Expression>.
33855:
33856: yyOption1 = yyStart;
33857: yyOpValue1 = null;
33858:
33859: yyResult = pQualifiedIdentifier(yyOption1);
33860: yyError = yyResult.select(yyError);
33861: if (yyResult.hasValue()) {
33862: final Node v$el$1 = yyResult.semanticValue();
33863:
33864: yyBase = yyResult.index;
33865: yyResult = pSymbol(yyBase);
33866: yyError = yyResult.select(yyError);
33867: if (yyResult.hasValue(".")) {
33868:
33869: yyOption1 = yyResult.index;
33870: yyOpValue1 = v$el$1;
33871: } else {
33872: yyError = yyError.select("\".\" expected", yyBase);
33873: }
33874: }
33875: { // Start scope for v$g$1.
33876: final Node v$g$1 = yyOpValue1;
33877:
33878: yyBase = yyOption1;
33879: yyResult = pJavaIdentifier$Word(yyBase);
33880: yyError = yyResult.select(yyError);
33881: if (yyResult.hasValue("this")) {
33882:
33883: yyValue = GNode.create("ThisExpression", v$g$1);
33884: yyValue.setLocation(location(yyStart));
33885:
33886: return yyResult.createValue(yyValue, yyError);
33887: } else {
33888: yyError = yyError.select("\"this\" expected", yyBase);
33889: }
33890: } // End scope for v$g$1.
33891:
33892: // Alternative 6.
33893: { // Start scope for nested choice.
33894:
33895: final int yyChoice1 = yyStart;
33896:
33897: // Nested alternative 1.
33898:
33899: yyResult = pJavaIdentifier$Word(yyChoice1);
33900: yyError = yyResult.select(yyError);
33901: if (yyResult.hasValue("super")) {
33902: final String v$g$3 = "super";
33903:
33904: yyResult = pJeannieJava$Arguments(yyResult.index);
33905: yyError = yyResult.select(yyError);
33906: if (yyResult.hasValue()) {
33907: final Node v$g$4 = yyResult.semanticValue();
33908:
33909: yyValue = GNode.create("CallExpression", null,
33910: null, v$g$3, v$g$4);
33911: yyValue.setLocation(location(yyStart));
33912:
33913: return yyResult.createValue(yyValue, yyError);
33914: }
33915: }
33916:
33917: // Nested alternative 2.
33918:
33919: yyBase = yyChoice1;
33920: yyResult = pJavaIdentifier$Word(yyBase);
33921: yyError = yyResult.select(yyError);
33922: if (yyResult.hasValue("super")) {
33923:
33924: yyValue = GNode.create("SuperExpression", null);
33925: yyValue.setLocation(location(yyStart));
33926:
33927: return yyResult.createValue(yyValue, yyError);
33928: } else {
33929: yyError = yyError.select("\"super\" expected", yyBase);
33930: }
33931: } // End scope for nested choice.
33932:
33933: // Alternative 7.
33934:
33935: yyResult = pJavaIdentifier$Identifier(yyStart);
33936: yyError = yyResult.select(yyError);
33937: if (yyResult.hasValue()) {
33938: final String v$g$1 = yyResult.semanticValue();
33939:
33940: yyValue = GNode.create("PrimaryIdentifier", v$g$1);
33941: yyValue.setLocation(location(yyStart));
33942:
33943: return yyResult.createValue(yyValue, yyError);
33944: }
33945:
33946: // Alternative <Expression>.
33947:
33948: yyResult = pJavaIdentifier$Word(yyStart);
33949: yyError = yyResult.select(yyError);
33950: if (yyResult.hasValue("new")) {
33951:
33952: yyResult = pJavaType$TypeName(yyResult.index);
33953: yyError = yyResult.select(yyError);
33954: if (yyResult.hasValue()) {
33955: final Node v$g$3 = yyResult.semanticValue();
33956:
33957: yyResult = pJeannieJava$Arguments(yyResult.index);
33958: yyError = yyResult.select(yyError);
33959: if (yyResult.hasValue()) {
33960: final Node v$g$4 = yyResult.semanticValue();
33961:
33962: yyOption1 = yyResult.index;
33963: yyOpValue1 = null;
33964:
33965: yyResult = pJeannieJava$ClassBody(yyOption1);
33966: yyError = yyResult.select(yyError);
33967: if (yyResult.hasValue()) {
33968: final Node v$el$1 = yyResult.semanticValue();
33969:
33970: yyOption1 = yyResult.index;
33971: yyOpValue1 = v$el$1;
33972: }
33973: { // Start scope for v$g$5.
33974: final Node v$g$5 = yyOpValue1;
33975:
33976: yyValue = GNode.create("NewClassExpression",
33977: null, null, v$g$3, v$g$4, v$g$5);
33978: yyValue.setLocation(location(yyStart));
33979:
33980: return new SemanticValue(yyValue, yyOption1,
33981: yyError);
33982: } // End scope for v$g$5.
33983: }
33984: }
33985: }
33986:
33987: // Alternative 9.
33988:
33989: yyResult = pJavaIdentifier$Word(yyStart);
33990: yyError = yyResult.select(yyError);
33991: if (yyResult.hasValue("new")) {
33992:
33993: yyResult = pJavaType$TypeName(yyResult.index);
33994: yyError = yyResult.select(yyError);
33995: if (yyResult.hasValue()) {
33996: final Node v$g$1 = yyResult.semanticValue();
33997:
33998: final int yyChoice1 = yyResult.index;
33999:
34000: // Nested alternative 1.
34001:
34002: yyResult = pJeannieJava$ConcreteDimensions(yyChoice1);
34003: yyError = yyResult.select(yyError);
34004: if (yyResult.hasValue()) {
34005: final Node v$g$2 = yyResult.semanticValue();
34006:
34007: yyOption1 = yyResult.index;
34008: yyOpValue1 = null;
34009:
34010: yyResult = pDimensions(yyOption1);
34011: yyError = yyResult.select(yyError);
34012: if (yyResult.hasValue()) {
34013: final Node v$el$1 = yyResult.semanticValue();
34014:
34015: yyOption1 = yyResult.index;
34016: yyOpValue1 = v$el$1;
34017: }
34018: { // Start scope for v$g$3.
34019: final Node v$g$3 = yyOpValue1;
34020:
34021: yyValue = GNode.create("NewArrayExpression",
34022: v$g$1, v$g$2, v$g$3, null);
34023: yyValue.setLocation(location(yyStart));
34024:
34025: return new SemanticValue(yyValue, yyOption1,
34026: yyError);
34027: } // End scope for v$g$3.
34028: }
34029:
34030: // Nested alternative 2.
34031:
34032: yyOption1 = yyChoice1;
34033: yyOpValue1 = null;
34034:
34035: yyResult = pDimensions(yyOption1);
34036: yyError = yyResult.select(yyError);
34037: if (yyResult.hasValue()) {
34038: final Node v$el$2 = yyResult.semanticValue();
34039:
34040: yyOption1 = yyResult.index;
34041: yyOpValue1 = v$el$2;
34042: }
34043: { // Start scope for v$g$6.
34044: final Node v$g$6 = yyOpValue1;
34045:
34046: yyResult = pJeannieJava$ArrayInitializer(yyOption1);
34047: yyError = yyResult.select(yyError);
34048: if (yyResult.hasValue()) {
34049: final Node v$g$7 = yyResult.semanticValue();
34050:
34051: yyValue = GNode.create("NewArrayExpression",
34052: v$g$1, null, v$g$6, v$g$7);
34053: yyValue.setLocation(location(yyStart));
34054:
34055: return yyResult.createValue(yyValue, yyError);
34056: }
34057: } // End scope for v$g$6.
34058: }
34059: }
34060:
34061: // Alternative <Nested>.
34062:
34063: yyResult = pSymbol(yyStart);
34064: yyError = yyResult.select(yyError);
34065: if (yyResult.hasValue("(")) {
34066:
34067: yyResult = pJeannieJava$Expression(yyResult.index);
34068: yyError = yyResult.select(yyError);
34069: if (yyResult.hasValue()) {
34070: yyValue = yyResult.semanticValue();
34071:
34072: yyBase = yyResult.index;
34073: yyResult = pSymbol(yyBase);
34074: yyError = yyResult.select(yyError);
34075: if (yyResult.hasValue(")")) {
34076:
34077: return yyResult.createValue(yyValue, yyError);
34078: } else {
34079: yyError = yyError.select("\")\" expected", yyBase);
34080: }
34081: }
34082: }
34083:
34084: // Done.
34085: yyError = yyError
34086: .select("primary expression expected", yyStart);
34087: return yyError;
34088: }
34089:
34090: // =========================================================================
34091:
34092: /**
34093: * Parse nonterminal xtc.lang.jeannie.JeannieJava.ConcreteDimensions.
34094: *
34095: * @param yyStart The index.
34096: * @return The result.
34097: * @throws IOException Signals an I/O error.
34098: */
34099: private Result pJeannieJava$ConcreteDimensions(final int yyStart)
34100: throws IOException {
34101:
34102: Result yyResult;
34103: int yyRepetition1;
34104: boolean yyRepeated1;
34105: Pair<Node> yyRepValue1;
34106: Node yyValue;
34107: ParseError yyError = ParseError.DUMMY;
34108:
34109: // Alternative 1.
34110:
34111: yyRepetition1 = yyStart;
34112: yyRepeated1 = false;
34113: yyRepValue1 = Pair.empty();
34114: while (true) {
34115:
34116: yyResult = pJeannieJava$ConcreteDimension(yyRepetition1);
34117: yyError = yyResult.select(yyError);
34118: if (yyResult.hasValue()) {
34119: final Node v$el$1 = yyResult.semanticValue();
34120:
34121: yyRepetition1 = yyResult.index;
34122: yyRepeated1 = true;
34123: yyRepValue1 = new Pair<Node>(v$el$1, yyRepValue1);
34124: continue;
34125: }
34126: break;
34127: }
34128:
34129: if (yyRepeated1) {
34130: final Pair<Node> v$g$1 = yyRepValue1.reverse();
34131:
34132: yyValue = GNode.createFromPair("ConcreteDimensions", v$g$1);
34133: yyValue.setLocation(location(yyStart));
34134:
34135: return new SemanticValue(yyValue, yyRepetition1, yyError);
34136: }
34137:
34138: // Done.
34139: return yyError;
34140: }
34141:
34142: // =========================================================================
34143:
34144: /**
34145: * Parse nonterminal xtc.lang.jeannie.JeannieJava.ConcreteDimension.
34146: *
34147: * @param yyStart The index.
34148: * @return The result.
34149: * @throws IOException Signals an I/O error.
34150: */
34151: private Result pJeannieJava$ConcreteDimension(final int yyStart)
34152: throws IOException {
34153:
34154: Result yyResult;
34155: int yyBase;
34156: Node yyValue;
34157: ParseError yyError = ParseError.DUMMY;
34158:
34159: // Alternative 1.
34160:
34161: yyResult = pSymbol(yyStart);
34162: yyError = yyResult.select(yyError);
34163: if (yyResult.hasValue("[")) {
34164:
34165: yyResult = pJeannieJava$Expression(yyResult.index);
34166: yyError = yyResult.select(yyError);
34167: if (yyResult.hasValue()) {
34168: yyValue = yyResult.semanticValue();
34169:
34170: yyBase = yyResult.index;
34171: yyResult = pSymbol(yyBase);
34172: yyError = yyResult.select(yyError);
34173: if (yyResult.hasValue("]")) {
34174:
34175: return yyResult.createValue(yyValue, yyError);
34176: } else {
34177: yyError = yyError.select("\"]\" expected", yyBase);
34178: }
34179: }
34180: }
34181:
34182: // Done.
34183: yyError = yyError
34184: .select("concrete dimension expected", yyStart);
34185: return yyError;
34186: }
34187:
34188: // =========================================================================
34189:
34190: /**
34191: * Parse nonterminal xtc.lang.jeannie.JeannieJava.ArrayInitializer.
34192: *
34193: * @param yyStart The index.
34194: * @return The result.
34195: * @throws IOException Signals an I/O error.
34196: */
34197: private Result pJeannieJava$ArrayInitializer(final int yyStart)
34198: throws IOException {
34199:
34200: Result yyResult;
34201: int yyBase;
34202: int yyRepetition1;
34203: Pair<Node> yyRepValue1;
34204: int yyOption1;
34205: Node yyValue;
34206: ParseError yyError = ParseError.DUMMY;
34207:
34208: // Alternative 1.
34209:
34210: yyResult = pSymbol(yyStart);
34211: yyError = yyResult.select(yyError);
34212: if (yyResult.hasValue("{")) {
34213:
34214: final int yyChoice1 = yyResult.index;
34215:
34216: // Nested alternative 1.
34217:
34218: yyResult = pJeannieJava$VariableInitializer(yyChoice1);
34219: yyError = yyResult.select(yyError);
34220: if (yyResult.hasValue()) {
34221: final Node v$g$1 = yyResult.semanticValue();
34222:
34223: yyRepetition1 = yyResult.index;
34224: yyRepValue1 = Pair.empty();
34225: while (true) {
34226:
34227: yyBase = yyRepetition1;
34228: yyResult = pSymbol(yyBase);
34229: yyError = yyResult.select(yyError);
34230: if (yyResult.hasValue(",")) {
34231:
34232: yyResult = pJeannieJava$VariableInitializer(yyResult.index);
34233: yyError = yyResult.select(yyError);
34234: if (yyResult.hasValue()) {
34235: final Node v$el$1 = yyResult
34236: .semanticValue();
34237:
34238: yyRepetition1 = yyResult.index;
34239: yyRepValue1 = new Pair<Node>(v$el$1,
34240: yyRepValue1);
34241: continue;
34242: }
34243: } else {
34244: yyError = yyError.select("\",\" expected",
34245: yyBase);
34246: }
34247: break;
34248: }
34249: { // Start scope for v$g$2.
34250: final Pair<Node> v$g$2 = yyRepValue1.reverse();
34251:
34252: yyOption1 = yyRepetition1;
34253:
34254: yyBase = yyOption1;
34255: yyResult = pSymbol(yyBase);
34256: yyError = yyResult.select(yyError);
34257: if (yyResult.hasValue(",")) {
34258:
34259: yyOption1 = yyResult.index;
34260: } else {
34261: yyError = yyError.select("\",\" expected",
34262: yyBase);
34263: }
34264:
34265: yyBase = yyOption1;
34266: yyResult = pSymbol(yyBase);
34267: yyError = yyResult.select(yyError);
34268: if (yyResult.hasValue("}")) {
34269:
34270: yyValue = GNode.createFromPair(
34271: "ArrayInitializer", v$g$1, v$g$2);
34272: yyValue.setLocation(location(yyStart));
34273:
34274: return yyResult.createValue(yyValue, yyError);
34275: } else {
34276: yyError = yyError.select("\"}\" expected",
34277: yyBase);
34278: }
34279: } // End scope for v$g$2.
34280: }
34281:
34282: // Nested alternative 2.
34283:
34284: yyOption1 = yyChoice1;
34285:
34286: yyBase = yyOption1;
34287: yyResult = pSymbol(yyBase);
34288: yyError = yyResult.select(yyError);
34289: if (yyResult.hasValue(",")) {
34290:
34291: yyOption1 = yyResult.index;
34292: } else {
34293: yyError = yyError.select("\",\" expected", yyBase);
34294: }
34295:
34296: yyBase = yyOption1;
34297: yyResult = pSymbol(yyBase);
34298: yyError = yyResult.select(yyError);
34299: if (yyResult.hasValue("}")) {
34300:
34301: yyValue = GNode.create("ArrayInitializer", false);
34302: yyValue.setLocation(location(yyStart));
34303:
34304: return yyResult.createValue(yyValue, yyError);
34305: } else {
34306: yyError = yyError.select("\"}\" expected", yyBase);
34307: }
34308: }
34309:
34310: // Done.
34311: yyError = yyError.select("array initializer expected", yyStart);
34312: return yyError;
34313: }
34314:
34315: // =========================================================================
34316:
34317: /**
34318: * Parse nonterminal xtc.lang.jeannie.JeannieJava.VariableInitializer.
34319: *
34320: * @param yyStart The index.
34321: * @return The result.
34322: * @throws IOException Signals an I/O error.
34323: */
34324: private Result pJeannieJava$VariableInitializer(final int yyStart)
34325: throws IOException {
34326:
34327: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
34328: if (null == yyColumn.chunk12)
34329: yyColumn.chunk12 = new Chunk12();
34330: if (null == yyColumn.chunk12.fJeannieJava$VariableInitializer)
34331: yyColumn.chunk12.fJeannieJava$VariableInitializer = pJeannieJava$VariableInitializer$1(yyStart);
34332: return yyColumn.chunk12.fJeannieJava$VariableInitializer;
34333: }
34334:
34335: /** Actually parse xtc.lang.jeannie.JeannieJava.VariableInitializer. */
34336: private Result pJeannieJava$VariableInitializer$1(final int yyStart)
34337: throws IOException {
34338:
34339: Result yyResult;
34340: Node yyValue;
34341: ParseError yyError = ParseError.DUMMY;
34342:
34343: // Alternative <Array>.
34344:
34345: yyResult = pJeannieJava$ArrayInitializer(yyStart);
34346: yyError = yyResult.select(yyError);
34347: if (yyResult.hasValue()) {
34348: yyValue = yyResult.semanticValue();
34349:
34350: return yyResult.createValue(yyValue, yyError);
34351: }
34352:
34353: // Alternative <Expression>.
34354:
34355: yyResult = pJeannieJava$Expression(yyStart);
34356: yyError = yyResult.select(yyError);
34357: if (yyResult.hasValue()) {
34358: yyValue = yyResult.semanticValue();
34359:
34360: return yyResult.createValue(yyValue, yyError);
34361: }
34362:
34363: // Done.
34364: return yyError;
34365: }
34366:
34367: // =========================================================================
34368:
34369: /**
34370: * Parse nonterminal xtc.lang.jeannie.JeannieJava.Arguments.
34371: *
34372: * @param yyStart The index.
34373: * @return The result.
34374: * @throws IOException Signals an I/O error.
34375: */
34376: private Result pJeannieJava$Arguments(final int yyStart)
34377: throws IOException {
34378:
34379: Result yyResult;
34380: int yyBase;
34381: int yyRepetition1;
34382: Pair<Node> yyRepValue1;
34383: Node yyValue;
34384: ParseError yyError = ParseError.DUMMY;
34385:
34386: // Alternative 1.
34387:
34388: yyResult = pSymbol(yyStart);
34389: yyError = yyResult.select(yyError);
34390: if (yyResult.hasValue("(")) {
34391:
34392: final int yyChoice1 = yyResult.index;
34393:
34394: // Nested alternative 1.
34395:
34396: yyResult = pJeannieJava$Expression(yyChoice1);
34397: yyError = yyResult.select(yyError);
34398: if (yyResult.hasValue()) {
34399: final Node v$g$1 = yyResult.semanticValue();
34400:
34401: yyRepetition1 = yyResult.index;
34402: yyRepValue1 = Pair.empty();
34403: while (true) {
34404:
34405: yyBase = yyRepetition1;
34406: yyResult = pSymbol(yyBase);
34407: yyError = yyResult.select(yyError);
34408: if (yyResult.hasValue(",")) {
34409:
34410: yyResult = pJeannieJava$Expression(yyResult.index);
34411: yyError = yyResult.select(yyError);
34412: if (yyResult.hasValue()) {
34413: final Node v$el$1 = yyResult
34414: .semanticValue();
34415:
34416: yyRepetition1 = yyResult.index;
34417: yyRepValue1 = new Pair<Node>(v$el$1,
34418: yyRepValue1);
34419: continue;
34420: }
34421: } else {
34422: yyError = yyError.select("\",\" expected",
34423: yyBase);
34424: }
34425: break;
34426: }
34427: { // Start scope for v$g$2.
34428: final Pair<Node> v$g$2 = yyRepValue1.reverse();
34429:
34430: yyBase = yyRepetition1;
34431: yyResult = pSymbol(yyBase);
34432: yyError = yyResult.select(yyError);
34433: if (yyResult.hasValue(")")) {
34434:
34435: yyValue = GNode.createFromPair("Arguments",
34436: v$g$1, v$g$2);
34437: yyValue.setLocation(location(yyStart));
34438:
34439: return yyResult.createValue(yyValue, yyError);
34440: } else {
34441: yyError = yyError.select("\")\" expected",
34442: yyBase);
34443: }
34444: } // End scope for v$g$2.
34445: }
34446:
34447: // Nested alternative 2.
34448:
34449: yyBase = yyChoice1;
34450: yyResult = pSymbol(yyBase);
34451: yyError = yyResult.select(yyError);
34452: if (yyResult.hasValue(")")) {
34453:
34454: yyValue = GNode.create("Arguments", false);
34455: yyValue.setLocation(location(yyStart));
34456:
34457: return yyResult.createValue(yyValue, yyError);
34458: } else {
34459: yyError = yyError.select("\")\" expected", yyBase);
34460: }
34461: }
34462:
34463: // Done.
34464: yyError = yyError.select("arguments expected", yyStart);
34465: return yyError;
34466: }
34467:
34468: // =========================================================================
34469:
34470: /**
34471: * Parse synthetic nonterminal xtc.lang.jeannie.Debugger.$$Shared26.
34472: * This nonterminal represents the duplicate productions
34473: * xtc.lang.jeannie.JeannieJava.CInJava
34474: * and xtc.lang.jeannie.DebuggerJava.CInJava.
34475: *
34476: * @param yyStart The index.
34477: * @return The result.
34478: * @throws IOException Signals an I/O error.
34479: */
34480: private Result p$$Shared26(final int yyStart) throws IOException {
34481: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
34482: if (null == yyColumn.chunk12)
34483: yyColumn.chunk12 = new Chunk12();
34484: if (null == yyColumn.chunk12.f$$Shared26)
34485: yyColumn.chunk12.f$$Shared26 = p$$Shared26$1(yyStart);
34486: return yyColumn.chunk12.f$$Shared26;
34487: }
34488:
34489: /** Actually parse xtc.lang.jeannie.Debugger.$$Shared26. */
34490: private Result p$$Shared26$1(final int yyStart) throws IOException {
34491: int yyC;
34492: int yyIndex;
34493: Result yyResult;
34494: int yyBase;
34495: Void yyValue;
34496: ParseError yyError = ParseError.DUMMY;
34497:
34498: // Alternative 1.
34499:
34500: yyResult = pSymbol(yyStart);
34501: yyError = yyResult.select(yyError);
34502: if (yyResult.hasValue("`")) {
34503:
34504: final int yyChoice1 = yyResult.index;
34505:
34506: // Nested alternative 1.
34507:
34508: yyBase = yyChoice1;
34509: yyResult = pSymbol(yyBase);
34510: yyError = yyResult.select(yyError);
34511: if (yyResult.hasValue(".")) {
34512:
34513: yyBase = yyResult.index;
34514: yyC = character(yyBase);
34515: if ('C' == yyC) {
34516: yyIndex = yyResult.index + 1;
34517:
34518: yyResult = pSpacing(yyIndex);
34519: yyError = yyResult.select(yyError);
34520: if (yyResult.hasValue()) {
34521:
34522: yyValue = null;
34523:
34524: return yyResult.createValue(yyValue, yyError);
34525: }
34526: } else {
34527: yyError = yyError.select("\"C\" expected", yyBase);
34528: }
34529: } else {
34530: yyError = yyError.select("\".\" expected", yyBase);
34531: }
34532:
34533: // Nested alternative 2.
34534:
34535: yyValue = null;
34536:
34537: return new SemanticValue(yyValue, yyChoice1, yyError);
34538: }
34539:
34540: // Done.
34541: yyError = yyError.select(" expected", yyStart);
34542: return yyError;
34543: }
34544:
34545: // =========================================================================
34546:
34547: /**
34548: * Parse nonterminal xtc.lang.jeannie.JeannieJava.JavaInJavaBlock.
34549: *
34550: * @param yyStart The index.
34551: * @return The result.
34552: * @throws IOException Signals an I/O error.
34553: */
34554: private Result pJeannieJava$JavaInJavaBlock(final int yyStart)
34555: throws IOException {
34556:
34557: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
34558: if (null == yyColumn.chunk12)
34559: yyColumn.chunk12 = new Chunk12();
34560: if (null == yyColumn.chunk12.fJeannieJava$JavaInJavaBlock)
34561: yyColumn.chunk12.fJeannieJava$JavaInJavaBlock = pJeannieJava$JavaInJavaBlock$1(yyStart);
34562: return yyColumn.chunk12.fJeannieJava$JavaInJavaBlock;
34563: }
34564:
34565: /** Actually parse xtc.lang.jeannie.JeannieJava.JavaInJavaBlock. */
34566: private Result pJeannieJava$JavaInJavaBlock$1(final int yyStart)
34567: throws IOException {
34568:
34569: Result yyResult;
34570: int yyBase;
34571: Node yyValue;
34572: ParseError yyError = ParseError.DUMMY;
34573:
34574: // Alternative 1.
34575:
34576: yyResult = pSymbol(yyStart);
34577: yyError = yyResult.select(yyError);
34578: if (yyResult.hasValue("{")) {
34579:
34580: yyResult = pJeannieJava$JavaInJavaBlock$$Star1(yyResult.index);
34581: yyError = yyResult.select(yyError);
34582: if (yyResult.hasValue()) {
34583: final Pair<Node> v$g$1 = yyResult.semanticValue();
34584:
34585: yyBase = yyResult.index;
34586: yyResult = pSymbol(yyBase);
34587: yyError = yyResult.select(yyError);
34588: if (yyResult.hasValue("}")) {
34589:
34590: yyValue = GNode.createFromPair("JavaInJavaBlock",
34591: v$g$1);
34592: yyValue.setLocation(location(yyStart));
34593:
34594: return yyResult.createValue(yyValue, yyError);
34595: } else {
34596: yyError = yyError.select("\"}\" expected", yyBase);
34597: }
34598: }
34599: }
34600:
34601: // Done.
34602: yyError = yyError
34603: .select("java in java block expected", yyStart);
34604: return yyError;
34605: }
34606:
34607: // =========================================================================
34608:
34609: /**
34610: * Parse synthetic nonterminal JeannieJava.JavaInJavaBlock$$Star1.
34611: *
34612: * @param yyStart The index.
34613: * @return The result.
34614: * @throws IOException Signals an I/O error.
34615: */
34616: private Result pJeannieJava$JavaInJavaBlock$$Star1(final int yyStart)
34617: throws IOException {
34618:
34619: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
34620: if (null == yyColumn.chunk12)
34621: yyColumn.chunk12 = new Chunk12();
34622: if (null == yyColumn.chunk12.fJeannieJava$JavaInJavaBlock$$Star1)
34623: yyColumn.chunk12.fJeannieJava$JavaInJavaBlock$$Star1 = pJeannieJava$JavaInJavaBlock$$Star1$1(yyStart);
34624: return yyColumn.chunk12.fJeannieJava$JavaInJavaBlock$$Star1;
34625: }
34626:
34627: /** Actually parse JeannieJava.JavaInJavaBlock$$Star1. */
34628: private Result pJeannieJava$JavaInJavaBlock$$Star1$1(
34629: final int yyStart) throws IOException {
34630:
34631: Result yyResult;
34632: Pair<Node> yyValue;
34633: ParseError yyError = ParseError.DUMMY;
34634:
34635: // Alternative 1.
34636:
34637: yyResult = pJeannieJava$DeclarationOrStatement(yyStart);
34638: yyError = yyResult.select(yyError);
34639: if (yyResult.hasValue()) {
34640: final Node v$el$1 = yyResult.semanticValue();
34641:
34642: yyResult = pJeannieJava$JavaInJavaBlock$$Star1(yyResult.index);
34643: yyError = yyResult.select(yyError);
34644: if (yyResult.hasValue()) {
34645: final Pair<Node> v$2 = yyResult.semanticValue();
34646:
34647: yyValue = new Pair<Node>(v$el$1, v$2);
34648:
34649: return yyResult.createValue(yyValue, yyError);
34650: }
34651: }
34652:
34653: // Alternative 2.
34654:
34655: yyValue = Pair.empty();
34656:
34657: return new SemanticValue(yyValue, yyStart, yyError);
34658: }
34659:
34660: // =========================================================================
34661:
34662: /**
34663: * Parse nonterminal xtc.lang.jeannie.JeannieJava.CInJavaBlock.
34664: *
34665: * @param yyStart The index.
34666: * @return The result.
34667: * @throws IOException Signals an I/O error.
34668: */
34669: private Result pJeannieJava$CInJavaBlock(final int yyStart)
34670: throws IOException {
34671:
34672: Result yyResult;
34673: Node yyValue;
34674: ParseError yyError = ParseError.DUMMY;
34675:
34676: // Alternative 1.
34677:
34678: yyResult = p$$Shared26(yyStart);
34679: yyError = yyResult.select(yyError);
34680: if (yyResult.hasValue()) {
34681:
34682: yyResult = pJeannieC$CInCBlock(yyResult.index);
34683: yyError = yyResult.select(yyError);
34684: if (yyResult.hasValue()) {
34685: final Node v$g$1 = yyResult.semanticValue();
34686:
34687: yyValue = GNode.create("CInJavaBlock", v$g$1);
34688: yyValue.setLocation(location(yyStart));
34689:
34690: return yyResult.createValue(yyValue, yyError);
34691: }
34692: }
34693:
34694: // Done.
34695: return yyError;
34696: }
34697:
34698: // =========================================================================
34699:
34700: /**
34701: * Parse nonterminal xtc.lang.jeannie.JeannieJava.CInJavaExpression.
34702: *
34703: * @param yyStart The index.
34704: * @return The result.
34705: * @throws IOException Signals an I/O error.
34706: */
34707: private Result pJeannieJava$CInJavaExpression(final int yyStart)
34708: throws IOException {
34709:
34710: Result yyResult;
34711: Node yyValue;
34712: ParseError yyError = ParseError.DUMMY;
34713:
34714: // Alternative 1.
34715:
34716: yyResult = p$$Shared26(yyStart);
34717: yyError = yyResult.select(yyError);
34718: if (yyResult.hasValue()) {
34719:
34720: yyResult = pJeannieC$UnaryExpression(yyResult.index);
34721: yyError = yyResult.select(yyError);
34722: if (yyResult.hasValue()) {
34723: final Node v$g$1 = yyResult.semanticValue();
34724:
34725: yyValue = GNode.create("CInJavaExpression", v$g$1);
34726: yyValue.setLocation(location(yyStart));
34727:
34728: return yyResult.createValue(yyValue, yyError);
34729: }
34730: }
34731:
34732: // Done.
34733: return yyError;
34734: }
34735:
34736: // =========================================================================
34737:
34738: /**
34739: * Parse nonterminal xtc.lang.jeannie.DebuggerJava.Modifiers.
34740: *
34741: * @param yyStart The index.
34742: * @return The result.
34743: * @throws IOException Signals an I/O error.
34744: */
34745: private Result pDebuggerJava$Modifiers(final int yyStart)
34746: throws IOException {
34747:
34748: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
34749: if (null == yyColumn.chunk12)
34750: yyColumn.chunk12 = new Chunk12();
34751: if (null == yyColumn.chunk12.fDebuggerJava$Modifiers)
34752: yyColumn.chunk12.fDebuggerJava$Modifiers = pDebuggerJava$Modifiers$1(yyStart);
34753: return yyColumn.chunk12.fDebuggerJava$Modifiers;
34754: }
34755:
34756: /** Actually parse xtc.lang.jeannie.DebuggerJava.Modifiers. */
34757: private Result pDebuggerJava$Modifiers$1(final int yyStart)
34758: throws IOException {
34759:
34760: Result yyResult;
34761: Node yyValue;
34762: ParseError yyError = ParseError.DUMMY;
34763:
34764: // Alternative 1.
34765:
34766: yyResult = pDebuggerJava$ModifierList(yyStart);
34767: yyError = yyResult.select(yyError);
34768: if (yyResult.hasValue()) {
34769: final Pair<Node> v$g$1 = yyResult.semanticValue();
34770:
34771: yyValue = GNode.createFromPair("Modifiers", v$g$1);
34772: yyValue.setLocation(location(yyStart));
34773:
34774: return yyResult.createValue(yyValue, yyError);
34775: }
34776:
34777: // Done.
34778: return yyError;
34779: }
34780:
34781: // =========================================================================
34782:
34783: /**
34784: * Parse nonterminal xtc.lang.jeannie.DebuggerJava.ModifierList.
34785: *
34786: * @param yyStart The index.
34787: * @return The result.
34788: * @throws IOException Signals an I/O error.
34789: */
34790: private Result pDebuggerJava$ModifierList(final int yyStart)
34791: throws IOException {
34792:
34793: Result yyResult;
34794: int yyRepetition1;
34795: Pair<Node> yyRepValue1;
34796: Pair<Node> yyValue;
34797: ParseError yyError = ParseError.DUMMY;
34798:
34799: // Alternative 1.
34800:
34801: yyRepetition1 = yyStart;
34802: yyRepValue1 = Pair.empty();
34803: while (true) {
34804:
34805: yyResult = pDebuggerJava$Modifier(yyRepetition1);
34806: yyError = yyResult.select(yyError);
34807: if (yyResult.hasValue()) {
34808: final Node v$el$1 = yyResult.semanticValue();
34809:
34810: yyRepetition1 = yyResult.index;
34811: yyRepValue1 = new Pair<Node>(v$el$1, yyRepValue1);
34812: continue;
34813: }
34814: break;
34815: }
34816: { // Start scope for yyValue.
34817: yyValue = yyRepValue1.reverse();
34818:
34819: return new SemanticValue(yyValue, yyRepetition1, yyError);
34820: } // End scope for yyValue.
34821: }
34822:
34823: // =========================================================================
34824:
34825: /**
34826: * Parse nonterminal xtc.lang.jeannie.DebuggerJava.Modifier.
34827: *
34828: * @param yyStart The index.
34829: * @return The result.
34830: * @throws IOException Signals an I/O error.
34831: */
34832: private Result pDebuggerJava$Modifier(final int yyStart)
34833: throws IOException {
34834:
34835: Result yyResult;
34836: Node yyValue;
34837: ParseError yyError = ParseError.DUMMY;
34838:
34839: // Alternative <Public>.
34840:
34841: yyResult = pJavaIdentifier$Word(yyStart);
34842: yyError = yyResult.select(yyError);
34843: if (yyResult.hasValue("public")) {
34844: final String v$g$1 = "public";
34845:
34846: yyValue = GNode.create("Modifier", v$g$1);
34847: yyValue.setLocation(location(yyStart));
34848:
34849: return yyResult.createValue(yyValue, yyError);
34850: }
34851:
34852: // Alternative <Protected>.
34853:
34854: yyResult = pJavaIdentifier$Word(yyStart);
34855: yyError = yyResult.select(yyError);
34856: if (yyResult.hasValue("protected")) {
34857: final String v$g$2 = "protected";
34858:
34859: yyValue = GNode.create("Modifier", v$g$2);
34860: yyValue.setLocation(location(yyStart));
34861:
34862: return yyResult.createValue(yyValue, yyError);
34863: }
34864:
34865: // Alternative <Private>.
34866:
34867: yyResult = pJavaIdentifier$Word(yyStart);
34868: yyError = yyResult.select(yyError);
34869: if (yyResult.hasValue("private")) {
34870: final String v$g$3 = "private";
34871:
34872: yyValue = GNode.create("Modifier", v$g$3);
34873: yyValue.setLocation(location(yyStart));
34874:
34875: return yyResult.createValue(yyValue, yyError);
34876: }
34877:
34878: // Alternative <Static>.
34879:
34880: yyResult = pJavaIdentifier$Word(yyStart);
34881: yyError = yyResult.select(yyError);
34882: if (yyResult.hasValue("static")) {
34883: final String v$g$4 = "static";
34884:
34885: yyValue = GNode.create("Modifier", v$g$4);
34886: yyValue.setLocation(location(yyStart));
34887:
34888: return yyResult.createValue(yyValue, yyError);
34889: }
34890:
34891: // Alternative <Abstract>.
34892:
34893: yyResult = pJavaIdentifier$Word(yyStart);
34894: yyError = yyResult.select(yyError);
34895: if (yyResult.hasValue("abstract")) {
34896: final String v$g$5 = "abstract";
34897:
34898: yyValue = GNode.create("Modifier", v$g$5);
34899: yyValue.setLocation(location(yyStart));
34900:
34901: return yyResult.createValue(yyValue, yyError);
34902: }
34903:
34904: // Alternative <Final>.
34905:
34906: yyResult = pJavaIdentifier$Word(yyStart);
34907: yyError = yyResult.select(yyError);
34908: if (yyResult.hasValue("final")) {
34909: final String v$g$6 = "final";
34910:
34911: yyValue = GNode.create("Modifier", v$g$6);
34912: yyValue.setLocation(location(yyStart));
34913:
34914: return yyResult.createValue(yyValue, yyError);
34915: }
34916:
34917: // Alternative <Native>.
34918:
34919: yyResult = pJavaIdentifier$Word(yyStart);
34920: yyError = yyResult.select(yyError);
34921: if (yyResult.hasValue("native")) {
34922: final String v$g$7 = "native";
34923:
34924: yyValue = GNode.create("Modifier", v$g$7);
34925: yyValue.setLocation(location(yyStart));
34926:
34927: return yyResult.createValue(yyValue, yyError);
34928: }
34929:
34930: // Alternative <Synchronized>.
34931:
34932: yyResult = pJavaIdentifier$Word(yyStart);
34933: yyError = yyResult.select(yyError);
34934: if (yyResult.hasValue("synchronized")) {
34935: final String v$g$8 = "synchronized";
34936:
34937: yyValue = GNode.create("Modifier", v$g$8);
34938: yyValue.setLocation(location(yyStart));
34939:
34940: return yyResult.createValue(yyValue, yyError);
34941: }
34942:
34943: // Alternative <Transient>.
34944:
34945: yyResult = pJavaIdentifier$Word(yyStart);
34946: yyError = yyResult.select(yyError);
34947: if (yyResult.hasValue("transient")) {
34948: final String v$g$9 = "transient";
34949:
34950: yyValue = GNode.create("Modifier", v$g$9);
34951: yyValue.setLocation(location(yyStart));
34952:
34953: return yyResult.createValue(yyValue, yyError);
34954: }
34955:
34956: // Alternative <Volatile>.
34957:
34958: yyResult = pJavaIdentifier$Word(yyStart);
34959: yyError = yyResult.select(yyError);
34960: if (yyResult.hasValue("volatile")) {
34961: final String v$g$10 = "volatile";
34962:
34963: yyValue = GNode.create("Modifier", v$g$10);
34964: yyValue.setLocation(location(yyStart));
34965:
34966: return yyResult.createValue(yyValue, yyError);
34967: }
34968:
34969: // Alternative <Strictfp>.
34970:
34971: yyResult = pJavaIdentifier$Word(yyStart);
34972: yyError = yyResult.select(yyError);
34973: if (yyResult.hasValue("strictfp")) {
34974: final String v$g$11 = "strictfp";
34975:
34976: yyValue = GNode.create("Modifier", v$g$11);
34977: yyValue.setLocation(location(yyStart));
34978:
34979: return yyResult.createValue(yyValue, yyError);
34980: }
34981:
34982: // Done.
34983: yyError = yyError.select("modifier expected", yyStart);
34984: return yyError;
34985: }
34986:
34987: // =========================================================================
34988:
34989: /**
34990: * Parse nonterminal xtc.lang.jeannie.DebuggerJava.FormalParameter.
34991: *
34992: * @param yyStart The index.
34993: * @return The result.
34994: * @throws IOException Signals an I/O error.
34995: */
34996: private Result pDebuggerJava$FormalParameter(final int yyStart)
34997: throws IOException {
34998:
34999: Result yyResult;
35000: int yyOption1;
35001: Node yyOpValue1;
35002: Node yyValue;
35003: ParseError yyError = ParseError.DUMMY;
35004:
35005: // Alternative <Parameter>.
35006:
35007: yyResult = pDebuggerJava$VariableModifiers(yyStart);
35008: yyError = yyResult.select(yyError);
35009: if (yyResult.hasValue()) {
35010: final Node v$g$1 = yyResult.semanticValue();
35011:
35012: yyResult = pType(yyResult.index);
35013: yyError = yyResult.select(yyError);
35014: if (yyResult.hasValue()) {
35015: final Node v$g$2 = yyResult.semanticValue();
35016:
35017: yyResult = pJavaIdentifier$Identifier(yyResult.index);
35018: yyError = yyResult.select(yyError);
35019: if (yyResult.hasValue()) {
35020: final String v$g$4 = yyResult.semanticValue();
35021:
35022: yyOption1 = yyResult.index;
35023: yyOpValue1 = null;
35024:
35025: yyResult = pDimensions(yyOption1);
35026: yyError = yyResult.select(yyError);
35027: if (yyResult.hasValue()) {
35028: final Node v$el$1 = yyResult.semanticValue();
35029:
35030: yyOption1 = yyResult.index;
35031: yyOpValue1 = v$el$1;
35032: }
35033: { // Start scope for v$g$5.
35034: final Node v$g$5 = yyOpValue1;
35035:
35036: yyValue = GNode.create("FormalParameter",
35037: v$g$1, v$g$2, null, v$g$4, v$g$5);
35038: yyValue.setLocation(location(yyStart));
35039:
35040: return new SemanticValue(yyValue, yyOption1,
35041: yyError);
35042: } // End scope for v$g$5.
35043: }
35044: }
35045: }
35046:
35047: // Done.
35048: return yyError;
35049: }
35050:
35051: // =========================================================================
35052:
35053: /**
35054: * Parse nonterminal xtc.lang.jeannie.DebuggerJava.VariableModifiers.
35055: *
35056: * @param yyStart The index.
35057: * @return The result.
35058: * @throws IOException Signals an I/O error.
35059: */
35060: private Result pDebuggerJava$VariableModifiers(final int yyStart)
35061: throws IOException {
35062:
35063: Result yyResult;
35064: Node yyValue;
35065: ParseError yyError = ParseError.DUMMY;
35066:
35067: // Alternative <Final>.
35068:
35069: yyResult = pDebuggerJava$FinalModifier(yyStart);
35070: yyError = yyResult.select(yyError);
35071: if (yyResult.hasValue()) {
35072: final Node v$g$1 = yyResult.semanticValue();
35073:
35074: yyValue = GNode.create("Modifiers", v$g$1);
35075: yyValue.setLocation(location(yyStart));
35076:
35077: return yyResult.createValue(yyValue, yyError);
35078: }
35079:
35080: // Alternative <Nonfinal>.
35081:
35082: yyValue = GNode.create("Modifiers", false);
35083: yyValue.setLocation(location(yyStart));
35084:
35085: return new SemanticValue(yyValue, yyStart, yyError);
35086: }
35087:
35088: // =========================================================================
35089:
35090: /**
35091: * Parse nonterminal xtc.lang.jeannie.DebuggerJava.FinalModifier.
35092: *
35093: * @param yyStart The index.
35094: * @return The result.
35095: * @throws IOException Signals an I/O error.
35096: */
35097: private Result pDebuggerJava$FinalModifier(final int yyStart)
35098: throws IOException {
35099:
35100: Result yyResult;
35101: Node yyValue;
35102: ParseError yyError = ParseError.DUMMY;
35103:
35104: // Alternative 1.
35105:
35106: yyResult = pJavaIdentifier$Word(yyStart);
35107: yyError = yyResult.select(yyError);
35108: if (yyResult.hasValue("final")) {
35109: final String v$g$1 = "final";
35110:
35111: yyValue = GNode.create("Modifier", v$g$1);
35112: yyValue.setLocation(location(yyStart));
35113:
35114: return yyResult.createValue(yyValue, yyError);
35115: }
35116:
35117: // Done.
35118: yyError = yyError.select("final modifier expected", yyStart);
35119: return yyError;
35120: }
35121:
35122: // =========================================================================
35123:
35124: /**
35125: * Parse nonterminal xtc.lang.jeannie.DebuggerJava.FormalParameters.
35126: *
35127: * @param yyStart The index.
35128: * @return The result.
35129: * @throws IOException Signals an I/O error.
35130: */
35131: private Result pDebuggerJava$FormalParameters(final int yyStart)
35132: throws IOException {
35133:
35134: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
35135: if (null == yyColumn.chunk12)
35136: yyColumn.chunk12 = new Chunk12();
35137: if (null == yyColumn.chunk12.fDebuggerJava$FormalParameters)
35138: yyColumn.chunk12.fDebuggerJava$FormalParameters = pDebuggerJava$FormalParameters$1(yyStart);
35139: return yyColumn.chunk12.fDebuggerJava$FormalParameters;
35140: }
35141:
35142: /** Actually parse xtc.lang.jeannie.DebuggerJava.FormalParameters. */
35143: private Result pDebuggerJava$FormalParameters$1(final int yyStart)
35144: throws IOException {
35145:
35146: Result yyResult;
35147: int yyBase;
35148: Node yyValue;
35149: ParseError yyError = ParseError.DUMMY;
35150:
35151: // Alternative 1.
35152:
35153: yyResult = pSymbol(yyStart);
35154: yyError = yyResult.select(yyError);
35155: if (yyResult.hasValue("(")) {
35156:
35157: final int yyChoice1 = yyResult.index;
35158:
35159: // Nested alternative 1.
35160:
35161: yyResult = pDebuggerJava$FormalParameter(yyChoice1);
35162: yyError = yyResult.select(yyError);
35163: if (yyResult.hasValue()) {
35164: final Node v$g$1 = yyResult.semanticValue();
35165:
35166: yyResult = pDebuggerJava$FormalParameters$$Star1(yyResult.index);
35167: yyError = yyResult.select(yyError);
35168: if (yyResult.hasValue()) {
35169: final Pair<Node> v$g$2 = yyResult.semanticValue();
35170:
35171: yyBase = yyResult.index;
35172: yyResult = pSymbol(yyBase);
35173: yyError = yyResult.select(yyError);
35174: if (yyResult.hasValue(")")) {
35175:
35176: yyValue = GNode.createFromPair(
35177: "FormalParameters", v$g$1, v$g$2);
35178: yyValue.setLocation(location(yyStart));
35179:
35180: return yyResult.createValue(yyValue, yyError);
35181: } else {
35182: yyError = yyError.select("\")\" expected",
35183: yyBase);
35184: }
35185: }
35186: }
35187:
35188: // Nested alternative 2.
35189:
35190: yyBase = yyChoice1;
35191: yyResult = pSymbol(yyBase);
35192: yyError = yyResult.select(yyError);
35193: if (yyResult.hasValue(")")) {
35194:
35195: yyValue = GNode.create("FormalParameters", false);
35196: yyValue.setLocation(location(yyStart));
35197:
35198: return yyResult.createValue(yyValue, yyError);
35199: } else {
35200: yyError = yyError.select("\")\" expected", yyBase);
35201: }
35202: }
35203:
35204: // Done.
35205: yyError = yyError.select("formal parameters expected", yyStart);
35206: return yyError;
35207: }
35208:
35209: // =========================================================================
35210:
35211: /**
35212: * Parse synthetic nonterminal DebuggerJava.FormalParameters$$Star1.
35213: *
35214: * @param yyStart The index.
35215: * @return The result.
35216: * @throws IOException Signals an I/O error.
35217: */
35218: private Result pDebuggerJava$FormalParameters$$Star1(
35219: final int yyStart) throws IOException {
35220:
35221: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
35222: if (null == yyColumn.chunk12)
35223: yyColumn.chunk12 = new Chunk12();
35224: if (null == yyColumn.chunk12.fDebuggerJava$FormalParameters$$Star1)
35225: yyColumn.chunk12.fDebuggerJava$FormalParameters$$Star1 = pDebuggerJava$FormalParameters$$Star1$1(yyStart);
35226: return yyColumn.chunk12.fDebuggerJava$FormalParameters$$Star1;
35227: }
35228:
35229: /** Actually parse DebuggerJava.FormalParameters$$Star1. */
35230: private Result pDebuggerJava$FormalParameters$$Star1$1(
35231: final int yyStart) throws IOException {
35232:
35233: Result yyResult;
35234: Pair<Node> yyValue;
35235: ParseError yyError = ParseError.DUMMY;
35236:
35237: // Alternative 1.
35238:
35239: yyResult = pSymbol(yyStart);
35240: yyError = yyResult.select(yyError);
35241: if (yyResult.hasValue(",")) {
35242:
35243: yyResult = pDebuggerJava$FormalParameter(yyResult.index);
35244: yyError = yyResult.select(yyError);
35245: if (yyResult.hasValue()) {
35246: final Node v$el$1 = yyResult.semanticValue();
35247:
35248: yyResult = pDebuggerJava$FormalParameters$$Star1(yyResult.index);
35249: yyError = yyResult.select(yyError);
35250: if (yyResult.hasValue()) {
35251: final Pair<Node> v$2 = yyResult.semanticValue();
35252:
35253: yyValue = new Pair<Node>(v$el$1, v$2);
35254:
35255: return yyResult.createValue(yyValue, yyError);
35256: }
35257: }
35258: }
35259:
35260: // Alternative 2.
35261:
35262: yyValue = Pair.empty();
35263:
35264: return new SemanticValue(yyValue, yyStart, yyError);
35265: }
35266:
35267: // =========================================================================
35268:
35269: /**
35270: * Parse nonterminal xtc.lang.jeannie.DebuggerJava.Declarator.
35271: *
35272: * @param yyStart The index.
35273: * @return The result.
35274: * @throws IOException Signals an I/O error.
35275: */
35276: private Result pDebuggerJava$Declarator(final int yyStart)
35277: throws IOException {
35278:
35279: Result yyResult;
35280: int yyBase;
35281: int yyOption1;
35282: Node yyOpValue1;
35283: Node yyValue;
35284: ParseError yyError = ParseError.DUMMY;
35285:
35286: // Alternative <Declarator>.
35287:
35288: yyResult = pJavaIdentifier$Identifier(yyStart);
35289: yyError = yyResult.select(yyError);
35290: if (yyResult.hasValue()) {
35291: final String v$g$1 = yyResult.semanticValue();
35292:
35293: yyOption1 = yyResult.index;
35294: yyOpValue1 = null;
35295:
35296: yyResult = pDimensions(yyOption1);
35297: yyError = yyResult.select(yyError);
35298: if (yyResult.hasValue()) {
35299: final Node v$el$1 = yyResult.semanticValue();
35300:
35301: yyOption1 = yyResult.index;
35302: yyOpValue1 = v$el$1;
35303: }
35304: { // Start scope for v$g$2.
35305: final Node v$g$2 = yyOpValue1;
35306:
35307: yyOpValue1 = null;
35308:
35309: yyBase = yyOption1;
35310: yyResult = pSymbol(yyBase);
35311: yyError = yyResult.select(yyError);
35312: if (yyResult.hasValue("=")) {
35313:
35314: yyResult = pDebuggerJava$VariableInitializer(yyResult.index);
35315: yyError = yyResult.select(yyError);
35316: if (yyResult.hasValue()) {
35317: final Node v$el$2 = yyResult.semanticValue();
35318:
35319: yyOption1 = yyResult.index;
35320: yyOpValue1 = v$el$2;
35321: }
35322: } else {
35323: yyError = yyError.select("\"=\" expected", yyBase);
35324: }
35325: { // Start scope for v$g$3.
35326: final Node v$g$3 = yyOpValue1;
35327:
35328: yyValue = GNode.create("Declarator", v$g$1, v$g$2,
35329: v$g$3);
35330: yyValue.setLocation(location(yyStart));
35331:
35332: return new SemanticValue(yyValue, yyOption1,
35333: yyError);
35334: } // End scope for v$g$3.
35335: } // End scope for v$g$2.
35336: }
35337:
35338: // Done.
35339: return yyError;
35340: }
35341:
35342: // =========================================================================
35343:
35344: /**
35345: * Parse nonterminal xtc.lang.jeannie.DebuggerJava.Declarators.
35346: *
35347: * @param yyStart The index.
35348: * @return The result.
35349: * @throws IOException Signals an I/O error.
35350: */
35351: private Result pDebuggerJava$Declarators(final int yyStart)
35352: throws IOException {
35353:
35354: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
35355: if (null == yyColumn.chunk13)
35356: yyColumn.chunk13 = new Chunk13();
35357: if (null == yyColumn.chunk13.fDebuggerJava$Declarators)
35358: yyColumn.chunk13.fDebuggerJava$Declarators = pDebuggerJava$Declarators$1(yyStart);
35359: return yyColumn.chunk13.fDebuggerJava$Declarators;
35360: }
35361:
35362: /** Actually parse xtc.lang.jeannie.DebuggerJava.Declarators. */
35363: private Result pDebuggerJava$Declarators$1(final int yyStart)
35364: throws IOException {
35365:
35366: Result yyResult;
35367: Node yyValue;
35368: ParseError yyError = ParseError.DUMMY;
35369:
35370: // Alternative 1.
35371:
35372: yyResult = pDebuggerJava$Declarator(yyStart);
35373: yyError = yyResult.select(yyError);
35374: if (yyResult.hasValue()) {
35375: final Node v$g$1 = yyResult.semanticValue();
35376:
35377: yyResult = pDebuggerJava$Declarators$$Star1(yyResult.index);
35378: yyError = yyResult.select(yyError);
35379: if (yyResult.hasValue()) {
35380: final Pair<Node> v$g$2 = yyResult.semanticValue();
35381:
35382: yyValue = GNode.createFromPair("Declarators", v$g$1,
35383: v$g$2);
35384: yyValue.setLocation(location(yyStart));
35385:
35386: return yyResult.createValue(yyValue, yyError);
35387: }
35388: }
35389:
35390: // Done.
35391: return yyError;
35392: }
35393:
35394: // =========================================================================
35395:
35396: /**
35397: * Parse synthetic nonterminal DebuggerJava.Declarators$$Star1.
35398: *
35399: * @param yyStart The index.
35400: * @return The result.
35401: * @throws IOException Signals an I/O error.
35402: */
35403: private Result pDebuggerJava$Declarators$$Star1(final int yyStart)
35404: throws IOException {
35405:
35406: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
35407: if (null == yyColumn.chunk13)
35408: yyColumn.chunk13 = new Chunk13();
35409: if (null == yyColumn.chunk13.fDebuggerJava$Declarators$$Star1)
35410: yyColumn.chunk13.fDebuggerJava$Declarators$$Star1 = pDebuggerJava$Declarators$$Star1$1(yyStart);
35411: return yyColumn.chunk13.fDebuggerJava$Declarators$$Star1;
35412: }
35413:
35414: /** Actually parse DebuggerJava.Declarators$$Star1. */
35415: private Result pDebuggerJava$Declarators$$Star1$1(final int yyStart)
35416: throws IOException {
35417:
35418: Result yyResult;
35419: Pair<Node> yyValue;
35420: ParseError yyError = ParseError.DUMMY;
35421:
35422: // Alternative 1.
35423:
35424: yyResult = pSymbol(yyStart);
35425: yyError = yyResult.select(yyError);
35426: if (yyResult.hasValue(",")) {
35427:
35428: yyResult = pDebuggerJava$Declarator(yyResult.index);
35429: yyError = yyResult.select(yyError);
35430: if (yyResult.hasValue()) {
35431: final Node v$el$1 = yyResult.semanticValue();
35432:
35433: yyResult = pDebuggerJava$Declarators$$Star1(yyResult.index);
35434: yyError = yyResult.select(yyError);
35435: if (yyResult.hasValue()) {
35436: final Pair<Node> v$2 = yyResult.semanticValue();
35437:
35438: yyValue = new Pair<Node>(v$el$1, v$2);
35439:
35440: return yyResult.createValue(yyValue, yyError);
35441: }
35442: }
35443: }
35444:
35445: // Alternative 2.
35446:
35447: yyValue = Pair.empty();
35448:
35449: return new SemanticValue(yyValue, yyStart, yyError);
35450: }
35451:
35452: // =========================================================================
35453:
35454: /**
35455: * Parse nonterminal xtc.lang.jeannie.DebuggerJava.ClassBody.
35456: *
35457: * @param yyStart The index.
35458: * @return The result.
35459: * @throws IOException Signals an I/O error.
35460: */
35461: private Result pDebuggerJava$ClassBody(final int yyStart)
35462: throws IOException {
35463:
35464: Result yyResult;
35465: int yyBase;
35466: int yyRepetition1;
35467: Pair<Node> yyRepValue1;
35468: Node yyValue;
35469: ParseError yyError = ParseError.DUMMY;
35470:
35471: // Alternative <Body>.
35472:
35473: yyResult = pSymbol(yyStart);
35474: yyError = yyResult.select(yyError);
35475: if (yyResult.hasValue("{")) {
35476:
35477: yyRepetition1 = yyResult.index;
35478: yyRepValue1 = Pair.empty();
35479: while (true) {
35480:
35481: yyResult = pDebuggerJava$Declaration(yyRepetition1);
35482: yyError = yyResult.select(yyError);
35483: if (yyResult.hasValue()) {
35484: final Node v$el$1 = yyResult.semanticValue();
35485:
35486: yyRepetition1 = yyResult.index;
35487: yyRepValue1 = new Pair<Node>(v$el$1, yyRepValue1);
35488: continue;
35489: }
35490: break;
35491: }
35492: { // Start scope for v$g$1.
35493: final Pair<Node> v$g$1 = yyRepValue1.reverse();
35494:
35495: yyBase = yyRepetition1;
35496: yyResult = pSymbol(yyBase);
35497: yyError = yyResult.select(yyError);
35498: if (yyResult.hasValue("}")) {
35499:
35500: yyValue = GNode.createFromPair("ClassBody", v$g$1);
35501: yyValue.setLocation(location(yyStart));
35502:
35503: return yyResult.createValue(yyValue, yyError);
35504: } else {
35505: yyError = yyError.select("\"}\" expected", yyBase);
35506: }
35507: } // End scope for v$g$1.
35508: }
35509:
35510: // Done.
35511: yyError = yyError.select("class body expected", yyStart);
35512: return yyError;
35513: }
35514:
35515: // =========================================================================
35516:
35517: /**
35518: * Parse nonterminal xtc.lang.jeannie.DebuggerJava.Declaration.
35519: *
35520: * @param yyStart The index.
35521: * @return The result.
35522: * @throws IOException Signals an I/O error.
35523: */
35524: private Result pDebuggerJava$Declaration(final int yyStart)
35525: throws IOException {
35526:
35527: Result yyResult;
35528: int yyBase;
35529: int yyOption1;
35530: Object yyOpValue1;
35531: Node yyValue;
35532: ParseError yyError = ParseError.DUMMY;
35533:
35534: // Alternative 1.
35535:
35536: yyResult = pDebuggerJava$Modifiers(yyStart);
35537: yyError = yyResult.select(yyError);
35538: if (yyResult.hasValue()) {
35539: final Node v$g$1 = yyResult.semanticValue();
35540:
35541: final int yyChoice1 = yyResult.index;
35542:
35543: // Nested alternative 1.
35544:
35545: yyResult = pType(yyChoice1);
35546: yyError = yyResult.select(yyError);
35547: if (yyResult.hasValue()) {
35548: final Node v$g$2 = yyResult.semanticValue();
35549:
35550: yyResult = pDebuggerJava$Declarators(yyResult.index);
35551: yyError = yyResult.select(yyError);
35552: if (yyResult.hasValue()) {
35553: final Node v$g$3 = yyResult.semanticValue();
35554:
35555: yyBase = yyResult.index;
35556: yyResult = pSymbol(yyBase);
35557: yyError = yyResult.select(yyError);
35558: if (yyResult.hasValue(";")) {
35559:
35560: yyValue = GNode.create("FieldDeclaration",
35561: v$g$1, v$g$2, v$g$3);
35562: yyValue.setLocation(location(yyStart));
35563:
35564: return yyResult.createValue(yyValue, yyError);
35565: } else {
35566: yyError = yyError.select("\";\" expected",
35567: yyBase);
35568: }
35569: }
35570: }
35571:
35572: // Nested alternative 2.
35573: { // Start scope for nested choice.
35574:
35575: final int yyChoice2 = yyChoice1;
35576:
35577: // Nested alternative 1.
35578:
35579: yyResult = pResultType(yyChoice2);
35580: yyError = yyResult.select(yyError);
35581: if (yyResult.hasValue()) {
35582: final Node v$g$3 = yyResult.semanticValue();
35583:
35584: yyResult = pJavaIdentifier$Identifier(yyResult.index);
35585: yyError = yyResult.select(yyError);
35586: if (yyResult.hasValue()) {
35587: final String v$g$4 = yyResult.semanticValue();
35588:
35589: yyResult = pDebuggerJava$FormalParameters(yyResult.index);
35590: yyError = yyResult.select(yyError);
35591: if (yyResult.hasValue()) {
35592: final Node v$g$5 = yyResult.semanticValue();
35593:
35594: yyOption1 = yyResult.index;
35595: yyOpValue1 = null;
35596:
35597: yyResult = pDimensions(yyOption1);
35598: yyError = yyResult.select(yyError);
35599: if (yyResult.hasValue()) {
35600: final Node v$el$1 = yyResult
35601: .semanticValue();
35602:
35603: yyOption1 = yyResult.index;
35604: yyOpValue1 = v$el$1;
35605: }
35606: { // Start scope for v$g$6.
35607: final Node v$g$6 = cast(yyOpValue1);
35608:
35609: yyOpValue1 = null;
35610:
35611: yyResult = pDebuggerJava$ThrowsClause(yyOption1);
35612: yyError = yyResult.select(yyError);
35613: if (yyResult.hasValue()) {
35614: final Node v$el$2 = yyResult
35615: .semanticValue();
35616:
35617: yyOption1 = yyResult.index;
35618: yyOpValue1 = v$el$2;
35619: }
35620: { // Start scope for v$g$7.
35621: final Node v$g$7 = cast(yyOpValue1);
35622:
35623: final int yyChoice3 = yyOption1;
35624:
35625: // Nested alternative 1.
35626:
35627: yyResult = pDebuggerJava$Block(yyChoice3);
35628: yyError = yyResult.select(yyError);
35629: if (yyResult.hasValue()) {
35630: final Node v$g$8 = yyResult
35631: .semanticValue();
35632:
35633: yyValue = GNode.create(
35634: "MethodDeclaration",
35635: v$g$1, null, v$g$3,
35636: v$g$4, v$g$5, v$g$6,
35637: v$g$7, v$g$8);
35638: yyValue
35639: .setLocation(location(yyStart));
35640:
35641: return yyResult.createValue(
35642: yyValue, yyError);
35643: }
35644:
35645: // Nested alternative 2.
35646:
35647: yyBase = yyChoice3;
35648: yyResult = pSymbol(yyBase);
35649: yyError = yyResult.select(yyError);
35650: if (yyResult.hasValue(";")) {
35651:
35652: yyValue = GNode.create(
35653: "MethodDeclaration",
35654: v$g$1, null, v$g$3,
35655: v$g$4, v$g$5, v$g$6,
35656: v$g$7, null);
35657: yyValue
35658: .setLocation(location(yyStart));
35659:
35660: return yyResult.createValue(
35661: yyValue, yyError);
35662: } else {
35663: yyError = yyError.select(
35664: "\";\" expected",
35665: yyBase);
35666: }
35667: } // End scope for v$g$7.
35668: } // End scope for v$g$6.
35669: }
35670: }
35671: }
35672:
35673: // Nested alternative 2.
35674:
35675: yyResult = pJavaIdentifier$Identifier(yyChoice2);
35676: yyError = yyResult.select(yyError);
35677: if (yyResult.hasValue()) {
35678: final String v$g$3 = yyResult.semanticValue();
35679:
35680: yyResult = pDebuggerJava$FormalParameters(yyResult.index);
35681: yyError = yyResult.select(yyError);
35682: if (yyResult.hasValue()) {
35683: final Node v$g$4 = yyResult.semanticValue();
35684:
35685: yyOption1 = yyResult.index;
35686: yyOpValue1 = null;
35687:
35688: yyResult = pDebuggerJava$ThrowsClause(yyOption1);
35689: yyError = yyResult.select(yyError);
35690: if (yyResult.hasValue()) {
35691: final Node v$el$1 = yyResult
35692: .semanticValue();
35693:
35694: yyOption1 = yyResult.index;
35695: yyOpValue1 = v$el$1;
35696: }
35697: { // Start scope for v$g$5.
35698: final Node v$g$5 = cast(yyOpValue1);
35699:
35700: yyResult = pDebuggerJava$Block(yyOption1);
35701: yyError = yyResult.select(yyError);
35702: if (yyResult.hasValue()) {
35703: final Node v$g$6 = yyResult
35704: .semanticValue();
35705:
35706: yyValue = GNode.create(
35707: "ConstructorDeclaration",
35708: v$g$1, null, v$g$3, v$g$4,
35709: v$g$5, v$g$6);
35710: yyValue.setLocation(location(yyStart));
35711:
35712: return yyResult.createValue(yyValue,
35713: yyError);
35714: }
35715: } // End scope for v$g$5.
35716: }
35717: }
35718: } // End scope for nested choice.
35719:
35720: // Nested alternative 3.
35721:
35722: yyBase = yyChoice1;
35723: yyResult = pJavaIdentifier$Word(yyBase);
35724: yyError = yyResult.select(yyError);
35725: if (yyResult.hasValue("class")) {
35726:
35727: yyResult = pJavaIdentifier$Identifier(yyResult.index);
35728: yyError = yyResult.select(yyError);
35729: if (yyResult.hasValue()) {
35730: final String v$g$2 = yyResult.semanticValue();
35731:
35732: yyOption1 = yyResult.index;
35733: yyOpValue1 = null;
35734:
35735: yyResult = pDebuggerJava$Extension(yyOption1);
35736: yyError = yyResult.select(yyError);
35737: if (yyResult.hasValue()) {
35738: final Node v$el$1 = yyResult.semanticValue();
35739:
35740: yyOption1 = yyResult.index;
35741: yyOpValue1 = v$el$1;
35742: }
35743: { // Start scope for v$g$4.
35744: final Node v$g$4 = cast(yyOpValue1);
35745:
35746: yyOpValue1 = null;
35747:
35748: yyResult = pDebuggerJava$Implementation(yyOption1);
35749: yyError = yyResult.select(yyError);
35750: if (yyResult.hasValue()) {
35751: final Node v$el$2 = yyResult
35752: .semanticValue();
35753:
35754: yyOption1 = yyResult.index;
35755: yyOpValue1 = v$el$2;
35756: }
35757: { // Start scope for v$g$5.
35758: final Node v$g$5 = cast(yyOpValue1);
35759:
35760: yyResult = pDebuggerJava$ClassBody(yyOption1);
35761: yyError = yyResult.select(yyError);
35762: if (yyResult.hasValue()) {
35763: final Node v$g$6 = yyResult
35764: .semanticValue();
35765:
35766: yyValue = GNode.create(
35767: "ClassDeclaration", v$g$1,
35768: v$g$2, null, v$g$4, v$g$5,
35769: v$g$6);
35770: yyValue.setLocation(location(yyStart));
35771:
35772: return yyResult.createValue(yyValue,
35773: yyError);
35774: }
35775: } // End scope for v$g$5.
35776: } // End scope for v$g$4.
35777: }
35778: } else {
35779: yyError = yyError.select("\"class\" expected", yyBase);
35780: }
35781:
35782: // Nested alternative 4.
35783:
35784: yyBase = yyChoice1;
35785: yyResult = pJavaIdentifier$Word(yyBase);
35786: yyError = yyResult.select(yyError);
35787: if (yyResult.hasValue("interface")) {
35788:
35789: yyResult = pJavaIdentifier$Identifier(yyResult.index);
35790: yyError = yyResult.select(yyError);
35791: if (yyResult.hasValue()) {
35792: final String v$g$2 = yyResult.semanticValue();
35793:
35794: yyOption1 = yyResult.index;
35795: yyOpValue1 = null;
35796:
35797: yyResult = pDebuggerJava$Extension(yyOption1);
35798: yyError = yyResult.select(yyError);
35799: if (yyResult.hasValue()) {
35800: final Node v$el$1 = yyResult.semanticValue();
35801:
35802: yyOption1 = yyResult.index;
35803: yyOpValue1 = v$el$1;
35804: }
35805: { // Start scope for v$g$4.
35806: final Node v$g$4 = cast(yyOpValue1);
35807:
35808: yyResult = pDebuggerJava$ClassBody(yyOption1);
35809: yyError = yyResult.select(yyError);
35810: if (yyResult.hasValue()) {
35811: final Node v$g$5 = yyResult.semanticValue();
35812:
35813: yyValue = GNode.create(
35814: "InterfaceDeclaration", v$g$1,
35815: v$g$2, null, v$g$4, v$g$5);
35816: yyValue.setLocation(location(yyStart));
35817:
35818: return yyResult.createValue(yyValue,
35819: yyError);
35820: }
35821: } // End scope for v$g$4.
35822: }
35823: } else {
35824: yyError = yyError.select("\"interface\" expected",
35825: yyBase);
35826: }
35827: }
35828:
35829: // Alternative 2.
35830:
35831: yyOption1 = yyStart;
35832: yyOpValue1 = null;
35833:
35834: yyBase = yyOption1;
35835: yyResult = pJavaIdentifier$Word(yyBase);
35836: yyError = yyResult.select(yyError);
35837: if (yyResult.hasValue("static")) {
35838: final String v$el$1 = "static";
35839:
35840: yyOption1 = yyResult.index;
35841: yyOpValue1 = v$el$1;
35842: } else {
35843: yyError = yyError.select("\"static\" expected", yyBase);
35844: }
35845: { // Start scope for v$g$1.
35846: final String v$g$1 = cast(yyOpValue1);
35847:
35848: yyResult = pDebuggerJava$Block(yyOption1);
35849: yyError = yyResult.select(yyError);
35850: if (yyResult.hasValue()) {
35851: final Node v$g$2 = yyResult.semanticValue();
35852:
35853: yyValue = GNode
35854: .create("BlockDeclaration", v$g$1, v$g$2);
35855: yyValue.setLocation(location(yyStart));
35856:
35857: return yyResult.createValue(yyValue, yyError);
35858: }
35859: } // End scope for v$g$1.
35860:
35861: // Alternative 3.
35862:
35863: yyResult = pSymbol(yyStart);
35864: yyError = yyResult.select(yyError);
35865: if (yyResult.hasValue(";")) {
35866:
35867: yyValue = GNode.create("EmptyDeclaration", false);
35868: yyValue.setLocation(location(yyStart));
35869:
35870: return yyResult.createValue(yyValue, yyError);
35871: }
35872:
35873: // Done.
35874: yyError = yyError.select("declaration expected", yyStart);
35875: return yyError;
35876: }
35877:
35878: // =========================================================================
35879:
35880: /**
35881: * Parse nonterminal xtc.lang.jeannie.DebuggerJava.ThrowsClause.
35882: *
35883: * @param yyStart The index.
35884: * @return The result.
35885: * @throws IOException Signals an I/O error.
35886: */
35887: private Result pDebuggerJava$ThrowsClause(final int yyStart)
35888: throws IOException {
35889:
35890: Result yyResult;
35891: int yyBase;
35892: int yyRepetition1;
35893: Pair<Node> yyRepValue1;
35894: Node yyValue;
35895: ParseError yyError = ParseError.DUMMY;
35896:
35897: // Alternative 1.
35898:
35899: yyResult = pJavaIdentifier$Word(yyStart);
35900: yyError = yyResult.select(yyError);
35901: if (yyResult.hasValue("throws")) {
35902:
35903: yyResult = pQualifiedIdentifier(yyResult.index);
35904: yyError = yyResult.select(yyError);
35905: if (yyResult.hasValue()) {
35906: final Node v$g$1 = yyResult.semanticValue();
35907:
35908: yyRepetition1 = yyResult.index;
35909: yyRepValue1 = Pair.empty();
35910: while (true) {
35911:
35912: yyBase = yyRepetition1;
35913: yyResult = pSymbol(yyBase);
35914: yyError = yyResult.select(yyError);
35915: if (yyResult.hasValue(",")) {
35916:
35917: yyResult = pQualifiedIdentifier(yyResult.index);
35918: yyError = yyResult.select(yyError);
35919: if (yyResult.hasValue()) {
35920: final Node v$el$1 = yyResult
35921: .semanticValue();
35922:
35923: yyRepetition1 = yyResult.index;
35924: yyRepValue1 = new Pair<Node>(v$el$1,
35925: yyRepValue1);
35926: continue;
35927: }
35928: } else {
35929: yyError = yyError.select("\",\" expected",
35930: yyBase);
35931: }
35932: break;
35933: }
35934: { // Start scope for v$g$2.
35935: final Pair<Node> v$g$2 = yyRepValue1.reverse();
35936:
35937: yyValue = GNode.createFromPair("ThrowsClause",
35938: v$g$1, v$g$2);
35939: yyValue.setLocation(location(yyStart));
35940:
35941: return new SemanticValue(yyValue, yyRepetition1,
35942: yyError);
35943: } // End scope for v$g$2.
35944: }
35945: }
35946:
35947: // Done.
35948: yyError = yyError.select("throws clause expected", yyStart);
35949: return yyError;
35950: }
35951:
35952: // =========================================================================
35953:
35954: /**
35955: * Parse nonterminal xtc.lang.jeannie.DebuggerJava.Extension.
35956: *
35957: * @param yyStart The index.
35958: * @return The result.
35959: * @throws IOException Signals an I/O error.
35960: */
35961: private Result pDebuggerJava$Extension(final int yyStart)
35962: throws IOException {
35963:
35964: Result yyResult;
35965: int yyBase;
35966: int yyRepetition1;
35967: Pair<Node> yyRepValue1;
35968: Node yyValue;
35969: ParseError yyError = ParseError.DUMMY;
35970:
35971: // Alternative 1.
35972:
35973: yyResult = pJavaIdentifier$Word(yyStart);
35974: yyError = yyResult.select(yyError);
35975: if (yyResult.hasValue("extends")) {
35976:
35977: yyResult = pType(yyResult.index);
35978: yyError = yyResult.select(yyError);
35979: if (yyResult.hasValue()) {
35980: final Node v$g$1 = yyResult.semanticValue();
35981:
35982: yyRepetition1 = yyResult.index;
35983: yyRepValue1 = Pair.empty();
35984: while (true) {
35985:
35986: yyBase = yyRepetition1;
35987: yyResult = pSymbol(yyBase);
35988: yyError = yyResult.select(yyError);
35989: if (yyResult.hasValue(",")) {
35990:
35991: yyResult = pType(yyResult.index);
35992: yyError = yyResult.select(yyError);
35993: if (yyResult.hasValue()) {
35994: final Node v$el$1 = yyResult
35995: .semanticValue();
35996:
35997: yyRepetition1 = yyResult.index;
35998: yyRepValue1 = new Pair<Node>(v$el$1,
35999: yyRepValue1);
36000: continue;
36001: }
36002: } else {
36003: yyError = yyError.select("\",\" expected",
36004: yyBase);
36005: }
36006: break;
36007: }
36008: { // Start scope for v$g$2.
36009: final Pair<Node> v$g$2 = yyRepValue1.reverse();
36010:
36011: yyValue = GNode.createFromPair("Extension", v$g$1,
36012: v$g$2);
36013: yyValue.setLocation(location(yyStart));
36014:
36015: return new SemanticValue(yyValue, yyRepetition1,
36016: yyError);
36017: } // End scope for v$g$2.
36018: }
36019: }
36020:
36021: // Done.
36022: yyError = yyError.select("extension expected", yyStart);
36023: return yyError;
36024: }
36025:
36026: // =========================================================================
36027:
36028: /**
36029: * Parse nonterminal xtc.lang.jeannie.DebuggerJava.Implementation.
36030: *
36031: * @param yyStart The index.
36032: * @return The result.
36033: * @throws IOException Signals an I/O error.
36034: */
36035: private Result pDebuggerJava$Implementation(final int yyStart)
36036: throws IOException {
36037:
36038: Result yyResult;
36039: int yyBase;
36040: int yyRepetition1;
36041: Pair<Node> yyRepValue1;
36042: Node yyValue;
36043: ParseError yyError = ParseError.DUMMY;
36044:
36045: // Alternative 1.
36046:
36047: yyResult = pJavaIdentifier$Word(yyStart);
36048: yyError = yyResult.select(yyError);
36049: if (yyResult.hasValue("implements")) {
36050:
36051: yyResult = pType(yyResult.index);
36052: yyError = yyResult.select(yyError);
36053: if (yyResult.hasValue()) {
36054: final Node v$g$1 = yyResult.semanticValue();
36055:
36056: yyRepetition1 = yyResult.index;
36057: yyRepValue1 = Pair.empty();
36058: while (true) {
36059:
36060: yyBase = yyRepetition1;
36061: yyResult = pSymbol(yyBase);
36062: yyError = yyResult.select(yyError);
36063: if (yyResult.hasValue(",")) {
36064:
36065: yyResult = pType(yyResult.index);
36066: yyError = yyResult.select(yyError);
36067: if (yyResult.hasValue()) {
36068: final Node v$el$1 = yyResult
36069: .semanticValue();
36070:
36071: yyRepetition1 = yyResult.index;
36072: yyRepValue1 = new Pair<Node>(v$el$1,
36073: yyRepValue1);
36074: continue;
36075: }
36076: } else {
36077: yyError = yyError.select("\",\" expected",
36078: yyBase);
36079: }
36080: break;
36081: }
36082: { // Start scope for v$g$2.
36083: final Pair<Node> v$g$2 = yyRepValue1.reverse();
36084:
36085: yyValue = GNode.createFromPair("Implementation",
36086: v$g$1, v$g$2);
36087: yyValue.setLocation(location(yyStart));
36088:
36089: return new SemanticValue(yyValue, yyRepetition1,
36090: yyError);
36091: } // End scope for v$g$2.
36092: }
36093: }
36094:
36095: // Done.
36096: yyError = yyError.select("implementation expected", yyStart);
36097: return yyError;
36098: }
36099:
36100: // =========================================================================
36101:
36102: /**
36103: * Parse nonterminal xtc.lang.jeannie.DebuggerJava.Block.
36104: *
36105: * @param yyStart The index.
36106: * @return The result.
36107: * @throws IOException Signals an I/O error.
36108: */
36109: private Result pDebuggerJava$Block(final int yyStart)
36110: throws IOException {
36111: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
36112: if (null == yyColumn.chunk13)
36113: yyColumn.chunk13 = new Chunk13();
36114: if (null == yyColumn.chunk13.fDebuggerJava$Block)
36115: yyColumn.chunk13.fDebuggerJava$Block = pDebuggerJava$Block$1(yyStart);
36116: return yyColumn.chunk13.fDebuggerJava$Block;
36117: }
36118:
36119: /** Actually parse xtc.lang.jeannie.DebuggerJava.Block. */
36120: private Result pDebuggerJava$Block$1(final int yyStart)
36121: throws IOException {
36122: Result yyResult;
36123: Node yyValue;
36124: ParseError yyError = ParseError.DUMMY;
36125:
36126: // Alternative <JavaBlock>.
36127:
36128: yyResult = pDebuggerJava$JavaInJavaBlock(yyStart);
36129: yyError = yyResult.select(yyError);
36130: if (yyResult.hasValue()) {
36131: yyValue = yyResult.semanticValue();
36132:
36133: return yyResult.createValue(yyValue, yyError);
36134: }
36135:
36136: // Alternative <CBlock>.
36137:
36138: yyResult = pDebuggerJava$CInJavaBlock(yyStart);
36139: yyError = yyResult.select(yyError);
36140: if (yyResult.hasValue()) {
36141: yyValue = yyResult.semanticValue();
36142:
36143: return yyResult.createValue(yyValue, yyError);
36144: }
36145:
36146: // Done.
36147: return yyError;
36148: }
36149:
36150: // =========================================================================
36151:
36152: /**
36153: * Parse nonterminal xtc.lang.jeannie.DebuggerJava.DeclarationOrStatement.
36154: *
36155: * @param yyStart The index.
36156: * @return The result.
36157: * @throws IOException Signals an I/O error.
36158: */
36159: private Result pDebuggerJava$DeclarationOrStatement(
36160: final int yyStart) throws IOException {
36161:
36162: Result yyResult;
36163: Node yyValue;
36164: ParseError yyError = ParseError.DUMMY;
36165:
36166: // Alternative <Declaration>.
36167:
36168: yyResult = pDebuggerJava$InBlockDeclaration(yyStart);
36169: yyError = yyResult.select(yyError);
36170: if (yyResult.hasValue()) {
36171: yyValue = yyResult.semanticValue();
36172:
36173: return yyResult.createValue(yyValue, yyError);
36174: }
36175:
36176: // Alternative <Statement>.
36177:
36178: yyResult = pDebuggerJava$Statement(yyStart);
36179: yyError = yyResult.select(yyError);
36180: if (yyResult.hasValue()) {
36181: yyValue = yyResult.semanticValue();
36182:
36183: return yyResult.createValue(yyValue, yyError);
36184: }
36185:
36186: // Done.
36187: return yyError;
36188: }
36189:
36190: // =========================================================================
36191:
36192: /**
36193: * Parse nonterminal xtc.lang.jeannie.DebuggerJava.InBlockDeclaration.
36194: *
36195: * @param yyStart The index.
36196: * @return The result.
36197: * @throws IOException Signals an I/O error.
36198: */
36199: private Result pDebuggerJava$InBlockDeclaration(final int yyStart)
36200: throws IOException {
36201:
36202: Result yyResult;
36203: int yyBase;
36204: int yyOption1;
36205: Node yyOpValue1;
36206: Node yyValue;
36207: ParseError yyError = ParseError.DUMMY;
36208:
36209: // Alternative <Variable>.
36210:
36211: yyResult = pDebuggerJava$VariableDeclaration(yyStart);
36212: yyError = yyResult.select(yyError);
36213: if (yyResult.hasValue()) {
36214: yyValue = yyResult.semanticValue();
36215:
36216: return yyResult.createValue(yyValue, yyError);
36217: }
36218:
36219: // Alternative 2.
36220:
36221: yyResult = pDebuggerJava$Modifiers(yyStart);
36222: yyError = yyResult.select(yyError);
36223: if (yyResult.hasValue()) {
36224: final Node v$g$1 = yyResult.semanticValue();
36225:
36226: final int yyChoice1 = yyResult.index;
36227:
36228: // Nested alternative 1.
36229:
36230: yyBase = yyChoice1;
36231: yyResult = pJavaIdentifier$Word(yyBase);
36232: yyError = yyResult.select(yyError);
36233: if (yyResult.hasValue("class")) {
36234:
36235: yyResult = pJavaIdentifier$Identifier(yyResult.index);
36236: yyError = yyResult.select(yyError);
36237: if (yyResult.hasValue()) {
36238: final String v$g$2 = yyResult.semanticValue();
36239:
36240: yyOption1 = yyResult.index;
36241: yyOpValue1 = null;
36242:
36243: yyResult = pDebuggerJava$Extension(yyOption1);
36244: yyError = yyResult.select(yyError);
36245: if (yyResult.hasValue()) {
36246: final Node v$el$1 = yyResult.semanticValue();
36247:
36248: yyOption1 = yyResult.index;
36249: yyOpValue1 = v$el$1;
36250: }
36251: { // Start scope for v$g$4.
36252: final Node v$g$4 = yyOpValue1;
36253:
36254: yyOpValue1 = null;
36255:
36256: yyResult = pDebuggerJava$Implementation(yyOption1);
36257: yyError = yyResult.select(yyError);
36258: if (yyResult.hasValue()) {
36259: final Node v$el$2 = yyResult
36260: .semanticValue();
36261:
36262: yyOption1 = yyResult.index;
36263: yyOpValue1 = v$el$2;
36264: }
36265: { // Start scope for v$g$5.
36266: final Node v$g$5 = yyOpValue1;
36267:
36268: yyResult = pDebuggerJava$ClassBody(yyOption1);
36269: yyError = yyResult.select(yyError);
36270: if (yyResult.hasValue()) {
36271: final Node v$g$6 = yyResult
36272: .semanticValue();
36273:
36274: yyValue = GNode.create(
36275: "ClassDeclaration", v$g$1,
36276: v$g$2, null, v$g$4, v$g$5,
36277: v$g$6);
36278: yyValue.setLocation(location(yyStart));
36279:
36280: return yyResult.createValue(yyValue,
36281: yyError);
36282: }
36283: } // End scope for v$g$5.
36284: } // End scope for v$g$4.
36285: }
36286: } else {
36287: yyError = yyError.select("\"class\" expected", yyBase);
36288: }
36289:
36290: // Nested alternative 2.
36291:
36292: yyBase = yyChoice1;
36293: yyResult = pJavaIdentifier$Word(yyBase);
36294: yyError = yyResult.select(yyError);
36295: if (yyResult.hasValue("interface")) {
36296:
36297: yyResult = pJavaIdentifier$Identifier(yyResult.index);
36298: yyError = yyResult.select(yyError);
36299: if (yyResult.hasValue()) {
36300: final String v$g$2 = yyResult.semanticValue();
36301:
36302: yyOption1 = yyResult.index;
36303: yyOpValue1 = null;
36304:
36305: yyResult = pDebuggerJava$Extension(yyOption1);
36306: yyError = yyResult.select(yyError);
36307: if (yyResult.hasValue()) {
36308: final Node v$el$1 = yyResult.semanticValue();
36309:
36310: yyOption1 = yyResult.index;
36311: yyOpValue1 = v$el$1;
36312: }
36313: { // Start scope for v$g$4.
36314: final Node v$g$4 = yyOpValue1;
36315:
36316: yyResult = pDebuggerJava$ClassBody(yyOption1);
36317: yyError = yyResult.select(yyError);
36318: if (yyResult.hasValue()) {
36319: final Node v$g$5 = yyResult.semanticValue();
36320:
36321: yyValue = GNode.create(
36322: "InterfaceDeclaration", v$g$1,
36323: v$g$2, null, v$g$4, v$g$5);
36324: yyValue.setLocation(location(yyStart));
36325:
36326: return yyResult.createValue(yyValue,
36327: yyError);
36328: }
36329: } // End scope for v$g$4.
36330: }
36331: } else {
36332: yyError = yyError.select("\"interface\" expected",
36333: yyBase);
36334: }
36335: }
36336:
36337: // Done.
36338: return yyError;
36339: }
36340:
36341: // =========================================================================
36342:
36343: /**
36344: * Parse nonterminal xtc.lang.jeannie.DebuggerJava.VariableDeclaration.
36345: *
36346: * @param yyStart The index.
36347: * @return The result.
36348: * @throws IOException Signals an I/O error.
36349: */
36350: private Result pDebuggerJava$VariableDeclaration(final int yyStart)
36351: throws IOException {
36352:
36353: Result yyResult;
36354: int yyBase;
36355: Node yyValue;
36356: ParseError yyError = ParseError.DUMMY;
36357:
36358: // Alternative <Declaration>.
36359:
36360: yyResult = pDebuggerJava$VariableModifiers(yyStart);
36361: yyError = yyResult.select(yyError);
36362: if (yyResult.hasValue()) {
36363: final Node v$g$1 = yyResult.semanticValue();
36364:
36365: yyResult = pType(yyResult.index);
36366: yyError = yyResult.select(yyError);
36367: if (yyResult.hasValue()) {
36368: final Node v$g$2 = yyResult.semanticValue();
36369:
36370: yyResult = pDebuggerJava$Declarators(yyResult.index);
36371: yyError = yyResult.select(yyError);
36372: if (yyResult.hasValue()) {
36373: final Node v$g$3 = yyResult.semanticValue();
36374:
36375: yyBase = yyResult.index;
36376: yyResult = pSymbol(yyBase);
36377: yyError = yyResult.select(yyError);
36378: if (yyResult.hasValue(";")) {
36379:
36380: yyValue = GNode.create("FieldDeclaration",
36381: v$g$1, v$g$2, v$g$3);
36382: yyValue.setLocation(location(yyStart));
36383:
36384: return yyResult.createValue(yyValue, yyError);
36385: } else {
36386: yyError = yyError.select("\";\" expected",
36387: yyBase);
36388: }
36389: }
36390: }
36391: }
36392:
36393: // Done.
36394: return yyError;
36395: }
36396:
36397: // =========================================================================
36398:
36399: /**
36400: * Parse nonterminal xtc.lang.jeannie.DebuggerJava.Statement.
36401: *
36402: * @param yyStart The index.
36403: * @return The result.
36404: * @throws IOException Signals an I/O error.
36405: */
36406: private Result pDebuggerJava$Statement(final int yyStart)
36407: throws IOException {
36408:
36409: Result yyResult;
36410: int yyBase;
36411: int yyRepetition1;
36412: boolean yyRepeated1;
36413: Pair<Node> yyRepValue1;
36414: int yyOption1;
36415: Object yyOpValue1;
36416: Node yyValue;
36417: ParseError yyError = ParseError.DUMMY;
36418:
36419: // Alternative <Block>.
36420:
36421: yyResult = pDebuggerJava$Block(yyStart);
36422: yyError = yyResult.select(yyError);
36423: if (yyResult.hasValue()) {
36424: yyValue = yyResult.semanticValue();
36425:
36426: return yyResult.createValue(yyValue, yyError);
36427: }
36428:
36429: // Alternative 2.
36430:
36431: yyResult = pJavaIdentifier$Word(yyStart);
36432: yyError = yyResult.select(yyError);
36433: if (yyResult.hasValue("if")) {
36434:
36435: yyResult = pDebuggerJava$ParExpression(yyResult.index);
36436: yyError = yyResult.select(yyError);
36437: if (yyResult.hasValue()) {
36438: final Node v$g$1 = yyResult.semanticValue();
36439:
36440: yyResult = pDebuggerJava$Statement(yyResult.index);
36441: yyError = yyResult.select(yyError);
36442: if (yyResult.hasValue()) {
36443: final Node v$g$2 = yyResult.semanticValue();
36444:
36445: final int yyChoice1 = yyResult.index;
36446:
36447: // Nested alternative 1.
36448:
36449: yyBase = yyChoice1;
36450: yyResult = pJavaIdentifier$Word(yyBase);
36451: yyError = yyResult.select(yyError);
36452: if (yyResult.hasValue("else")) {
36453:
36454: yyResult = pDebuggerJava$Statement(yyResult.index);
36455: yyError = yyResult.select(yyError);
36456: if (yyResult.hasValue()) {
36457: final Node v$g$3 = yyResult.semanticValue();
36458:
36459: yyValue = GNode.create(
36460: "ConditionalStatement", v$g$1,
36461: v$g$2, v$g$3);
36462: yyValue.setLocation(location(yyStart));
36463:
36464: return yyResult.createValue(yyValue,
36465: yyError);
36466: }
36467: } else {
36468: yyError = yyError.select("\"else\" expected",
36469: yyBase);
36470: }
36471:
36472: // Nested alternative 2.
36473:
36474: yyValue = GNode.create("ConditionalStatement",
36475: v$g$1, v$g$2, null);
36476: yyValue.setLocation(location(yyStart));
36477:
36478: return new SemanticValue(yyValue, yyChoice1,
36479: yyError);
36480: }
36481: }
36482: }
36483:
36484: // Alternative 3.
36485:
36486: yyResult = pJavaIdentifier$Word(yyStart);
36487: yyError = yyResult.select(yyError);
36488: if (yyResult.hasValue("for")) {
36489:
36490: yyBase = yyResult.index;
36491: yyResult = pSymbol(yyBase);
36492: yyError = yyResult.select(yyError);
36493: if (yyResult.hasValue("(")) {
36494:
36495: yyResult = pDebuggerJava$BasicForControl(yyResult.index);
36496: yyError = yyResult.select(yyError);
36497: if (yyResult.hasValue()) {
36498: final Node v$g$1 = yyResult.semanticValue();
36499:
36500: yyBase = yyResult.index;
36501: yyResult = pSymbol(yyBase);
36502: yyError = yyResult.select(yyError);
36503: if (yyResult.hasValue(")")) {
36504:
36505: yyResult = pDebuggerJava$Statement(yyResult.index);
36506: yyError = yyResult.select(yyError);
36507: if (yyResult.hasValue()) {
36508: final Node v$g$2 = yyResult.semanticValue();
36509:
36510: yyValue = GNode.create("ForStatement",
36511: v$g$1, v$g$2);
36512: yyValue.setLocation(location(yyStart));
36513:
36514: return yyResult.createValue(yyValue,
36515: yyError);
36516: }
36517: } else {
36518: yyError = yyError.select("\")\" expected",
36519: yyBase);
36520: }
36521: }
36522: } else {
36523: yyError = yyError.select("\"(\" expected", yyBase);
36524: }
36525: }
36526:
36527: // Alternative 4.
36528:
36529: yyResult = pJavaIdentifier$Word(yyStart);
36530: yyError = yyResult.select(yyError);
36531: if (yyResult.hasValue("while")) {
36532:
36533: yyResult = pDebuggerJava$ParExpression(yyResult.index);
36534: yyError = yyResult.select(yyError);
36535: if (yyResult.hasValue()) {
36536: final Node v$g$1 = yyResult.semanticValue();
36537:
36538: yyResult = pDebuggerJava$Statement(yyResult.index);
36539: yyError = yyResult.select(yyError);
36540: if (yyResult.hasValue()) {
36541: final Node v$g$2 = yyResult.semanticValue();
36542:
36543: yyValue = GNode.create("WhileStatement", v$g$1,
36544: v$g$2);
36545: yyValue.setLocation(location(yyStart));
36546:
36547: return yyResult.createValue(yyValue, yyError);
36548: }
36549: }
36550: }
36551:
36552: // Alternative 5.
36553:
36554: yyResult = pJavaIdentifier$Word(yyStart);
36555: yyError = yyResult.select(yyError);
36556: if (yyResult.hasValue("do")) {
36557:
36558: yyResult = pDebuggerJava$Statement(yyResult.index);
36559: yyError = yyResult.select(yyError);
36560: if (yyResult.hasValue()) {
36561: final Node v$g$1 = yyResult.semanticValue();
36562:
36563: yyBase = yyResult.index;
36564: yyResult = pJavaIdentifier$Word(yyBase);
36565: yyError = yyResult.select(yyError);
36566: if (yyResult.hasValue("while")) {
36567:
36568: yyResult = pDebuggerJava$ParExpression(yyResult.index);
36569: yyError = yyResult.select(yyError);
36570: if (yyResult.hasValue()) {
36571: final Node v$g$2 = yyResult.semanticValue();
36572:
36573: yyBase = yyResult.index;
36574: yyResult = pSymbol(yyBase);
36575: yyError = yyResult.select(yyError);
36576: if (yyResult.hasValue(";")) {
36577:
36578: yyValue = GNode.create("DoWhileStatement",
36579: v$g$1, v$g$2);
36580: yyValue.setLocation(location(yyStart));
36581:
36582: return yyResult.createValue(yyValue,
36583: yyError);
36584: } else {
36585: yyError = yyError.select("\";\" expected",
36586: yyBase);
36587: }
36588: }
36589: } else {
36590: yyError = yyError.select("\"while\" expected",
36591: yyBase);
36592: }
36593: }
36594: }
36595:
36596: // Alternative 6.
36597:
36598: yyResult = pJavaIdentifier$Word(yyStart);
36599: yyError = yyResult.select(yyError);
36600: if (yyResult.hasValue("try")) {
36601:
36602: yyResult = pDebuggerJava$Block(yyResult.index);
36603: yyError = yyResult.select(yyError);
36604: if (yyResult.hasValue()) {
36605: final Node v$g$1 = yyResult.semanticValue();
36606:
36607: final int yyChoice1 = yyResult.index;
36608:
36609: // Nested alternative 1.
36610:
36611: yyRepetition1 = yyChoice1;
36612: yyRepValue1 = Pair.empty();
36613: while (true) {
36614:
36615: yyResult = pDebuggerJava$CatchClause(yyRepetition1);
36616: yyError = yyResult.select(yyError);
36617: if (yyResult.hasValue()) {
36618: final Node v$el$1 = yyResult.semanticValue();
36619:
36620: yyRepetition1 = yyResult.index;
36621: yyRepValue1 = new Pair<Node>(v$el$1,
36622: yyRepValue1);
36623: continue;
36624: }
36625: break;
36626: }
36627: { // Start scope for v$g$2.
36628: final Pair<Node> v$g$2 = yyRepValue1.reverse();
36629:
36630: yyBase = yyRepetition1;
36631: yyResult = pJavaIdentifier$Word(yyBase);
36632: yyError = yyResult.select(yyError);
36633: if (yyResult.hasValue("finally")) {
36634:
36635: yyResult = pDebuggerJava$Block(yyResult.index);
36636: yyError = yyResult.select(yyError);
36637: if (yyResult.hasValue()) {
36638: final Node v$g$3 = yyResult.semanticValue();
36639:
36640: yyValue = GNode.create(
36641: "TryCatchFinallyStatement",
36642: v$g$2.size() + 2).add(v$g$1)
36643: .addAll(v$g$2).add(v$g$3);
36644: yyValue.setLocation(location(yyStart));
36645:
36646: return yyResult.createValue(yyValue,
36647: yyError);
36648: }
36649: } else {
36650: yyError = yyError.select(
36651: "\"finally\" expected", yyBase);
36652: }
36653: } // End scope for v$g$2.
36654:
36655: // Nested alternative 2.
36656:
36657: yyRepetition1 = yyChoice1;
36658: yyRepeated1 = false;
36659: yyRepValue1 = Pair.empty();
36660: while (true) {
36661:
36662: yyResult = pDebuggerJava$CatchClause(yyRepetition1);
36663: yyError = yyResult.select(yyError);
36664: if (yyResult.hasValue()) {
36665: final Node v$el$2 = yyResult.semanticValue();
36666:
36667: yyRepetition1 = yyResult.index;
36668: yyRepeated1 = true;
36669: yyRepValue1 = new Pair<Node>(v$el$2,
36670: yyRepValue1);
36671: continue;
36672: }
36673: break;
36674: }
36675:
36676: if (yyRepeated1) {
36677: final Pair<Node> v$g$4 = yyRepValue1.reverse();
36678:
36679: yyValue = GNode.create("TryCatchFinallyStatement",
36680: v$g$4.size() + 2).add(v$g$1).addAll(v$g$4)
36681: .add(null);
36682: yyValue.setLocation(location(yyStart));
36683:
36684: return new SemanticValue(yyValue, yyRepetition1,
36685: yyError);
36686: }
36687: }
36688: }
36689:
36690: // Alternative 7.
36691:
36692: yyResult = pJavaIdentifier$Word(yyStart);
36693: yyError = yyResult.select(yyError);
36694: if (yyResult.hasValue("switch")) {
36695:
36696: yyResult = pDebuggerJava$ParExpression(yyResult.index);
36697: yyError = yyResult.select(yyError);
36698: if (yyResult.hasValue()) {
36699: final Node v$g$1 = yyResult.semanticValue();
36700:
36701: yyBase = yyResult.index;
36702: yyResult = pSymbol(yyBase);
36703: yyError = yyResult.select(yyError);
36704: if (yyResult.hasValue("{")) {
36705:
36706: yyRepetition1 = yyResult.index;
36707: yyRepValue1 = Pair.empty();
36708: while (true) {
36709:
36710: yyResult = pDebuggerJava$SwitchClause(yyRepetition1);
36711: yyError = yyResult.select(yyError);
36712: if (yyResult.hasValue()) {
36713: final Node v$el$1 = yyResult
36714: .semanticValue();
36715:
36716: yyRepetition1 = yyResult.index;
36717: yyRepValue1 = new Pair<Node>(v$el$1,
36718: yyRepValue1);
36719: continue;
36720: }
36721: break;
36722: }
36723: { // Start scope for v$g$2.
36724: final Pair<Node> v$g$2 = yyRepValue1.reverse();
36725:
36726: yyBase = yyRepetition1;
36727: yyResult = pSymbol(yyBase);
36728: yyError = yyResult.select(yyError);
36729: if (yyResult.hasValue("}")) {
36730:
36731: yyValue = GNode.createFromPair(
36732: "SwitchStatement", v$g$1, v$g$2);
36733: yyValue.setLocation(location(yyStart));
36734:
36735: return yyResult.createValue(yyValue,
36736: yyError);
36737: } else {
36738: yyError = yyError.select("\"}\" expected",
36739: yyBase);
36740: }
36741: } // End scope for v$g$2.
36742: } else {
36743: yyError = yyError.select("\"{\" expected", yyBase);
36744: }
36745: }
36746: }
36747:
36748: // Alternative 8.
36749:
36750: yyResult = pJavaIdentifier$Word(yyStart);
36751: yyError = yyResult.select(yyError);
36752: if (yyResult.hasValue("synchronized")) {
36753:
36754: yyResult = pDebuggerJava$ParExpression(yyResult.index);
36755: yyError = yyResult.select(yyError);
36756: if (yyResult.hasValue()) {
36757: final Node v$g$1 = yyResult.semanticValue();
36758:
36759: yyResult = pDebuggerJava$Block(yyResult.index);
36760: yyError = yyResult.select(yyError);
36761: if (yyResult.hasValue()) {
36762: final Node v$g$2 = yyResult.semanticValue();
36763:
36764: yyValue = GNode.create("SynchronizedStatement",
36765: v$g$1, v$g$2);
36766: yyValue.setLocation(location(yyStart));
36767:
36768: return yyResult.createValue(yyValue, yyError);
36769: }
36770: }
36771: }
36772:
36773: // Alternative 9.
36774:
36775: yyResult = pJavaIdentifier$Word(yyStart);
36776: yyError = yyResult.select(yyError);
36777: if (yyResult.hasValue("return")) {
36778:
36779: yyOption1 = yyResult.index;
36780: yyOpValue1 = null;
36781:
36782: yyResult = pDebuggerJava$Expression(yyOption1);
36783: yyError = yyResult.select(yyError);
36784: if (yyResult.hasValue()) {
36785: final Node v$el$1 = yyResult.semanticValue();
36786:
36787: yyOption1 = yyResult.index;
36788: yyOpValue1 = v$el$1;
36789: }
36790: { // Start scope for v$g$1.
36791: final Node v$g$1 = cast(yyOpValue1);
36792:
36793: yyBase = yyOption1;
36794: yyResult = pSymbol(yyBase);
36795: yyError = yyResult.select(yyError);
36796: if (yyResult.hasValue(";")) {
36797:
36798: yyValue = GNode.create("ReturnStatement", v$g$1);
36799: yyValue.setLocation(location(yyStart));
36800:
36801: return yyResult.createValue(yyValue, yyError);
36802: } else {
36803: yyError = yyError.select("\";\" expected", yyBase);
36804: }
36805: } // End scope for v$g$1.
36806: }
36807:
36808: // Alternative 10.
36809:
36810: yyResult = pJavaIdentifier$Word(yyStart);
36811: yyError = yyResult.select(yyError);
36812: if (yyResult.hasValue("throw")) {
36813:
36814: yyResult = pDebuggerJava$Expression(yyResult.index);
36815: yyError = yyResult.select(yyError);
36816: if (yyResult.hasValue()) {
36817: final Node v$g$1 = yyResult.semanticValue();
36818:
36819: yyBase = yyResult.index;
36820: yyResult = pSymbol(yyBase);
36821: yyError = yyResult.select(yyError);
36822: if (yyResult.hasValue(";")) {
36823:
36824: yyValue = GNode.create("ThrowStatement", v$g$1);
36825: yyValue.setLocation(location(yyStart));
36826:
36827: return yyResult.createValue(yyValue, yyError);
36828: } else {
36829: yyError = yyError.select("\";\" expected", yyBase);
36830: }
36831: }
36832: }
36833:
36834: // Alternative 11.
36835:
36836: yyResult = pJavaIdentifier$Word(yyStart);
36837: yyError = yyResult.select(yyError);
36838: if (yyResult.hasValue("break")) {
36839:
36840: yyOption1 = yyResult.index;
36841: yyOpValue1 = null;
36842:
36843: yyResult = pJavaIdentifier$Identifier(yyOption1);
36844: yyError = yyResult.select(yyError);
36845: if (yyResult.hasValue()) {
36846: final String v$el$1 = yyResult.semanticValue();
36847:
36848: yyOption1 = yyResult.index;
36849: yyOpValue1 = v$el$1;
36850: }
36851: { // Start scope for v$g$1.
36852: final String v$g$1 = cast(yyOpValue1);
36853:
36854: yyBase = yyOption1;
36855: yyResult = pSymbol(yyBase);
36856: yyError = yyResult.select(yyError);
36857: if (yyResult.hasValue(";")) {
36858:
36859: yyValue = GNode.create("BreakStatement", v$g$1);
36860: yyValue.setLocation(location(yyStart));
36861:
36862: return yyResult.createValue(yyValue, yyError);
36863: } else {
36864: yyError = yyError.select("\";\" expected", yyBase);
36865: }
36866: } // End scope for v$g$1.
36867: }
36868:
36869: // Alternative 12.
36870:
36871: yyResult = pJavaIdentifier$Word(yyStart);
36872: yyError = yyResult.select(yyError);
36873: if (yyResult.hasValue("continue")) {
36874:
36875: yyOption1 = yyResult.index;
36876: yyOpValue1 = null;
36877:
36878: yyResult = pJavaIdentifier$Identifier(yyOption1);
36879: yyError = yyResult.select(yyError);
36880: if (yyResult.hasValue()) {
36881: final String v$el$1 = yyResult.semanticValue();
36882:
36883: yyOption1 = yyResult.index;
36884: yyOpValue1 = v$el$1;
36885: }
36886: { // Start scope for v$g$1.
36887: final String v$g$1 = cast(yyOpValue1);
36888:
36889: yyBase = yyOption1;
36890: yyResult = pSymbol(yyBase);
36891: yyError = yyResult.select(yyError);
36892: if (yyResult.hasValue(";")) {
36893:
36894: yyValue = GNode.create("ContinueStatement", v$g$1);
36895: yyValue.setLocation(location(yyStart));
36896:
36897: return yyResult.createValue(yyValue, yyError);
36898: } else {
36899: yyError = yyError.select("\";\" expected", yyBase);
36900: }
36901: } // End scope for v$g$1.
36902: }
36903:
36904: // Alternative 13.
36905:
36906: yyResult = pJavaIdentifier$Identifier(yyStart);
36907: yyError = yyResult.select(yyError);
36908: if (yyResult.hasValue()) {
36909: final String v$g$1 = yyResult.semanticValue();
36910:
36911: yyBase = yyResult.index;
36912: yyResult = pSymbol(yyBase);
36913: yyError = yyResult.select(yyError);
36914: if (yyResult.hasValue(":")) {
36915:
36916: yyResult = pDebuggerJava$Statement(yyResult.index);
36917: yyError = yyResult.select(yyError);
36918: if (yyResult.hasValue()) {
36919: final Node v$g$2 = yyResult.semanticValue();
36920:
36921: yyValue = GNode.create("LabeledStatement", v$g$1,
36922: v$g$2);
36923: yyValue.setLocation(location(yyStart));
36924:
36925: return yyResult.createValue(yyValue, yyError);
36926: }
36927: } else {
36928: yyError = yyError.select("\":\" expected", yyBase);
36929: }
36930: }
36931:
36932: // Alternative 14.
36933:
36934: yyResult = pDebuggerJava$Expression(yyStart);
36935: yyError = yyResult.select(yyError);
36936: if (yyResult.hasValue()) {
36937: final Node v$g$1 = yyResult.semanticValue();
36938:
36939: yyBase = yyResult.index;
36940: yyResult = pSymbol(yyBase);
36941: yyError = yyResult.select(yyError);
36942: if (yyResult.hasValue(";")) {
36943:
36944: yyValue = GNode.create("ExpressionStatement", v$g$1);
36945: yyValue.setLocation(location(yyStart));
36946:
36947: return yyResult.createValue(yyValue, yyError);
36948: } else {
36949: yyError = yyError.select("\";\" expected", yyBase);
36950: }
36951: }
36952:
36953: // Alternative 15.
36954:
36955: yyResult = pJavaIdentifier$Word(yyStart);
36956: yyError = yyResult.select(yyError);
36957: if (yyResult.hasValue("assert")) {
36958:
36959: yyResult = pDebuggerJava$Expression(yyResult.index);
36960: yyError = yyResult.select(yyError);
36961: if (yyResult.hasValue()) {
36962: final Node v$g$1 = yyResult.semanticValue();
36963:
36964: yyOption1 = yyResult.index;
36965: yyOpValue1 = null;
36966:
36967: yyBase = yyOption1;
36968: yyResult = pSymbol(yyBase);
36969: yyError = yyResult.select(yyError);
36970: if (yyResult.hasValue(":")) {
36971:
36972: yyResult = pDebuggerJava$Expression(yyResult.index);
36973: yyError = yyResult.select(yyError);
36974: if (yyResult.hasValue()) {
36975: final Node v$el$1 = yyResult.semanticValue();
36976:
36977: yyOption1 = yyResult.index;
36978: yyOpValue1 = v$el$1;
36979: }
36980: } else {
36981: yyError = yyError.select("\":\" expected", yyBase);
36982: }
36983: { // Start scope for v$g$2.
36984: final Node v$g$2 = cast(yyOpValue1);
36985:
36986: yyBase = yyOption1;
36987: yyResult = pSymbol(yyBase);
36988: yyError = yyResult.select(yyError);
36989: if (yyResult.hasValue(";")) {
36990:
36991: yyValue = GNode.create("AssertStatement",
36992: v$g$1, v$g$2);
36993: yyValue.setLocation(location(yyStart));
36994:
36995: return yyResult.createValue(yyValue, yyError);
36996: } else {
36997: yyError = yyError.select("\";\" expected",
36998: yyBase);
36999: }
37000: } // End scope for v$g$2.
37001: }
37002: }
37003:
37004: // Alternative 16.
37005:
37006: yyResult = pSymbol(yyStart);
37007: yyError = yyResult.select(yyError);
37008: if (yyResult.hasValue(";")) {
37009:
37010: yyValue = GNode.create("EmptyStatement", false);
37011: yyValue.setLocation(location(yyStart));
37012:
37013: return yyResult.createValue(yyValue, yyError);
37014: }
37015:
37016: // Done.
37017: yyError = yyError.select("statement expected", yyStart);
37018: return yyError;
37019: }
37020:
37021: // =========================================================================
37022:
37023: /**
37024: * Parse nonterminal xtc.lang.jeannie.DebuggerJava.BasicForControl.
37025: *
37026: * @param yyStart The index.
37027: * @return The result.
37028: * @throws IOException Signals an I/O error.
37029: */
37030: private Result pDebuggerJava$BasicForControl(final int yyStart)
37031: throws IOException {
37032:
37033: Result yyResult;
37034: int yyBase;
37035: int yyOption1;
37036: Node yyOpValue1;
37037: Node yyValue;
37038: ParseError yyError = ParseError.DUMMY;
37039:
37040: // Alternative <Declaration>.
37041:
37042: yyResult = pDebuggerJava$VariableModifiers(yyStart);
37043: yyError = yyResult.select(yyError);
37044: if (yyResult.hasValue()) {
37045: final Node v$g$1 = yyResult.semanticValue();
37046:
37047: yyResult = pType(yyResult.index);
37048: yyError = yyResult.select(yyError);
37049: if (yyResult.hasValue()) {
37050: final Node v$g$2 = yyResult.semanticValue();
37051:
37052: yyResult = pDebuggerJava$Declarators(yyResult.index);
37053: yyError = yyResult.select(yyError);
37054: if (yyResult.hasValue()) {
37055: final Node v$g$3 = yyResult.semanticValue();
37056:
37057: yyBase = yyResult.index;
37058: yyResult = pSymbol(yyBase);
37059: yyError = yyResult.select(yyError);
37060: if (yyResult.hasValue(";")) {
37061:
37062: yyOption1 = yyResult.index;
37063: yyOpValue1 = null;
37064:
37065: yyResult = pDebuggerJava$Expression(yyOption1);
37066: yyError = yyResult.select(yyError);
37067: if (yyResult.hasValue()) {
37068: final Node v$el$1 = yyResult
37069: .semanticValue();
37070:
37071: yyOption1 = yyResult.index;
37072: yyOpValue1 = v$el$1;
37073: }
37074: { // Start scope for v$g$4.
37075: final Node v$g$4 = yyOpValue1;
37076:
37077: yyBase = yyOption1;
37078: yyResult = pSymbol(yyBase);
37079: yyError = yyResult.select(yyError);
37080: if (yyResult.hasValue(";")) {
37081:
37082: yyOption1 = yyResult.index;
37083: yyOpValue1 = null;
37084:
37085: yyResult = pDebuggerJava$ExpressionList(yyOption1);
37086: yyError = yyResult.select(yyError);
37087: if (yyResult.hasValue()) {
37088: final Node v$el$2 = yyResult
37089: .semanticValue();
37090:
37091: yyOption1 = yyResult.index;
37092: yyOpValue1 = v$el$2;
37093: }
37094: { // Start scope for v$g$5.
37095: final Node v$g$5 = yyOpValue1;
37096:
37097: yyValue = GNode.create(
37098: "BasicForControl", v$g$1,
37099: v$g$2, v$g$3, v$g$4, v$g$5);
37100: yyValue
37101: .setLocation(location(yyStart));
37102:
37103: return new SemanticValue(yyValue,
37104: yyOption1, yyError);
37105: } // End scope for v$g$5.
37106: } else {
37107: yyError = yyError.select(
37108: "\";\" expected", yyBase);
37109: }
37110: } // End scope for v$g$4.
37111: } else {
37112: yyError = yyError.select("\";\" expected",
37113: yyBase);
37114: }
37115: }
37116: }
37117: }
37118:
37119: // Alternative <Initialization>.
37120:
37121: yyOption1 = yyStart;
37122: yyOpValue1 = null;
37123:
37124: yyResult = pDebuggerJava$ExpressionList(yyOption1);
37125: yyError = yyResult.select(yyError);
37126: if (yyResult.hasValue()) {
37127: final Node v$el$3 = yyResult.semanticValue();
37128:
37129: yyOption1 = yyResult.index;
37130: yyOpValue1 = v$el$3;
37131: }
37132: { // Start scope for v$g$8.
37133: final Node v$g$8 = yyOpValue1;
37134:
37135: yyBase = yyOption1;
37136: yyResult = pSymbol(yyBase);
37137: yyError = yyResult.select(yyError);
37138: if (yyResult.hasValue(";")) {
37139:
37140: yyOption1 = yyResult.index;
37141: yyOpValue1 = null;
37142:
37143: yyResult = pDebuggerJava$Expression(yyOption1);
37144: yyError = yyResult.select(yyError);
37145: if (yyResult.hasValue()) {
37146: final Node v$el$4 = yyResult.semanticValue();
37147:
37148: yyOption1 = yyResult.index;
37149: yyOpValue1 = v$el$4;
37150: }
37151: { // Start scope for v$g$9.
37152: final Node v$g$9 = yyOpValue1;
37153:
37154: yyBase = yyOption1;
37155: yyResult = pSymbol(yyBase);
37156: yyError = yyResult.select(yyError);
37157: if (yyResult.hasValue(";")) {
37158:
37159: yyOption1 = yyResult.index;
37160: yyOpValue1 = null;
37161:
37162: yyResult = pDebuggerJava$ExpressionList(yyOption1);
37163: yyError = yyResult.select(yyError);
37164: if (yyResult.hasValue()) {
37165: final Node v$el$5 = yyResult
37166: .semanticValue();
37167:
37168: yyOption1 = yyResult.index;
37169: yyOpValue1 = v$el$5;
37170: }
37171: { // Start scope for v$g$10.
37172: final Node v$g$10 = yyOpValue1;
37173:
37174: yyValue = GNode.create("BasicForControl",
37175: null, null, v$g$8, v$g$9, v$g$10);
37176: yyValue.setLocation(location(yyStart));
37177:
37178: return new SemanticValue(yyValue,
37179: yyOption1, yyError);
37180: } // End scope for v$g$10.
37181: } else {
37182: yyError = yyError.select("\";\" expected",
37183: yyBase);
37184: }
37185: } // End scope for v$g$9.
37186: } else {
37187: yyError = yyError.select("\";\" expected", yyBase);
37188: }
37189: } // End scope for v$g$8.
37190:
37191: // Done.
37192: return yyError;
37193: }
37194:
37195: // =========================================================================
37196:
37197: /**
37198: * Parse nonterminal xtc.lang.jeannie.DebuggerJava.ParExpression.
37199: *
37200: * @param yyStart The index.
37201: * @return The result.
37202: * @throws IOException Signals an I/O error.
37203: */
37204: private Result pDebuggerJava$ParExpression(final int yyStart)
37205: throws IOException {
37206:
37207: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
37208: if (null == yyColumn.chunk13)
37209: yyColumn.chunk13 = new Chunk13();
37210: if (null == yyColumn.chunk13.fDebuggerJava$ParExpression)
37211: yyColumn.chunk13.fDebuggerJava$ParExpression = pDebuggerJava$ParExpression$1(yyStart);
37212: return yyColumn.chunk13.fDebuggerJava$ParExpression;
37213: }
37214:
37215: /** Actually parse xtc.lang.jeannie.DebuggerJava.ParExpression. */
37216: private Result pDebuggerJava$ParExpression$1(final int yyStart)
37217: throws IOException {
37218:
37219: Result yyResult;
37220: int yyBase;
37221: Node yyValue;
37222: ParseError yyError = ParseError.DUMMY;
37223:
37224: // Alternative 1.
37225:
37226: yyResult = pSymbol(yyStart);
37227: yyError = yyResult.select(yyError);
37228: if (yyResult.hasValue("(")) {
37229:
37230: yyResult = pDebuggerJava$Expression(yyResult.index);
37231: yyError = yyResult.select(yyError);
37232: if (yyResult.hasValue()) {
37233: yyValue = yyResult.semanticValue();
37234:
37235: yyBase = yyResult.index;
37236: yyResult = pSymbol(yyBase);
37237: yyError = yyResult.select(yyError);
37238: if (yyResult.hasValue(")")) {
37239:
37240: return yyResult.createValue(yyValue, yyError);
37241: } else {
37242: yyError = yyError.select("\")\" expected", yyBase);
37243: }
37244: }
37245: }
37246:
37247: // Done.
37248: yyError = yyError.select("par expression expected", yyStart);
37249: return yyError;
37250: }
37251:
37252: // =========================================================================
37253:
37254: /**
37255: * Parse nonterminal xtc.lang.jeannie.DebuggerJava.CatchClause.
37256: *
37257: * @param yyStart The index.
37258: * @return The result.
37259: * @throws IOException Signals an I/O error.
37260: */
37261: private Result pDebuggerJava$CatchClause(final int yyStart)
37262: throws IOException {
37263:
37264: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
37265: if (null == yyColumn.chunk13)
37266: yyColumn.chunk13 = new Chunk13();
37267: if (null == yyColumn.chunk13.fDebuggerJava$CatchClause)
37268: yyColumn.chunk13.fDebuggerJava$CatchClause = pDebuggerJava$CatchClause$1(yyStart);
37269: return yyColumn.chunk13.fDebuggerJava$CatchClause;
37270: }
37271:
37272: /** Actually parse xtc.lang.jeannie.DebuggerJava.CatchClause. */
37273: private Result pDebuggerJava$CatchClause$1(final int yyStart)
37274: throws IOException {
37275:
37276: Result yyResult;
37277: int yyBase;
37278: Node yyValue;
37279: ParseError yyError = ParseError.DUMMY;
37280:
37281: // Alternative 1.
37282:
37283: yyResult = pJavaIdentifier$Word(yyStart);
37284: yyError = yyResult.select(yyError);
37285: if (yyResult.hasValue("catch")) {
37286:
37287: yyBase = yyResult.index;
37288: yyResult = pSymbol(yyBase);
37289: yyError = yyResult.select(yyError);
37290: if (yyResult.hasValue("(")) {
37291:
37292: yyResult = pDebuggerJava$FormalParameter(yyResult.index);
37293: yyError = yyResult.select(yyError);
37294: if (yyResult.hasValue()) {
37295: final Node v$g$1 = yyResult.semanticValue();
37296:
37297: yyBase = yyResult.index;
37298: yyResult = pSymbol(yyBase);
37299: yyError = yyResult.select(yyError);
37300: if (yyResult.hasValue(")")) {
37301:
37302: yyResult = pDebuggerJava$Block(yyResult.index);
37303: yyError = yyResult.select(yyError);
37304: if (yyResult.hasValue()) {
37305: final Node v$g$2 = yyResult.semanticValue();
37306:
37307: yyValue = GNode.create("CatchClause",
37308: v$g$1, v$g$2);
37309: yyValue.setLocation(location(yyStart));
37310:
37311: return yyResult.createValue(yyValue,
37312: yyError);
37313: }
37314: } else {
37315: yyError = yyError.select("\")\" expected",
37316: yyBase);
37317: }
37318: }
37319: } else {
37320: yyError = yyError.select("\"(\" expected", yyBase);
37321: }
37322: }
37323:
37324: // Done.
37325: yyError = yyError.select("catch clause expected", yyStart);
37326: return yyError;
37327: }
37328:
37329: // =========================================================================
37330:
37331: /**
37332: * Parse nonterminal xtc.lang.jeannie.DebuggerJava.SwitchClause.
37333: *
37334: * @param yyStart The index.
37335: * @return The result.
37336: * @throws IOException Signals an I/O error.
37337: */
37338: private Result pDebuggerJava$SwitchClause(final int yyStart)
37339: throws IOException {
37340:
37341: Result yyResult;
37342: int yyBase;
37343: int yyRepetition1;
37344: Pair<Node> yyRepValue1;
37345: Node yyValue;
37346: ParseError yyError = ParseError.DUMMY;
37347:
37348: // Alternative 1.
37349:
37350: yyResult = pJavaIdentifier$Word(yyStart);
37351: yyError = yyResult.select(yyError);
37352: if (yyResult.hasValue("case")) {
37353:
37354: yyResult = pDebuggerJava$Expression(yyResult.index);
37355: yyError = yyResult.select(yyError);
37356: if (yyResult.hasValue()) {
37357: final Node v$g$1 = yyResult.semanticValue();
37358:
37359: yyBase = yyResult.index;
37360: yyResult = pSymbol(yyBase);
37361: yyError = yyResult.select(yyError);
37362: if (yyResult.hasValue(":")) {
37363:
37364: yyRepetition1 = yyResult.index;
37365: yyRepValue1 = Pair.empty();
37366: while (true) {
37367:
37368: yyResult = pDebuggerJava$DeclarationOrStatement(yyRepetition1);
37369: yyError = yyResult.select(yyError);
37370: if (yyResult.hasValue()) {
37371: final Node v$el$1 = yyResult
37372: .semanticValue();
37373:
37374: yyRepetition1 = yyResult.index;
37375: yyRepValue1 = new Pair<Node>(v$el$1,
37376: yyRepValue1);
37377: continue;
37378: }
37379: break;
37380: }
37381: { // Start scope for v$g$2.
37382: final Pair<Node> v$g$2 = yyRepValue1.reverse();
37383:
37384: yyValue = GNode.createFromPair("CaseClause",
37385: v$g$1, v$g$2);
37386: yyValue.setLocation(location(yyStart));
37387:
37388: return new SemanticValue(yyValue,
37389: yyRepetition1, yyError);
37390: } // End scope for v$g$2.
37391: } else {
37392: yyError = yyError.select("\":\" expected", yyBase);
37393: }
37394: }
37395: }
37396:
37397: // Alternative 2.
37398:
37399: yyResult = pJavaIdentifier$Word(yyStart);
37400: yyError = yyResult.select(yyError);
37401: if (yyResult.hasValue("default")) {
37402:
37403: yyBase = yyResult.index;
37404: yyResult = pSymbol(yyBase);
37405: yyError = yyResult.select(yyError);
37406: if (yyResult.hasValue(":")) {
37407:
37408: yyRepetition1 = yyResult.index;
37409: yyRepValue1 = Pair.empty();
37410: while (true) {
37411:
37412: yyResult = pDebuggerJava$DeclarationOrStatement(yyRepetition1);
37413: yyError = yyResult.select(yyError);
37414: if (yyResult.hasValue()) {
37415: final Node v$el$1 = yyResult.semanticValue();
37416:
37417: yyRepetition1 = yyResult.index;
37418: yyRepValue1 = new Pair<Node>(v$el$1,
37419: yyRepValue1);
37420: continue;
37421: }
37422: break;
37423: }
37424: { // Start scope for v$g$1.
37425: final Pair<Node> v$g$1 = yyRepValue1.reverse();
37426:
37427: yyValue = GNode.createFromPair("DefaultClause",
37428: v$g$1);
37429: yyValue.setLocation(location(yyStart));
37430:
37431: return new SemanticValue(yyValue, yyRepetition1,
37432: yyError);
37433: } // End scope for v$g$1.
37434: } else {
37435: yyError = yyError.select("\":\" expected", yyBase);
37436: }
37437: }
37438:
37439: // Done.
37440: yyError = yyError.select("switch clause expected", yyStart);
37441: return yyError;
37442: }
37443:
37444: // =========================================================================
37445:
37446: /**
37447: * Parse nonterminal xtc.lang.jeannie.DebuggerJava.ExpressionList.
37448: *
37449: * @param yyStart The index.
37450: * @return The result.
37451: * @throws IOException Signals an I/O error.
37452: */
37453: private Result pDebuggerJava$ExpressionList(final int yyStart)
37454: throws IOException {
37455:
37456: Result yyResult;
37457: int yyBase;
37458: int yyRepetition1;
37459: Pair<Node> yyRepValue1;
37460: Node yyValue;
37461: ParseError yyError = ParseError.DUMMY;
37462:
37463: // Alternative 1.
37464:
37465: yyResult = pDebuggerJava$Expression(yyStart);
37466: yyError = yyResult.select(yyError);
37467: if (yyResult.hasValue()) {
37468: final Node v$g$1 = yyResult.semanticValue();
37469:
37470: yyRepetition1 = yyResult.index;
37471: yyRepValue1 = Pair.empty();
37472: while (true) {
37473:
37474: yyBase = yyRepetition1;
37475: yyResult = pSymbol(yyBase);
37476: yyError = yyResult.select(yyError);
37477: if (yyResult.hasValue(",")) {
37478:
37479: yyResult = pDebuggerJava$Expression(yyResult.index);
37480: yyError = yyResult.select(yyError);
37481: if (yyResult.hasValue()) {
37482: final Node v$el$1 = yyResult.semanticValue();
37483:
37484: yyRepetition1 = yyResult.index;
37485: yyRepValue1 = new Pair<Node>(v$el$1,
37486: yyRepValue1);
37487: continue;
37488: }
37489: } else {
37490: yyError = yyError.select("\",\" expected", yyBase);
37491: }
37492: break;
37493: }
37494: { // Start scope for v$g$2.
37495: final Pair<Node> v$g$2 = yyRepValue1.reverse();
37496:
37497: yyValue = GNode.createFromPair("ExpressionList", v$g$1,
37498: v$g$2);
37499: yyValue.setLocation(location(yyStart));
37500:
37501: return new SemanticValue(yyValue, yyRepetition1,
37502: yyError);
37503: } // End scope for v$g$2.
37504: }
37505:
37506: // Done.
37507: return yyError;
37508: }
37509:
37510: // =========================================================================
37511:
37512: /**
37513: * Parse nonterminal xtc.lang.jeannie.DebuggerJava.Expression.
37514: *
37515: * @param yyStart The index.
37516: * @return The result.
37517: * @throws IOException Signals an I/O error.
37518: */
37519: private Result pDebuggerJava$Expression(final int yyStart)
37520: throws IOException {
37521:
37522: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
37523: if (null == yyColumn.chunk13)
37524: yyColumn.chunk13 = new Chunk13();
37525: if (null == yyColumn.chunk13.fDebuggerJava$Expression)
37526: yyColumn.chunk13.fDebuggerJava$Expression = pDebuggerJava$Expression$1(yyStart);
37527: return yyColumn.chunk13.fDebuggerJava$Expression;
37528: }
37529:
37530: /** Actually parse xtc.lang.jeannie.DebuggerJava.Expression. */
37531: private Result pDebuggerJava$Expression$1(final int yyStart)
37532: throws IOException {
37533:
37534: Result yyResult;
37535: Node yyValue;
37536: ParseError yyError = ParseError.DUMMY;
37537:
37538: // Alternative <Assignment>.
37539:
37540: yyResult = pDebuggerJava$ConditionalExpression(yyStart);
37541: yyError = yyResult.select(yyError);
37542: if (yyResult.hasValue()) {
37543: final Node v$g$1 = yyResult.semanticValue();
37544:
37545: yyResult = p$$Shared21(yyResult.index);
37546: yyError = yyResult.select(yyError);
37547: if (yyResult.hasValue()) {
37548: final String v$g$2 = yyResult.semanticValue();
37549:
37550: yyResult = pDebuggerJava$Expression(yyResult.index);
37551: yyError = yyResult.select(yyError);
37552: if (yyResult.hasValue()) {
37553: final Node v$g$3 = yyResult.semanticValue();
37554:
37555: yyValue = GNode.create("Expression", v$g$1, v$g$2,
37556: v$g$3);
37557: yyValue.setLocation(location(yyStart));
37558:
37559: return yyResult.createValue(yyValue, yyError);
37560: }
37561: }
37562: }
37563:
37564: // Alternative <Base>.
37565:
37566: yyResult = pDebuggerJava$ConditionalExpression(yyStart);
37567: yyError = yyResult.select(yyError);
37568: if (yyResult.hasValue()) {
37569: yyValue = yyResult.semanticValue();
37570:
37571: return yyResult.createValue(yyValue, yyError);
37572: }
37573:
37574: // Done.
37575: return yyError;
37576: }
37577:
37578: // =========================================================================
37579:
37580: /**
37581: * Parse nonterminal xtc.lang.jeannie.DebuggerJava.ConditionalExpression.
37582: *
37583: * @param yyStart The index.
37584: * @return The result.
37585: * @throws IOException Signals an I/O error.
37586: */
37587: private Result pDebuggerJava$ConditionalExpression(final int yyStart)
37588: throws IOException {
37589:
37590: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
37591: if (null == yyColumn.chunk13)
37592: yyColumn.chunk13 = new Chunk13();
37593: if (null == yyColumn.chunk13.fDebuggerJava$ConditionalExpression)
37594: yyColumn.chunk13.fDebuggerJava$ConditionalExpression = pDebuggerJava$ConditionalExpression$1(yyStart);
37595: return yyColumn.chunk13.fDebuggerJava$ConditionalExpression;
37596: }
37597:
37598: /** Actually parse xtc.lang.jeannie.DebuggerJava.ConditionalExpression. */
37599: private Result pDebuggerJava$ConditionalExpression$1(
37600: final int yyStart) throws IOException {
37601:
37602: Result yyResult;
37603: int yyBase;
37604: Node yyValue;
37605: ParseError yyError = ParseError.DUMMY;
37606:
37607: // Alternative <Conditional>.
37608:
37609: yyResult = pDebuggerJava$LogicalOrExpression(yyStart);
37610: yyError = yyResult.select(yyError);
37611: if (yyResult.hasValue()) {
37612: final Node v$g$1 = yyResult.semanticValue();
37613:
37614: yyBase = yyResult.index;
37615: yyResult = pSymbol(yyBase);
37616: yyError = yyResult.select(yyError);
37617: if (yyResult.hasValue("?")) {
37618:
37619: yyResult = pDebuggerJava$Expression(yyResult.index);
37620: yyError = yyResult.select(yyError);
37621: if (yyResult.hasValue()) {
37622: final Node v$g$2 = yyResult.semanticValue();
37623:
37624: yyBase = yyResult.index;
37625: yyResult = pSymbol(yyBase);
37626: yyError = yyResult.select(yyError);
37627: if (yyResult.hasValue(":")) {
37628:
37629: yyResult = pDebuggerJava$ConditionalExpression(yyResult.index);
37630: yyError = yyResult.select(yyError);
37631: if (yyResult.hasValue()) {
37632: final Node v$g$3 = yyResult.semanticValue();
37633:
37634: yyValue = GNode.create(
37635: "ConditionalExpression", v$g$1,
37636: v$g$2, v$g$3);
37637: yyValue.setLocation(location(yyStart));
37638:
37639: return yyResult.createValue(yyValue,
37640: yyError);
37641: }
37642: } else {
37643: yyError = yyError.select("\":\" expected",
37644: yyBase);
37645: }
37646: }
37647: } else {
37648: yyError = yyError.select("\"?\" expected", yyBase);
37649: }
37650: }
37651:
37652: // Alternative <Base>.
37653:
37654: yyResult = pDebuggerJava$LogicalOrExpression(yyStart);
37655: yyError = yyResult.select(yyError);
37656: if (yyResult.hasValue()) {
37657: yyValue = yyResult.semanticValue();
37658:
37659: return yyResult.createValue(yyValue, yyError);
37660: }
37661:
37662: // Done.
37663: return yyError;
37664: }
37665:
37666: // =========================================================================
37667:
37668: /**
37669: * Parse nonterminal xtc.lang.jeannie.DebuggerJava.LogicalOrExpression.
37670: *
37671: * @param yyStart The index.
37672: * @return The result.
37673: * @throws IOException Signals an I/O error.
37674: */
37675: private Result pDebuggerJava$LogicalOrExpression(final int yyStart)
37676: throws IOException {
37677:
37678: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
37679: if (null == yyColumn.chunk13)
37680: yyColumn.chunk13 = new Chunk13();
37681: if (null == yyColumn.chunk13.fDebuggerJava$LogicalOrExpression)
37682: yyColumn.chunk13.fDebuggerJava$LogicalOrExpression = pDebuggerJava$LogicalOrExpression$1(yyStart);
37683: return yyColumn.chunk13.fDebuggerJava$LogicalOrExpression;
37684: }
37685:
37686: /** Actually parse xtc.lang.jeannie.DebuggerJava.LogicalOrExpression. */
37687: private Result pDebuggerJava$LogicalOrExpression$1(final int yyStart)
37688: throws IOException {
37689:
37690: Result yyResult;
37691: int yyRepetition1;
37692: Pair<Action<Node>> yyRepValue1;
37693: Node yyValue;
37694: ParseError yyError = ParseError.DUMMY;
37695:
37696: // Alternative <Base>.
37697:
37698: yyResult = pDebuggerJava$LogicalAndExpression(yyStart);
37699: yyError = yyResult.select(yyError);
37700: if (yyResult.hasValue()) {
37701: final Node v$3 = yyResult.semanticValue();
37702:
37703: yyRepetition1 = yyResult.index;
37704: yyRepValue1 = Pair.empty();
37705: while (true) {
37706:
37707: yyResult = pDebuggerJava$LogicalOrExpression$$Tail1(yyRepetition1);
37708: yyError = yyResult.select(yyError);
37709: if (yyResult.hasValue()) {
37710: final Action<Node> v$4 = yyResult.semanticValue();
37711:
37712: yyRepetition1 = yyResult.index;
37713: yyRepValue1 = new Pair<Action<Node>>(v$4,
37714: yyRepValue1);
37715: continue;
37716: }
37717: break;
37718: }
37719: { // Start scope for v$5.
37720: final Pair<Action<Node>> v$5 = yyRepValue1.reverse();
37721:
37722: yyValue = apply(v$5, v$3, yyStart);
37723:
37724: return new SemanticValue(yyValue, yyRepetition1,
37725: yyError);
37726: } // End scope for v$5.
37727: }
37728:
37729: // Done.
37730: return yyError;
37731: }
37732:
37733: // =========================================================================
37734:
37735: /**
37736: * Parse synthetic nonterminal DebuggerJava.LogicalOrExpression$$Tail1.
37737: *
37738: * @param yyStart The index.
37739: * @return The result.
37740: * @throws IOException Signals an I/O error.
37741: */
37742: private Result pDebuggerJava$LogicalOrExpression$$Tail1(
37743: final int yyStart) throws IOException {
37744:
37745: Result yyResult;
37746: Action<Node> yyValue;
37747: ParseError yyError = ParseError.DUMMY;
37748:
37749: // Alternative <Or>.
37750:
37751: yyResult = pSymbol(yyStart);
37752: yyError = yyResult.select(yyError);
37753: if (yyResult.hasValue("||")) {
37754:
37755: yyResult = pDebuggerJava$LogicalAndExpression(yyResult.index);
37756: yyError = yyResult.select(yyError);
37757: if (yyResult.hasValue()) {
37758: final Node v$g$2 = yyResult.semanticValue();
37759:
37760: yyValue = new Action<Node>() {
37761: public Node run(Node v$1) {
37762: return GNode.create("LogicalOrExpression", v$1,
37763: v$g$2);
37764: }
37765: };
37766:
37767: return yyResult.createValue(yyValue, yyError);
37768: }
37769: }
37770:
37771: // Done.
37772: yyError = yyError.select("logical or expression expected",
37773: yyStart);
37774: return yyError;
37775: }
37776:
37777: // =========================================================================
37778:
37779: /**
37780: * Parse nonterminal xtc.lang.jeannie.DebuggerJava.LogicalAndExpression.
37781: *
37782: * @param yyStart The index.
37783: * @return The result.
37784: * @throws IOException Signals an I/O error.
37785: */
37786: private Result pDebuggerJava$LogicalAndExpression(final int yyStart)
37787: throws IOException {
37788:
37789: Result yyResult;
37790: int yyRepetition1;
37791: Pair<Action<Node>> yyRepValue1;
37792: Node yyValue;
37793: ParseError yyError = ParseError.DUMMY;
37794:
37795: // Alternative <Base>.
37796:
37797: yyResult = pDebuggerJava$BitwiseOrExpression(yyStart);
37798: yyError = yyResult.select(yyError);
37799: if (yyResult.hasValue()) {
37800: final Node v$3 = yyResult.semanticValue();
37801:
37802: yyRepetition1 = yyResult.index;
37803: yyRepValue1 = Pair.empty();
37804: while (true) {
37805:
37806: yyResult = pDebuggerJava$LogicalAndExpression$$Tail1(yyRepetition1);
37807: yyError = yyResult.select(yyError);
37808: if (yyResult.hasValue()) {
37809: final Action<Node> v$4 = yyResult.semanticValue();
37810:
37811: yyRepetition1 = yyResult.index;
37812: yyRepValue1 = new Pair<Action<Node>>(v$4,
37813: yyRepValue1);
37814: continue;
37815: }
37816: break;
37817: }
37818: { // Start scope for v$5.
37819: final Pair<Action<Node>> v$5 = yyRepValue1.reverse();
37820:
37821: yyValue = apply(v$5, v$3, yyStart);
37822:
37823: return new SemanticValue(yyValue, yyRepetition1,
37824: yyError);
37825: } // End scope for v$5.
37826: }
37827:
37828: // Done.
37829: return yyError;
37830: }
37831:
37832: // =========================================================================
37833:
37834: /**
37835: * Parse synthetic nonterminal DebuggerJava.LogicalAndExpression$$Tail1.
37836: *
37837: * @param yyStart The index.
37838: * @return The result.
37839: * @throws IOException Signals an I/O error.
37840: */
37841: private Result pDebuggerJava$LogicalAndExpression$$Tail1(
37842: final int yyStart) throws IOException {
37843:
37844: Result yyResult;
37845: Action<Node> yyValue;
37846: ParseError yyError = ParseError.DUMMY;
37847:
37848: // Alternative <And>.
37849:
37850: yyResult = pSymbol(yyStart);
37851: yyError = yyResult.select(yyError);
37852: if (yyResult.hasValue("&&")) {
37853:
37854: yyResult = pDebuggerJava$BitwiseOrExpression(yyResult.index);
37855: yyError = yyResult.select(yyError);
37856: if (yyResult.hasValue()) {
37857: final Node v$g$2 = yyResult.semanticValue();
37858:
37859: yyValue = new Action<Node>() {
37860: public Node run(Node v$1) {
37861: return GNode.create("LogicalAndExpression",
37862: v$1, v$g$2);
37863: }
37864: };
37865:
37866: return yyResult.createValue(yyValue, yyError);
37867: }
37868: }
37869:
37870: // Done.
37871: yyError = yyError.select("logical and expression expected",
37872: yyStart);
37873: return yyError;
37874: }
37875:
37876: // =========================================================================
37877:
37878: /**
37879: * Parse nonterminal xtc.lang.jeannie.DebuggerJava.BitwiseOrExpression.
37880: *
37881: * @param yyStart The index.
37882: * @return The result.
37883: * @throws IOException Signals an I/O error.
37884: */
37885: private Result pDebuggerJava$BitwiseOrExpression(final int yyStart)
37886: throws IOException {
37887:
37888: Result yyResult;
37889: int yyRepetition1;
37890: Pair<Action<Node>> yyRepValue1;
37891: Node yyValue;
37892: ParseError yyError = ParseError.DUMMY;
37893:
37894: // Alternative <Base>.
37895:
37896: yyResult = pDebuggerJava$BitwiseXorExpression(yyStart);
37897: yyError = yyResult.select(yyError);
37898: if (yyResult.hasValue()) {
37899: final Node v$3 = yyResult.semanticValue();
37900:
37901: yyRepetition1 = yyResult.index;
37902: yyRepValue1 = Pair.empty();
37903: while (true) {
37904:
37905: yyResult = pDebuggerJava$BitwiseOrExpression$$Tail1(yyRepetition1);
37906: yyError = yyResult.select(yyError);
37907: if (yyResult.hasValue()) {
37908: final Action<Node> v$4 = yyResult.semanticValue();
37909:
37910: yyRepetition1 = yyResult.index;
37911: yyRepValue1 = new Pair<Action<Node>>(v$4,
37912: yyRepValue1);
37913: continue;
37914: }
37915: break;
37916: }
37917: { // Start scope for v$5.
37918: final Pair<Action<Node>> v$5 = yyRepValue1.reverse();
37919:
37920: yyValue = apply(v$5, v$3, yyStart);
37921:
37922: return new SemanticValue(yyValue, yyRepetition1,
37923: yyError);
37924: } // End scope for v$5.
37925: }
37926:
37927: // Done.
37928: return yyError;
37929: }
37930:
37931: // =========================================================================
37932:
37933: /**
37934: * Parse synthetic nonterminal DebuggerJava.BitwiseOrExpression$$Tail1.
37935: *
37936: * @param yyStart The index.
37937: * @return The result.
37938: * @throws IOException Signals an I/O error.
37939: */
37940: private Result pDebuggerJava$BitwiseOrExpression$$Tail1(
37941: final int yyStart) throws IOException {
37942:
37943: Result yyResult;
37944: Action<Node> yyValue;
37945: ParseError yyError = ParseError.DUMMY;
37946:
37947: // Alternative <Or>.
37948:
37949: yyResult = pSymbol(yyStart);
37950: yyError = yyResult.select(yyError);
37951: if (yyResult.hasValue("|")) {
37952:
37953: yyResult = pDebuggerJava$BitwiseXorExpression(yyResult.index);
37954: yyError = yyResult.select(yyError);
37955: if (yyResult.hasValue()) {
37956: final Node v$g$2 = yyResult.semanticValue();
37957:
37958: yyValue = new Action<Node>() {
37959: public Node run(Node v$1) {
37960: return GNode.create("BitwiseOrExpression", v$1,
37961: v$g$2);
37962: }
37963: };
37964:
37965: return yyResult.createValue(yyValue, yyError);
37966: }
37967: }
37968:
37969: // Done.
37970: yyError = yyError.select("bitwise or expression expected",
37971: yyStart);
37972: return yyError;
37973: }
37974:
37975: // =========================================================================
37976:
37977: /**
37978: * Parse nonterminal xtc.lang.jeannie.DebuggerJava.BitwiseXorExpression.
37979: *
37980: * @param yyStart The index.
37981: * @return The result.
37982: * @throws IOException Signals an I/O error.
37983: */
37984: private Result pDebuggerJava$BitwiseXorExpression(final int yyStart)
37985: throws IOException {
37986:
37987: Result yyResult;
37988: int yyRepetition1;
37989: Pair<Action<Node>> yyRepValue1;
37990: Node yyValue;
37991: ParseError yyError = ParseError.DUMMY;
37992:
37993: // Alternative <Base>.
37994:
37995: yyResult = pDebuggerJava$BitwiseAndExpression(yyStart);
37996: yyError = yyResult.select(yyError);
37997: if (yyResult.hasValue()) {
37998: final Node v$3 = yyResult.semanticValue();
37999:
38000: yyRepetition1 = yyResult.index;
38001: yyRepValue1 = Pair.empty();
38002: while (true) {
38003:
38004: yyResult = pDebuggerJava$BitwiseXorExpression$$Tail1(yyRepetition1);
38005: yyError = yyResult.select(yyError);
38006: if (yyResult.hasValue()) {
38007: final Action<Node> v$4 = yyResult.semanticValue();
38008:
38009: yyRepetition1 = yyResult.index;
38010: yyRepValue1 = new Pair<Action<Node>>(v$4,
38011: yyRepValue1);
38012: continue;
38013: }
38014: break;
38015: }
38016: { // Start scope for v$5.
38017: final Pair<Action<Node>> v$5 = yyRepValue1.reverse();
38018:
38019: yyValue = apply(v$5, v$3, yyStart);
38020:
38021: return new SemanticValue(yyValue, yyRepetition1,
38022: yyError);
38023: } // End scope for v$5.
38024: }
38025:
38026: // Done.
38027: return yyError;
38028: }
38029:
38030: // =========================================================================
38031:
38032: /**
38033: * Parse synthetic nonterminal DebuggerJava.BitwiseXorExpression$$Tail1.
38034: *
38035: * @param yyStart The index.
38036: * @return The result.
38037: * @throws IOException Signals an I/O error.
38038: */
38039: private Result pDebuggerJava$BitwiseXorExpression$$Tail1(
38040: final int yyStart) throws IOException {
38041:
38042: Result yyResult;
38043: Action<Node> yyValue;
38044: ParseError yyError = ParseError.DUMMY;
38045:
38046: // Alternative <Xor>.
38047:
38048: yyResult = pSymbol(yyStart);
38049: yyError = yyResult.select(yyError);
38050: if (yyResult.hasValue("^")) {
38051:
38052: yyResult = pDebuggerJava$BitwiseAndExpression(yyResult.index);
38053: yyError = yyResult.select(yyError);
38054: if (yyResult.hasValue()) {
38055: final Node v$g$2 = yyResult.semanticValue();
38056:
38057: yyValue = new Action<Node>() {
38058: public Node run(Node v$1) {
38059: return GNode.create("BitwiseXorExpression",
38060: v$1, v$g$2);
38061: }
38062: };
38063:
38064: return yyResult.createValue(yyValue, yyError);
38065: }
38066: }
38067:
38068: // Done.
38069: yyError = yyError.select("bitwise xor expression expected",
38070: yyStart);
38071: return yyError;
38072: }
38073:
38074: // =========================================================================
38075:
38076: /**
38077: * Parse nonterminal xtc.lang.jeannie.DebuggerJava.BitwiseAndExpression.
38078: *
38079: * @param yyStart The index.
38080: * @return The result.
38081: * @throws IOException Signals an I/O error.
38082: */
38083: private Result pDebuggerJava$BitwiseAndExpression(final int yyStart)
38084: throws IOException {
38085:
38086: Result yyResult;
38087: int yyRepetition1;
38088: Pair<Action<Node>> yyRepValue1;
38089: Node yyValue;
38090: ParseError yyError = ParseError.DUMMY;
38091:
38092: // Alternative <Base>.
38093:
38094: yyResult = pDebuggerJava$EqualityExpression(yyStart);
38095: yyError = yyResult.select(yyError);
38096: if (yyResult.hasValue()) {
38097: final Node v$3 = yyResult.semanticValue();
38098:
38099: yyRepetition1 = yyResult.index;
38100: yyRepValue1 = Pair.empty();
38101: while (true) {
38102:
38103: yyResult = pDebuggerJava$BitwiseAndExpression$$Tail1(yyRepetition1);
38104: yyError = yyResult.select(yyError);
38105: if (yyResult.hasValue()) {
38106: final Action<Node> v$4 = yyResult.semanticValue();
38107:
38108: yyRepetition1 = yyResult.index;
38109: yyRepValue1 = new Pair<Action<Node>>(v$4,
38110: yyRepValue1);
38111: continue;
38112: }
38113: break;
38114: }
38115: { // Start scope for v$5.
38116: final Pair<Action<Node>> v$5 = yyRepValue1.reverse();
38117:
38118: yyValue = apply(v$5, v$3, yyStart);
38119:
38120: return new SemanticValue(yyValue, yyRepetition1,
38121: yyError);
38122: } // End scope for v$5.
38123: }
38124:
38125: // Done.
38126: return yyError;
38127: }
38128:
38129: // =========================================================================
38130:
38131: /**
38132: * Parse synthetic nonterminal DebuggerJava.BitwiseAndExpression$$Tail1.
38133: *
38134: * @param yyStart The index.
38135: * @return The result.
38136: * @throws IOException Signals an I/O error.
38137: */
38138: private Result pDebuggerJava$BitwiseAndExpression$$Tail1(
38139: final int yyStart) throws IOException {
38140:
38141: Result yyResult;
38142: Action<Node> yyValue;
38143: ParseError yyError = ParseError.DUMMY;
38144:
38145: // Alternative <And>.
38146:
38147: yyResult = pSymbol(yyStart);
38148: yyError = yyResult.select(yyError);
38149: if (yyResult.hasValue("&")) {
38150:
38151: yyResult = pDebuggerJava$EqualityExpression(yyResult.index);
38152: yyError = yyResult.select(yyError);
38153: if (yyResult.hasValue()) {
38154: final Node v$g$2 = yyResult.semanticValue();
38155:
38156: yyValue = new Action<Node>() {
38157: public Node run(Node v$1) {
38158: return GNode.create("BitwiseAndExpression",
38159: v$1, v$g$2);
38160: }
38161: };
38162:
38163: return yyResult.createValue(yyValue, yyError);
38164: }
38165: }
38166:
38167: // Done.
38168: yyError = yyError.select("bitwise and expression expected",
38169: yyStart);
38170: return yyError;
38171: }
38172:
38173: // =========================================================================
38174:
38175: /**
38176: * Parse nonterminal xtc.lang.jeannie.DebuggerJava.EqualityExpression.
38177: *
38178: * @param yyStart The index.
38179: * @return The result.
38180: * @throws IOException Signals an I/O error.
38181: */
38182: private Result pDebuggerJava$EqualityExpression(final int yyStart)
38183: throws IOException {
38184:
38185: Result yyResult;
38186: int yyRepetition1;
38187: Pair<Action<Node>> yyRepValue1;
38188: Node yyValue;
38189: ParseError yyError = ParseError.DUMMY;
38190:
38191: // Alternative <Base>.
38192:
38193: yyResult = pDebuggerJava$InstanceOfExpression(yyStart);
38194: yyError = yyResult.select(yyError);
38195: if (yyResult.hasValue()) {
38196: final Node v$4 = yyResult.semanticValue();
38197:
38198: yyRepetition1 = yyResult.index;
38199: yyRepValue1 = Pair.empty();
38200: while (true) {
38201:
38202: yyResult = pDebuggerJava$EqualityExpression$$Tail1(yyRepetition1);
38203: yyError = yyResult.select(yyError);
38204: if (yyResult.hasValue()) {
38205: final Action<Node> v$5 = yyResult.semanticValue();
38206:
38207: yyRepetition1 = yyResult.index;
38208: yyRepValue1 = new Pair<Action<Node>>(v$5,
38209: yyRepValue1);
38210: continue;
38211: }
38212: break;
38213: }
38214: { // Start scope for v$6.
38215: final Pair<Action<Node>> v$6 = yyRepValue1.reverse();
38216:
38217: yyValue = apply(v$6, v$4, yyStart);
38218:
38219: return new SemanticValue(yyValue, yyRepetition1,
38220: yyError);
38221: } // End scope for v$6.
38222: }
38223:
38224: // Done.
38225: return yyError;
38226: }
38227:
38228: // =========================================================================
38229:
38230: /**
38231: * Parse synthetic nonterminal DebuggerJava.EqualityExpression$$Tail1.
38232: *
38233: * @param yyStart The index.
38234: * @return The result.
38235: * @throws IOException Signals an I/O error.
38236: */
38237: private Result pDebuggerJava$EqualityExpression$$Tail1(
38238: final int yyStart) throws IOException {
38239:
38240: Result yyResult;
38241: Action<Node> yyValue;
38242: ParseError yyError = ParseError.DUMMY;
38243:
38244: // Alternative <Recursion>.
38245:
38246: yyResult = p$$Shared12(yyStart);
38247: yyError = yyResult.select(yyError);
38248: if (yyResult.hasValue()) {
38249: final String v$g$2 = yyResult.semanticValue();
38250:
38251: yyResult = pDebuggerJava$InstanceOfExpression(yyResult.index);
38252: yyError = yyResult.select(yyError);
38253: if (yyResult.hasValue()) {
38254: final Node v$g$3 = yyResult.semanticValue();
38255:
38256: yyValue = new Action<Node>() {
38257: public Node run(Node v$1) {
38258: return GNode.create("EqualityExpression", v$1,
38259: v$g$2, v$g$3);
38260: }
38261: };
38262:
38263: return yyResult.createValue(yyValue, yyError);
38264: }
38265: }
38266:
38267: // Done.
38268: return yyError;
38269: }
38270:
38271: // =========================================================================
38272:
38273: /**
38274: * Parse nonterminal xtc.lang.jeannie.DebuggerJava.InstanceOfExpression.
38275: *
38276: * @param yyStart The index.
38277: * @return The result.
38278: * @throws IOException Signals an I/O error.
38279: */
38280: private Result pDebuggerJava$InstanceOfExpression(final int yyStart)
38281: throws IOException {
38282:
38283: Result yyResult;
38284: int yyBase;
38285: Node yyValue;
38286: ParseError yyError = ParseError.DUMMY;
38287:
38288: // Alternative <Instanceof>.
38289:
38290: yyResult = pDebuggerJava$RelationalExpression(yyStart);
38291: yyError = yyResult.select(yyError);
38292: if (yyResult.hasValue()) {
38293: final Node v$g$1 = yyResult.semanticValue();
38294:
38295: yyBase = yyResult.index;
38296: yyResult = pJavaIdentifier$Word(yyBase);
38297: yyError = yyResult.select(yyError);
38298: if (yyResult.hasValue("instanceof")) {
38299:
38300: yyResult = pType(yyResult.index);
38301: yyError = yyResult.select(yyError);
38302: if (yyResult.hasValue()) {
38303: final Node v$g$2 = yyResult.semanticValue();
38304:
38305: yyValue = GNode.create("InstanceOfExpression",
38306: v$g$1, v$g$2);
38307: yyValue.setLocation(location(yyStart));
38308:
38309: return yyResult.createValue(yyValue, yyError);
38310: }
38311: } else {
38312: yyError = yyError.select("\"instanceof\" expected",
38313: yyBase);
38314: }
38315: }
38316:
38317: // Alternative <Base>.
38318:
38319: yyResult = pDebuggerJava$RelationalExpression(yyStart);
38320: yyError = yyResult.select(yyError);
38321: if (yyResult.hasValue()) {
38322: yyValue = yyResult.semanticValue();
38323:
38324: return yyResult.createValue(yyValue, yyError);
38325: }
38326:
38327: // Done.
38328: return yyError;
38329: }
38330:
38331: // =========================================================================
38332:
38333: /**
38334: * Parse nonterminal xtc.lang.jeannie.DebuggerJava.RelationalExpression.
38335: *
38336: * @param yyStart The index.
38337: * @return The result.
38338: * @throws IOException Signals an I/O error.
38339: */
38340: private Result pDebuggerJava$RelationalExpression(final int yyStart)
38341: throws IOException {
38342:
38343: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
38344: if (null == yyColumn.chunk13)
38345: yyColumn.chunk13 = new Chunk13();
38346: if (null == yyColumn.chunk13.fDebuggerJava$RelationalExpression)
38347: yyColumn.chunk13.fDebuggerJava$RelationalExpression = pDebuggerJava$RelationalExpression$1(yyStart);
38348: return yyColumn.chunk13.fDebuggerJava$RelationalExpression;
38349: }
38350:
38351: /** Actually parse xtc.lang.jeannie.DebuggerJava.RelationalExpression. */
38352: private Result pDebuggerJava$RelationalExpression$1(
38353: final int yyStart) throws IOException {
38354:
38355: Result yyResult;
38356: int yyRepetition1;
38357: Pair<Action<Node>> yyRepValue1;
38358: Node yyValue;
38359: ParseError yyError = ParseError.DUMMY;
38360:
38361: // Alternative <Base>.
38362:
38363: yyResult = pDebuggerJava$ShiftExpression(yyStart);
38364: yyError = yyResult.select(yyError);
38365: if (yyResult.hasValue()) {
38366: final Node v$4 = yyResult.semanticValue();
38367:
38368: yyRepetition1 = yyResult.index;
38369: yyRepValue1 = Pair.empty();
38370: while (true) {
38371:
38372: yyResult = pDebuggerJava$RelationalExpression$$Tail1(yyRepetition1);
38373: yyError = yyResult.select(yyError);
38374: if (yyResult.hasValue()) {
38375: final Action<Node> v$5 = yyResult.semanticValue();
38376:
38377: yyRepetition1 = yyResult.index;
38378: yyRepValue1 = new Pair<Action<Node>>(v$5,
38379: yyRepValue1);
38380: continue;
38381: }
38382: break;
38383: }
38384: { // Start scope for v$6.
38385: final Pair<Action<Node>> v$6 = yyRepValue1.reverse();
38386:
38387: yyValue = apply(v$6, v$4, yyStart);
38388:
38389: return new SemanticValue(yyValue, yyRepetition1,
38390: yyError);
38391: } // End scope for v$6.
38392: }
38393:
38394: // Done.
38395: return yyError;
38396: }
38397:
38398: // =========================================================================
38399:
38400: /**
38401: * Parse synthetic nonterminal DebuggerJava.RelationalExpression$$Tail1.
38402: *
38403: * @param yyStart The index.
38404: * @return The result.
38405: * @throws IOException Signals an I/O error.
38406: */
38407: private Result pDebuggerJava$RelationalExpression$$Tail1(
38408: final int yyStart) throws IOException {
38409:
38410: Result yyResult;
38411: Action<Node> yyValue;
38412: ParseError yyError = ParseError.DUMMY;
38413:
38414: // Alternative <Recursion>.
38415:
38416: yyResult = p$$Shared22(yyStart);
38417: yyError = yyResult.select(yyError);
38418: if (yyResult.hasValue()) {
38419: final String v$g$2 = yyResult.semanticValue();
38420:
38421: yyResult = pDebuggerJava$ShiftExpression(yyResult.index);
38422: yyError = yyResult.select(yyError);
38423: if (yyResult.hasValue()) {
38424: final Node v$g$3 = yyResult.semanticValue();
38425:
38426: yyValue = new Action<Node>() {
38427: public Node run(Node v$1) {
38428: return GNode.create("RelationalExpression",
38429: v$1, v$g$2, v$g$3);
38430: }
38431: };
38432:
38433: return yyResult.createValue(yyValue, yyError);
38434: }
38435: }
38436:
38437: // Done.
38438: return yyError;
38439: }
38440:
38441: // =========================================================================
38442:
38443: /**
38444: * Parse nonterminal xtc.lang.jeannie.DebuggerJava.ShiftExpression.
38445: *
38446: * @param yyStart The index.
38447: * @return The result.
38448: * @throws IOException Signals an I/O error.
38449: */
38450: private Result pDebuggerJava$ShiftExpression(final int yyStart)
38451: throws IOException {
38452:
38453: Result yyResult;
38454: int yyRepetition1;
38455: Pair<Action<Node>> yyRepValue1;
38456: Node yyValue;
38457: ParseError yyError = ParseError.DUMMY;
38458:
38459: // Alternative <Base>.
38460:
38461: yyResult = pDebuggerJava$AdditiveExpression(yyStart);
38462: yyError = yyResult.select(yyError);
38463: if (yyResult.hasValue()) {
38464: final Node v$4 = yyResult.semanticValue();
38465:
38466: yyRepetition1 = yyResult.index;
38467: yyRepValue1 = Pair.empty();
38468: while (true) {
38469:
38470: yyResult = pDebuggerJava$ShiftExpression$$Tail1(yyRepetition1);
38471: yyError = yyResult.select(yyError);
38472: if (yyResult.hasValue()) {
38473: final Action<Node> v$5 = yyResult.semanticValue();
38474:
38475: yyRepetition1 = yyResult.index;
38476: yyRepValue1 = new Pair<Action<Node>>(v$5,
38477: yyRepValue1);
38478: continue;
38479: }
38480: break;
38481: }
38482: { // Start scope for v$6.
38483: final Pair<Action<Node>> v$6 = yyRepValue1.reverse();
38484:
38485: yyValue = apply(v$6, v$4, yyStart);
38486:
38487: return new SemanticValue(yyValue, yyRepetition1,
38488: yyError);
38489: } // End scope for v$6.
38490: }
38491:
38492: // Done.
38493: return yyError;
38494: }
38495:
38496: // =========================================================================
38497:
38498: /**
38499: * Parse synthetic nonterminal DebuggerJava.ShiftExpression$$Tail1.
38500: *
38501: * @param yyStart The index.
38502: * @return The result.
38503: * @throws IOException Signals an I/O error.
38504: */
38505: private Result pDebuggerJava$ShiftExpression$$Tail1(
38506: final int yyStart) throws IOException {
38507:
38508: Result yyResult;
38509: Action<Node> yyValue;
38510: ParseError yyError = ParseError.DUMMY;
38511:
38512: // Alternative <Recursion>.
38513:
38514: yyResult = p$$Shared23(yyStart);
38515: yyError = yyResult.select(yyError);
38516: if (yyResult.hasValue()) {
38517: final String v$g$2 = yyResult.semanticValue();
38518:
38519: yyResult = pDebuggerJava$AdditiveExpression(yyResult.index);
38520: yyError = yyResult.select(yyError);
38521: if (yyResult.hasValue()) {
38522: final Node v$g$3 = yyResult.semanticValue();
38523:
38524: yyValue = new Action<Node>() {
38525: public Node run(Node v$1) {
38526: return GNode.create("ShiftExpression", v$1,
38527: v$g$2, v$g$3);
38528: }
38529: };
38530:
38531: return yyResult.createValue(yyValue, yyError);
38532: }
38533: }
38534:
38535: // Done.
38536: return yyError;
38537: }
38538:
38539: // =========================================================================
38540:
38541: /**
38542: * Parse nonterminal xtc.lang.jeannie.DebuggerJava.AdditiveExpression.
38543: *
38544: * @param yyStart The index.
38545: * @return The result.
38546: * @throws IOException Signals an I/O error.
38547: */
38548: private Result pDebuggerJava$AdditiveExpression(final int yyStart)
38549: throws IOException {
38550:
38551: Result yyResult;
38552: int yyRepetition1;
38553: Pair<Action<Node>> yyRepValue1;
38554: Node yyValue;
38555: ParseError yyError = ParseError.DUMMY;
38556:
38557: // Alternative <Base>.
38558:
38559: yyResult = pDebuggerJava$MultiplicativeExpression(yyStart);
38560: yyError = yyResult.select(yyError);
38561: if (yyResult.hasValue()) {
38562: final Node v$4 = yyResult.semanticValue();
38563:
38564: yyRepetition1 = yyResult.index;
38565: yyRepValue1 = Pair.empty();
38566: while (true) {
38567:
38568: yyResult = pDebuggerJava$AdditiveExpression$$Tail1(yyRepetition1);
38569: yyError = yyResult.select(yyError);
38570: if (yyResult.hasValue()) {
38571: final Action<Node> v$5 = yyResult.semanticValue();
38572:
38573: yyRepetition1 = yyResult.index;
38574: yyRepValue1 = new Pair<Action<Node>>(v$5,
38575: yyRepValue1);
38576: continue;
38577: }
38578: break;
38579: }
38580: { // Start scope for v$6.
38581: final Pair<Action<Node>> v$6 = yyRepValue1.reverse();
38582:
38583: yyValue = apply(v$6, v$4, yyStart);
38584:
38585: return new SemanticValue(yyValue, yyRepetition1,
38586: yyError);
38587: } // End scope for v$6.
38588: }
38589:
38590: // Done.
38591: return yyError;
38592: }
38593:
38594: // =========================================================================
38595:
38596: /**
38597: * Parse synthetic nonterminal DebuggerJava.AdditiveExpression$$Tail1.
38598: *
38599: * @param yyStart The index.
38600: * @return The result.
38601: * @throws IOException Signals an I/O error.
38602: */
38603: private Result pDebuggerJava$AdditiveExpression$$Tail1(
38604: final int yyStart) throws IOException {
38605:
38606: Result yyResult;
38607: Action<Node> yyValue;
38608: ParseError yyError = ParseError.DUMMY;
38609:
38610: // Alternative <Recursion>.
38611:
38612: yyResult = p$$Shared15(yyStart);
38613: yyError = yyResult.select(yyError);
38614: if (yyResult.hasValue()) {
38615: final String v$g$2 = yyResult.semanticValue();
38616:
38617: yyResult = pDebuggerJava$MultiplicativeExpression(yyResult.index);
38618: yyError = yyResult.select(yyError);
38619: if (yyResult.hasValue()) {
38620: final Node v$g$3 = yyResult.semanticValue();
38621:
38622: yyValue = new Action<Node>() {
38623: public Node run(Node v$1) {
38624: return GNode.create("AdditiveExpression", v$1,
38625: v$g$2, v$g$3);
38626: }
38627: };
38628:
38629: return yyResult.createValue(yyValue, yyError);
38630: }
38631: }
38632:
38633: // Done.
38634: return yyError;
38635: }
38636:
38637: // =========================================================================
38638:
38639: /**
38640: * Parse nonterminal xtc.lang.jeannie.DebuggerJava.MultiplicativeExpression.
38641: *
38642: * @param yyStart The index.
38643: * @return The result.
38644: * @throws IOException Signals an I/O error.
38645: */
38646: private Result pDebuggerJava$MultiplicativeExpression(
38647: final int yyStart) throws IOException {
38648:
38649: Result yyResult;
38650: int yyRepetition1;
38651: Pair<Action<Node>> yyRepValue1;
38652: Node yyValue;
38653: ParseError yyError = ParseError.DUMMY;
38654:
38655: // Alternative <Base>.
38656:
38657: yyResult = pDebuggerJava$UnaryExpression(yyStart);
38658: yyError = yyResult.select(yyError);
38659: if (yyResult.hasValue()) {
38660: final Node v$4 = yyResult.semanticValue();
38661:
38662: yyRepetition1 = yyResult.index;
38663: yyRepValue1 = Pair.empty();
38664: while (true) {
38665:
38666: yyResult = pDebuggerJava$MultiplicativeExpression$$Tail1(yyRepetition1);
38667: yyError = yyResult.select(yyError);
38668: if (yyResult.hasValue()) {
38669: final Action<Node> v$5 = yyResult.semanticValue();
38670:
38671: yyRepetition1 = yyResult.index;
38672: yyRepValue1 = new Pair<Action<Node>>(v$5,
38673: yyRepValue1);
38674: continue;
38675: }
38676: break;
38677: }
38678: { // Start scope for v$6.
38679: final Pair<Action<Node>> v$6 = yyRepValue1.reverse();
38680:
38681: yyValue = apply(v$6, v$4, yyStart);
38682:
38683: return new SemanticValue(yyValue, yyRepetition1,
38684: yyError);
38685: } // End scope for v$6.
38686: }
38687:
38688: // Done.
38689: return yyError;
38690: }
38691:
38692: // =========================================================================
38693:
38694: /**
38695: * Parse synthetic nonterminal DebuggerJava.MultiplicativeExpression$$Tail1.
38696: *
38697: * @param yyStart The index.
38698: * @return The result.
38699: * @throws IOException Signals an I/O error.
38700: */
38701: private Result pDebuggerJava$MultiplicativeExpression$$Tail1(
38702: final int yyStart) throws IOException {
38703:
38704: Result yyResult;
38705: Action<Node> yyValue;
38706: ParseError yyError = ParseError.DUMMY;
38707:
38708: // Alternative <Times>.
38709:
38710: yyResult = p$$Shared16(yyStart);
38711: yyError = yyResult.select(yyError);
38712: if (yyResult.hasValue()) {
38713: final String v$g$2 = yyResult.semanticValue();
38714:
38715: yyResult = pDebuggerJava$UnaryExpression(yyResult.index);
38716: yyError = yyResult.select(yyError);
38717: if (yyResult.hasValue()) {
38718: final Node v$g$3 = yyResult.semanticValue();
38719:
38720: yyValue = new Action<Node>() {
38721: public Node run(Node v$1) {
38722: return GNode.create("MultiplicativeExpression",
38723: v$1, v$g$2, v$g$3);
38724: }
38725: };
38726:
38727: return yyResult.createValue(yyValue, yyError);
38728: }
38729: }
38730:
38731: // Done.
38732: return yyError;
38733: }
38734:
38735: // =========================================================================
38736:
38737: /**
38738: * Parse nonterminal xtc.lang.jeannie.DebuggerJava.UnaryExpression.
38739: *
38740: * @param yyStart The index.
38741: * @return The result.
38742: * @throws IOException Signals an I/O error.
38743: */
38744: private Result pDebuggerJava$UnaryExpression(final int yyStart)
38745: throws IOException {
38746:
38747: Result yyResult;
38748: Node yyValue;
38749: ParseError yyError = ParseError.DUMMY;
38750:
38751: // Alternative <Plus>.
38752:
38753: yyResult = pSymbol(yyStart);
38754: yyError = yyResult.select(yyError);
38755: if (yyResult.hasValue("+")) {
38756: final String v$g$1 = "+";
38757:
38758: yyResult = pDebuggerJava$UnaryExpression(yyResult.index);
38759: yyError = yyResult.select(yyError);
38760: if (yyResult.hasValue()) {
38761: final Node v$g$2 = yyResult.semanticValue();
38762:
38763: yyValue = GNode.create("UnaryExpression", v$g$1, v$g$2);
38764: yyValue.setLocation(location(yyStart));
38765:
38766: return yyResult.createValue(yyValue, yyError);
38767: }
38768: }
38769:
38770: // Alternative <Minus>.
38771:
38772: yyResult = pSymbol(yyStart);
38773: yyError = yyResult.select(yyError);
38774: if (yyResult.hasValue("-")) {
38775: final String v$g$3 = "-";
38776:
38777: yyResult = pDebuggerJava$UnaryExpression(yyResult.index);
38778: yyError = yyResult.select(yyError);
38779: if (yyResult.hasValue()) {
38780: final Node v$g$4 = yyResult.semanticValue();
38781:
38782: yyValue = GNode.create("UnaryExpression", v$g$3, v$g$4);
38783: yyValue.setLocation(location(yyStart));
38784:
38785: return yyResult.createValue(yyValue, yyError);
38786: }
38787: }
38788:
38789: // Alternative <Increment>.
38790:
38791: yyResult = pSymbol(yyStart);
38792: yyError = yyResult.select(yyError);
38793: if (yyResult.hasValue("++")) {
38794: final String v$g$5 = "++";
38795:
38796: yyResult = pDebuggerJava$UnaryExpression(yyResult.index);
38797: yyError = yyResult.select(yyError);
38798: if (yyResult.hasValue()) {
38799: final Node v$g$6 = yyResult.semanticValue();
38800:
38801: yyValue = GNode.create("UnaryExpression", v$g$5, v$g$6);
38802: yyValue.setLocation(location(yyStart));
38803:
38804: return yyResult.createValue(yyValue, yyError);
38805: }
38806: }
38807:
38808: // Alternative <Decrement>.
38809:
38810: yyResult = pSymbol(yyStart);
38811: yyError = yyResult.select(yyError);
38812: if (yyResult.hasValue("--")) {
38813: final String v$g$7 = "--";
38814:
38815: yyResult = pDebuggerJava$UnaryExpression(yyResult.index);
38816: yyError = yyResult.select(yyError);
38817: if (yyResult.hasValue()) {
38818: final Node v$g$8 = yyResult.semanticValue();
38819:
38820: yyValue = GNode.create("UnaryExpression", v$g$7, v$g$8);
38821: yyValue.setLocation(location(yyStart));
38822:
38823: return yyResult.createValue(yyValue, yyError);
38824: }
38825: }
38826:
38827: // Alternative <Base>.
38828:
38829: yyResult = pDebuggerJava$UnaryExpressionNotPlusMinus(yyStart);
38830: yyError = yyResult.select(yyError);
38831: if (yyResult.hasValue()) {
38832: yyValue = yyResult.semanticValue();
38833:
38834: return yyResult.createValue(yyValue, yyError);
38835: }
38836:
38837: // Done.
38838: yyError = yyError.select("unary expression expected", yyStart);
38839: return yyError;
38840: }
38841:
38842: // =========================================================================
38843:
38844: /**
38845: * Parse nonterminal
38846: * xtc.lang.jeannie.DebuggerJava.UnaryExpressionNotPlusMinus.
38847: *
38848: * @param yyStart The index.
38849: * @return The result.
38850: * @throws IOException Signals an I/O error.
38851: */
38852: private Result pDebuggerJava$UnaryExpressionNotPlusMinus(
38853: final int yyStart) throws IOException {
38854:
38855: Result yyResult;
38856: int yyBase;
38857: int yyOption1;
38858: Node yyOpValue1;
38859: Node yyValue;
38860: ParseError yyError = ParseError.DUMMY;
38861:
38862: // Alternative 1.
38863:
38864: yyResult = pSymbol(yyStart);
38865: yyError = yyResult.select(yyError);
38866: if (yyResult.hasValue("~")) {
38867:
38868: yyResult = pDebuggerJava$UnaryExpression(yyResult.index);
38869: yyError = yyResult.select(yyError);
38870: if (yyResult.hasValue()) {
38871: final Node v$g$1 = yyResult.semanticValue();
38872:
38873: yyValue = GNode.create("BitwiseNegationExpression",
38874: v$g$1);
38875: yyValue.setLocation(location(yyStart));
38876:
38877: return yyResult.createValue(yyValue, yyError);
38878: }
38879: }
38880:
38881: // Alternative <CInJavaExpression>.
38882:
38883: yyResult = pDebuggerJava$CInJavaExpression(yyStart);
38884: yyError = yyResult.select(yyError);
38885: if (yyResult.hasValue()) {
38886: yyValue = yyResult.semanticValue();
38887:
38888: return yyResult.createValue(yyValue, yyError);
38889: }
38890:
38891: // Alternative 3.
38892:
38893: yyResult = pSymbol(yyStart);
38894: yyError = yyResult.select(yyError);
38895: if (yyResult.hasValue("!")) {
38896:
38897: yyResult = pDebuggerJava$UnaryExpression(yyResult.index);
38898: yyError = yyResult.select(yyError);
38899: if (yyResult.hasValue()) {
38900: final Node v$g$1 = yyResult.semanticValue();
38901:
38902: yyValue = GNode.create("LogicalNegationExpression",
38903: v$g$1);
38904: yyValue.setLocation(location(yyStart));
38905:
38906: return yyResult.createValue(yyValue, yyError);
38907: }
38908: }
38909:
38910: // Alternative 4.
38911:
38912: yyResult = pSymbol(yyStart);
38913: yyError = yyResult.select(yyError);
38914: if (yyResult.hasValue("(")) {
38915:
38916: final int yyChoice1 = yyResult.index;
38917:
38918: // Nested alternative 1.
38919:
38920: yyResult = pPrimitiveType(yyChoice1);
38921: yyError = yyResult.select(yyError);
38922: if (yyResult.hasValue()) {
38923: final Node v$g$1 = yyResult.semanticValue();
38924:
38925: yyOption1 = yyResult.index;
38926: yyOpValue1 = null;
38927:
38928: yyResult = pDimensions(yyOption1);
38929: yyError = yyResult.select(yyError);
38930: if (yyResult.hasValue()) {
38931: final Node v$el$1 = yyResult.semanticValue();
38932:
38933: yyOption1 = yyResult.index;
38934: yyOpValue1 = v$el$1;
38935: }
38936: { // Start scope for v$g$2.
38937: final Node v$g$2 = yyOpValue1;
38938:
38939: yyBase = yyOption1;
38940: yyResult = pSymbol(yyBase);
38941: yyError = yyResult.select(yyError);
38942: if (yyResult.hasValue(")")) {
38943:
38944: yyResult = pDebuggerJava$UnaryExpression(yyResult.index);
38945: yyError = yyResult.select(yyError);
38946: if (yyResult.hasValue()) {
38947: final Node v$g$3 = yyResult.semanticValue();
38948:
38949: yyValue = GNode.create(
38950: "BasicCastExpression", v$g$1,
38951: v$g$2, v$g$3);
38952: yyValue.setLocation(location(yyStart));
38953:
38954: return yyResult.createValue(yyValue,
38955: yyError);
38956: }
38957: } else {
38958: yyError = yyError.select("\")\" expected",
38959: yyBase);
38960: }
38961: } // End scope for v$g$2.
38962: }
38963:
38964: // Nested alternative 2.
38965:
38966: yyResult = pType(yyChoice1);
38967: yyError = yyResult.select(yyError);
38968: if (yyResult.hasValue()) {
38969: final Node v$g$1 = yyResult.semanticValue();
38970:
38971: yyBase = yyResult.index;
38972: yyResult = pSymbol(yyBase);
38973: yyError = yyResult.select(yyError);
38974: if (yyResult.hasValue(")")) {
38975:
38976: yyResult = pDebuggerJava$UnaryExpressionNotPlusMinus(yyResult.index);
38977: yyError = yyResult.select(yyError);
38978: if (yyResult.hasValue()) {
38979: final Node v$g$2 = yyResult.semanticValue();
38980:
38981: yyValue = GNode.create("CastExpression", v$g$1,
38982: v$g$2);
38983: yyValue.setLocation(location(yyStart));
38984:
38985: return yyResult.createValue(yyValue, yyError);
38986: }
38987: } else {
38988: yyError = yyError.select("\")\" expected", yyBase);
38989: }
38990: }
38991: }
38992:
38993: // Alternative <Base>.
38994:
38995: yyResult = pDebuggerJava$PostfixExpression(yyStart);
38996: yyError = yyResult.select(yyError);
38997: if (yyResult.hasValue()) {
38998: yyValue = yyResult.semanticValue();
38999:
39000: return yyResult.createValue(yyValue, yyError);
39001: }
39002:
39003: // Done.
39004: yyError = yyError.select(
39005: "unary expression not plus minus expected", yyStart);
39006: return yyError;
39007: }
39008:
39009: // =========================================================================
39010:
39011: /**
39012: * Parse nonterminal xtc.lang.jeannie.DebuggerJava.PostfixExpression.
39013: *
39014: * @param yyStart The index.
39015: * @return The result.
39016: * @throws IOException Signals an I/O error.
39017: */
39018: private Result pDebuggerJava$PostfixExpression(final int yyStart)
39019: throws IOException {
39020:
39021: Result yyResult;
39022: int yyRepetition1;
39023: Pair<Action<Node>> yyRepValue1;
39024: Node yyValue;
39025: ParseError yyError = ParseError.DUMMY;
39026:
39027: // Alternative <Base>.
39028:
39029: yyResult = pDebuggerJava$PrimaryExpression(yyStart);
39030: yyError = yyResult.select(yyError);
39031: if (yyResult.hasValue()) {
39032: final Node v$g$15 = yyResult.semanticValue();
39033:
39034: yyRepetition1 = yyResult.index;
39035: yyRepValue1 = Pair.empty();
39036: while (true) {
39037:
39038: yyResult = pDebuggerJava$PostfixExpression$$Tail1(yyRepetition1);
39039: yyError = yyResult.select(yyError);
39040: if (yyResult.hasValue()) {
39041: final Action<Node> v$16 = yyResult.semanticValue();
39042:
39043: yyRepetition1 = yyResult.index;
39044: yyRepValue1 = new Pair<Action<Node>>(v$16,
39045: yyRepValue1);
39046: continue;
39047: }
39048: break;
39049: }
39050: { // Start scope for v$17.
39051: final Pair<Action<Node>> v$17 = yyRepValue1.reverse();
39052:
39053: yyValue = apply(v$17, v$g$15, yyStart);
39054:
39055: return new SemanticValue(yyValue, yyRepetition1,
39056: yyError);
39057: } // End scope for v$17.
39058: }
39059:
39060: // Done.
39061: return yyError;
39062: }
39063:
39064: // =========================================================================
39065:
39066: /**
39067: * Parse synthetic nonterminal DebuggerJava.PostfixExpression$$Tail1.
39068: *
39069: * @param yyStart The index.
39070: * @return The result.
39071: * @throws IOException Signals an I/O error.
39072: */
39073: private Result pDebuggerJava$PostfixExpression$$Tail1(
39074: final int yyStart) throws IOException {
39075:
39076: Result yyResult;
39077: int yyBase;
39078: int yyOption1;
39079: Node yyOpValue1;
39080: Action<Node> yyValue;
39081: ParseError yyError = ParseError.DUMMY;
39082:
39083: // Alternative 1.
39084:
39085: yyResult = pSymbol(yyStart);
39086: yyError = yyResult.select(yyError);
39087: if (yyResult.hasValue(".")) {
39088:
39089: final int yyChoice1 = yyResult.index;
39090:
39091: // Nested alternative 1.
39092: { // Start scope for nested choice.
39093:
39094: final int yyChoice2 = yyChoice1;
39095:
39096: // Nested alternative 1.
39097:
39098: yyResult = pJavaIdentifier$Identifier(yyChoice2);
39099: yyError = yyResult.select(yyError);
39100: if (yyResult.hasValue()) {
39101: final String v$g$3 = yyResult.semanticValue();
39102:
39103: yyResult = pDebuggerJava$Arguments(yyResult.index);
39104: yyError = yyResult.select(yyError);
39105: if (yyResult.hasValue()) {
39106: final Node v$g$4 = yyResult.semanticValue();
39107:
39108: yyValue = new Action<Node>() {
39109: public Node run(Node v$1) {
39110: return GNode.create("CallExpression",
39111: v$1, null, v$g$3, v$g$4);
39112: }
39113: };
39114:
39115: return yyResult.createValue(yyValue, yyError);
39116: }
39117: }
39118:
39119: // Nested alternative 2.
39120:
39121: yyBase = yyChoice2;
39122: yyResult = pJavaIdentifier$Word(yyBase);
39123: yyError = yyResult.select(yyError);
39124: if (yyResult.hasValue("super")) {
39125: final String v$g$5 = "super";
39126:
39127: yyResult = pDebuggerJava$Arguments(yyResult.index);
39128: yyError = yyResult.select(yyError);
39129: if (yyResult.hasValue()) {
39130: final Node v$g$6 = yyResult.semanticValue();
39131:
39132: yyValue = new Action<Node>() {
39133: public Node run(Node v$1) {
39134: return GNode.create("CallExpression",
39135: v$1, null, v$g$5, v$g$6);
39136: }
39137: };
39138:
39139: return yyResult.createValue(yyValue, yyError);
39140: }
39141: } else {
39142: yyError = yyError.select("\"super\" expected",
39143: yyBase);
39144: }
39145: } // End scope for nested choice.
39146:
39147: // Nested alternative 2.
39148:
39149: yyBase = yyChoice1;
39150: yyResult = pJavaIdentifier$Word(yyBase);
39151: yyError = yyResult.select(yyError);
39152: if (yyResult.hasValue("super")) {
39153:
39154: yyValue = new Action<Node>() {
39155: public Node run(Node v$1) {
39156: return GNode.create("SuperExpression", v$1);
39157: }
39158: };
39159:
39160: return yyResult.createValue(yyValue, yyError);
39161: } else {
39162: yyError = yyError.select("\"super\" expected", yyBase);
39163: }
39164:
39165: // Nested alternative 3.
39166:
39167: yyResult = pJavaIdentifier$Identifier(yyChoice1);
39168: yyError = yyResult.select(yyError);
39169: if (yyResult.hasValue()) {
39170: final String v$g$7 = yyResult.semanticValue();
39171:
39172: yyValue = new Action<Node>() {
39173: public Node run(Node v$1) {
39174: return GNode.create("SelectionExpression", v$1,
39175: v$g$7);
39176: }
39177: };
39178:
39179: return yyResult.createValue(yyValue, yyError);
39180: }
39181: }
39182:
39183: // Alternative 2.
39184:
39185: yyResult = pSymbol(yyStart);
39186: yyError = yyResult.select(yyError);
39187: if (yyResult.hasValue("[")) {
39188:
39189: yyResult = pDebuggerJava$Expression(yyResult.index);
39190: yyError = yyResult.select(yyError);
39191: if (yyResult.hasValue()) {
39192: final Node v$g$8 = yyResult.semanticValue();
39193:
39194: yyBase = yyResult.index;
39195: yyResult = pSymbol(yyBase);
39196: yyError = yyResult.select(yyError);
39197: if (yyResult.hasValue("]")) {
39198:
39199: yyValue = new Action<Node>() {
39200: public Node run(Node v$1) {
39201: return GNode.create("SubscriptExpression",
39202: v$1, v$g$8);
39203: }
39204: };
39205:
39206: return yyResult.createValue(yyValue, yyError);
39207: } else {
39208: yyError = yyError.select("\"]\" expected", yyBase);
39209: }
39210: }
39211: }
39212:
39213: // Alternative 3.
39214:
39215: yyResult = pSymbol(yyStart);
39216: yyError = yyResult.select(yyError);
39217: if (yyResult.hasValue("++")) {
39218: final String v$g$9 = "++";
39219:
39220: yyValue = new Action<Node>() {
39221: public Node run(Node v$1) {
39222: return GNode
39223: .create("PostfixExpression", v$1, v$g$9);
39224: }
39225: };
39226:
39227: return yyResult.createValue(yyValue, yyError);
39228: }
39229:
39230: // Alternative 4.
39231:
39232: yyResult = pSymbol(yyStart);
39233: yyError = yyResult.select(yyError);
39234: if (yyResult.hasValue("--")) {
39235: final String v$g$10 = "--";
39236:
39237: yyValue = new Action<Node>() {
39238: public Node run(Node v$1) {
39239: return GNode.create("PostfixExpression", v$1,
39240: v$g$10);
39241: }
39242: };
39243:
39244: return yyResult.createValue(yyValue, yyError);
39245: }
39246:
39247: // Alternative 5.
39248:
39249: yyResult = pSymbol(yyStart);
39250: yyError = yyResult.select(yyError);
39251: if (yyResult.hasValue(".")) {
39252:
39253: yyBase = yyResult.index;
39254: yyResult = pJavaIdentifier$Word(yyBase);
39255: yyError = yyResult.select(yyError);
39256: if (yyResult.hasValue("new")) {
39257:
39258: yyResult = pJavaType$TypeName(yyResult.index);
39259: yyError = yyResult.select(yyError);
39260: if (yyResult.hasValue()) {
39261: final Node v$g$12 = yyResult.semanticValue();
39262:
39263: yyResult = pDebuggerJava$Arguments(yyResult.index);
39264: yyError = yyResult.select(yyError);
39265: if (yyResult.hasValue()) {
39266: final Node v$g$13 = yyResult.semanticValue();
39267:
39268: yyOption1 = yyResult.index;
39269: yyOpValue1 = null;
39270:
39271: yyResult = pDebuggerJava$ClassBody(yyOption1);
39272: yyError = yyResult.select(yyError);
39273: if (yyResult.hasValue()) {
39274: final Node v$el$1 = yyResult
39275: .semanticValue();
39276:
39277: yyOption1 = yyResult.index;
39278: yyOpValue1 = v$el$1;
39279: }
39280: { // Start scope for v$g$14.
39281: final Node v$g$14 = yyOpValue1;
39282:
39283: yyValue = new Action<Node>() {
39284: public Node run(Node v$1) {
39285: return GNode.create(
39286: "NewClassExpression", v$1,
39287: null, v$g$12, v$g$13,
39288: v$g$14);
39289: }
39290: };
39291:
39292: return new SemanticValue(yyValue,
39293: yyOption1, yyError);
39294: } // End scope for v$g$14.
39295: }
39296: }
39297: } else {
39298: yyError = yyError.select("\"new\" expected", yyBase);
39299: }
39300: }
39301:
39302: // Done.
39303: yyError = yyError
39304: .select("postfix expression expected", yyStart);
39305: return yyError;
39306: }
39307:
39308: // =========================================================================
39309:
39310: /**
39311: * Parse nonterminal xtc.lang.jeannie.DebuggerJava.PrimaryExpression.
39312: *
39313: * @param yyStart The index.
39314: * @return The result.
39315: * @throws IOException Signals an I/O error.
39316: */
39317: private Result pDebuggerJava$PrimaryExpression(final int yyStart)
39318: throws IOException {
39319:
39320: Result yyResult;
39321: int yyBase;
39322: int yyOption1;
39323: Node yyOpValue1;
39324: Node yyValue;
39325: ParseError yyError = ParseError.DUMMY;
39326:
39327: // Alternative <Meta>.
39328:
39329: yyResult = pMetaVariable(yyStart);
39330: yyError = yyResult.select(yyError);
39331: if (yyResult.hasValue()) {
39332: yyValue = yyResult.semanticValue();
39333:
39334: return yyResult.createValue(yyValue, yyError);
39335: }
39336:
39337: // Alternative <Literal>.
39338:
39339: yyResult = pLiteral(yyStart);
39340: yyError = yyResult.select(yyError);
39341: if (yyResult.hasValue()) {
39342: yyValue = yyResult.semanticValue();
39343:
39344: return yyResult.createValue(yyValue, yyError);
39345: }
39346:
39347: // Alternative <Expression>.
39348:
39349: yyResult = pJavaIdentifier$Identifier(yyStart);
39350: yyError = yyResult.select(yyError);
39351: if (yyResult.hasValue()) {
39352: final String v$g$3 = yyResult.semanticValue();
39353:
39354: yyResult = pDebuggerJava$Arguments(yyResult.index);
39355: yyError = yyResult.select(yyError);
39356: if (yyResult.hasValue()) {
39357: final Node v$g$4 = yyResult.semanticValue();
39358:
39359: yyValue = GNode.create("CallExpression", null, null,
39360: v$g$3, v$g$4);
39361: yyValue.setLocation(location(yyStart));
39362:
39363: return yyResult.createValue(yyValue, yyError);
39364: }
39365: }
39366:
39367: // Alternative <Expression>.
39368:
39369: yyResult = pResultType(yyStart);
39370: yyError = yyResult.select(yyError);
39371: if (yyResult.hasValue()) {
39372: final Node v$g$1 = yyResult.semanticValue();
39373:
39374: yyBase = yyResult.index;
39375: yyResult = pSymbol(yyBase);
39376: yyError = yyResult.select(yyError);
39377: if (yyResult.hasValue(".")) {
39378:
39379: yyBase = yyResult.index;
39380: yyResult = pJavaIdentifier$Word(yyBase);
39381: yyError = yyResult.select(yyError);
39382: if (yyResult.hasValue("class")) {
39383:
39384: yyValue = GNode.create("ClassLiteralExpression",
39385: v$g$1);
39386: yyValue.setLocation(location(yyStart));
39387:
39388: return yyResult.createValue(yyValue, yyError);
39389: } else {
39390: yyError = yyError.select("\"class\" expected",
39391: yyBase);
39392: }
39393: } else {
39394: yyError = yyError.select("\".\" expected", yyBase);
39395: }
39396: }
39397:
39398: // Alternative <Expression>.
39399:
39400: yyResult = pJavaIdentifier$Word(yyStart);
39401: yyError = yyResult.select(yyError);
39402: if (yyResult.hasValue("this")) {
39403: final String v$g$3 = "this";
39404:
39405: yyResult = pDebuggerJava$Arguments(yyResult.index);
39406: yyError = yyResult.select(yyError);
39407: if (yyResult.hasValue()) {
39408: final Node v$g$4 = yyResult.semanticValue();
39409:
39410: yyValue = GNode.create("CallExpression", null, null,
39411: v$g$3, v$g$4);
39412: yyValue.setLocation(location(yyStart));
39413:
39414: return yyResult.createValue(yyValue, yyError);
39415: }
39416: }
39417:
39418: // Alternative <Expression>.
39419:
39420: yyOption1 = yyStart;
39421: yyOpValue1 = null;
39422:
39423: yyResult = pQualifiedIdentifier(yyOption1);
39424: yyError = yyResult.select(yyError);
39425: if (yyResult.hasValue()) {
39426: final Node v$el$1 = yyResult.semanticValue();
39427:
39428: yyBase = yyResult.index;
39429: yyResult = pSymbol(yyBase);
39430: yyError = yyResult.select(yyError);
39431: if (yyResult.hasValue(".")) {
39432:
39433: yyOption1 = yyResult.index;
39434: yyOpValue1 = v$el$1;
39435: } else {
39436: yyError = yyError.select("\".\" expected", yyBase);
39437: }
39438: }
39439: { // Start scope for v$g$1.
39440: final Node v$g$1 = yyOpValue1;
39441:
39442: yyBase = yyOption1;
39443: yyResult = pJavaIdentifier$Word(yyBase);
39444: yyError = yyResult.select(yyError);
39445: if (yyResult.hasValue("this")) {
39446:
39447: yyValue = GNode.create("ThisExpression", v$g$1);
39448: yyValue.setLocation(location(yyStart));
39449:
39450: return yyResult.createValue(yyValue, yyError);
39451: } else {
39452: yyError = yyError.select("\"this\" expected", yyBase);
39453: }
39454: } // End scope for v$g$1.
39455:
39456: // Alternative 7.
39457: { // Start scope for nested choice.
39458:
39459: final int yyChoice1 = yyStart;
39460:
39461: // Nested alternative 1.
39462:
39463: yyResult = pJavaIdentifier$Word(yyChoice1);
39464: yyError = yyResult.select(yyError);
39465: if (yyResult.hasValue("super")) {
39466: final String v$g$3 = "super";
39467:
39468: yyResult = pDebuggerJava$Arguments(yyResult.index);
39469: yyError = yyResult.select(yyError);
39470: if (yyResult.hasValue()) {
39471: final Node v$g$4 = yyResult.semanticValue();
39472:
39473: yyValue = GNode.create("CallExpression", null,
39474: null, v$g$3, v$g$4);
39475: yyValue.setLocation(location(yyStart));
39476:
39477: return yyResult.createValue(yyValue, yyError);
39478: }
39479: }
39480:
39481: // Nested alternative 2.
39482:
39483: yyBase = yyChoice1;
39484: yyResult = pJavaIdentifier$Word(yyBase);
39485: yyError = yyResult.select(yyError);
39486: if (yyResult.hasValue("super")) {
39487:
39488: yyValue = GNode.create("SuperExpression", null);
39489: yyValue.setLocation(location(yyStart));
39490:
39491: return yyResult.createValue(yyValue, yyError);
39492: } else {
39493: yyError = yyError.select("\"super\" expected", yyBase);
39494: }
39495: } // End scope for nested choice.
39496:
39497: // Alternative 8.
39498:
39499: yyResult = pJavaIdentifier$Identifier(yyStart);
39500: yyError = yyResult.select(yyError);
39501: if (yyResult.hasValue()) {
39502: final String v$g$1 = yyResult.semanticValue();
39503:
39504: yyValue = GNode.create("PrimaryIdentifier", v$g$1);
39505: yyValue.setLocation(location(yyStart));
39506:
39507: return yyResult.createValue(yyValue, yyError);
39508: }
39509:
39510: // Alternative <Expression>.
39511:
39512: yyResult = pJavaIdentifier$Word(yyStart);
39513: yyError = yyResult.select(yyError);
39514: if (yyResult.hasValue("new")) {
39515:
39516: yyResult = pJavaType$TypeName(yyResult.index);
39517: yyError = yyResult.select(yyError);
39518: if (yyResult.hasValue()) {
39519: final Node v$g$3 = yyResult.semanticValue();
39520:
39521: yyResult = pDebuggerJava$Arguments(yyResult.index);
39522: yyError = yyResult.select(yyError);
39523: if (yyResult.hasValue()) {
39524: final Node v$g$4 = yyResult.semanticValue();
39525:
39526: yyOption1 = yyResult.index;
39527: yyOpValue1 = null;
39528:
39529: yyResult = pDebuggerJava$ClassBody(yyOption1);
39530: yyError = yyResult.select(yyError);
39531: if (yyResult.hasValue()) {
39532: final Node v$el$1 = yyResult.semanticValue();
39533:
39534: yyOption1 = yyResult.index;
39535: yyOpValue1 = v$el$1;
39536: }
39537: { // Start scope for v$g$5.
39538: final Node v$g$5 = yyOpValue1;
39539:
39540: yyValue = GNode.create("NewClassExpression",
39541: null, null, v$g$3, v$g$4, v$g$5);
39542: yyValue.setLocation(location(yyStart));
39543:
39544: return new SemanticValue(yyValue, yyOption1,
39545: yyError);
39546: } // End scope for v$g$5.
39547: }
39548: }
39549: }
39550:
39551: // Alternative 10.
39552:
39553: yyResult = pJavaIdentifier$Word(yyStart);
39554: yyError = yyResult.select(yyError);
39555: if (yyResult.hasValue("new")) {
39556:
39557: yyResult = pJavaType$TypeName(yyResult.index);
39558: yyError = yyResult.select(yyError);
39559: if (yyResult.hasValue()) {
39560: final Node v$g$1 = yyResult.semanticValue();
39561:
39562: final int yyChoice1 = yyResult.index;
39563:
39564: // Nested alternative 1.
39565:
39566: yyResult = pDebuggerJava$ConcreteDimensions(yyChoice1);
39567: yyError = yyResult.select(yyError);
39568: if (yyResult.hasValue()) {
39569: final Node v$g$2 = yyResult.semanticValue();
39570:
39571: yyOption1 = yyResult.index;
39572: yyOpValue1 = null;
39573:
39574: yyResult = pDimensions(yyOption1);
39575: yyError = yyResult.select(yyError);
39576: if (yyResult.hasValue()) {
39577: final Node v$el$1 = yyResult.semanticValue();
39578:
39579: yyOption1 = yyResult.index;
39580: yyOpValue1 = v$el$1;
39581: }
39582: { // Start scope for v$g$3.
39583: final Node v$g$3 = yyOpValue1;
39584:
39585: yyValue = GNode.create("NewArrayExpression",
39586: v$g$1, v$g$2, v$g$3, null);
39587: yyValue.setLocation(location(yyStart));
39588:
39589: return new SemanticValue(yyValue, yyOption1,
39590: yyError);
39591: } // End scope for v$g$3.
39592: }
39593:
39594: // Nested alternative 2.
39595:
39596: yyOption1 = yyChoice1;
39597: yyOpValue1 = null;
39598:
39599: yyResult = pDimensions(yyOption1);
39600: yyError = yyResult.select(yyError);
39601: if (yyResult.hasValue()) {
39602: final Node v$el$2 = yyResult.semanticValue();
39603:
39604: yyOption1 = yyResult.index;
39605: yyOpValue1 = v$el$2;
39606: }
39607: { // Start scope for v$g$6.
39608: final Node v$g$6 = yyOpValue1;
39609:
39610: yyResult = pDebuggerJava$ArrayInitializer(yyOption1);
39611: yyError = yyResult.select(yyError);
39612: if (yyResult.hasValue()) {
39613: final Node v$g$7 = yyResult.semanticValue();
39614:
39615: yyValue = GNode.create("NewArrayExpression",
39616: v$g$1, null, v$g$6, v$g$7);
39617: yyValue.setLocation(location(yyStart));
39618:
39619: return yyResult.createValue(yyValue, yyError);
39620: }
39621: } // End scope for v$g$6.
39622: }
39623: }
39624:
39625: // Alternative <Nested>.
39626:
39627: yyResult = pSymbol(yyStart);
39628: yyError = yyResult.select(yyError);
39629: if (yyResult.hasValue("(")) {
39630:
39631: yyResult = pDebuggerJava$Expression(yyResult.index);
39632: yyError = yyResult.select(yyError);
39633: if (yyResult.hasValue()) {
39634: yyValue = yyResult.semanticValue();
39635:
39636: yyBase = yyResult.index;
39637: yyResult = pSymbol(yyBase);
39638: yyError = yyResult.select(yyError);
39639: if (yyResult.hasValue(")")) {
39640:
39641: return yyResult.createValue(yyValue, yyError);
39642: } else {
39643: yyError = yyError.select("\")\" expected", yyBase);
39644: }
39645: }
39646: }
39647:
39648: // Done.
39649: yyError = yyError
39650: .select("primary expression expected", yyStart);
39651: return yyError;
39652: }
39653:
39654: // =========================================================================
39655:
39656: /**
39657: * Parse nonterminal xtc.lang.jeannie.DebuggerJava.ConcreteDimensions.
39658: *
39659: * @param yyStart The index.
39660: * @return The result.
39661: * @throws IOException Signals an I/O error.
39662: */
39663: private Result pDebuggerJava$ConcreteDimensions(final int yyStart)
39664: throws IOException {
39665:
39666: Result yyResult;
39667: int yyRepetition1;
39668: boolean yyRepeated1;
39669: Pair<Node> yyRepValue1;
39670: Node yyValue;
39671: ParseError yyError = ParseError.DUMMY;
39672:
39673: // Alternative 1.
39674:
39675: yyRepetition1 = yyStart;
39676: yyRepeated1 = false;
39677: yyRepValue1 = Pair.empty();
39678: while (true) {
39679:
39680: yyResult = pDebuggerJava$ConcreteDimension(yyRepetition1);
39681: yyError = yyResult.select(yyError);
39682: if (yyResult.hasValue()) {
39683: final Node v$el$1 = yyResult.semanticValue();
39684:
39685: yyRepetition1 = yyResult.index;
39686: yyRepeated1 = true;
39687: yyRepValue1 = new Pair<Node>(v$el$1, yyRepValue1);
39688: continue;
39689: }
39690: break;
39691: }
39692:
39693: if (yyRepeated1) {
39694: final Pair<Node> v$g$1 = yyRepValue1.reverse();
39695:
39696: yyValue = GNode.createFromPair("ConcreteDimensions", v$g$1);
39697: yyValue.setLocation(location(yyStart));
39698:
39699: return new SemanticValue(yyValue, yyRepetition1, yyError);
39700: }
39701:
39702: // Done.
39703: return yyError;
39704: }
39705:
39706: // =========================================================================
39707:
39708: /**
39709: * Parse nonterminal xtc.lang.jeannie.DebuggerJava.ConcreteDimension.
39710: *
39711: * @param yyStart The index.
39712: * @return The result.
39713: * @throws IOException Signals an I/O error.
39714: */
39715: private Result pDebuggerJava$ConcreteDimension(final int yyStart)
39716: throws IOException {
39717:
39718: Result yyResult;
39719: int yyBase;
39720: Node yyValue;
39721: ParseError yyError = ParseError.DUMMY;
39722:
39723: // Alternative 1.
39724:
39725: yyResult = pSymbol(yyStart);
39726: yyError = yyResult.select(yyError);
39727: if (yyResult.hasValue("[")) {
39728:
39729: yyResult = pDebuggerJava$Expression(yyResult.index);
39730: yyError = yyResult.select(yyError);
39731: if (yyResult.hasValue()) {
39732: yyValue = yyResult.semanticValue();
39733:
39734: yyBase = yyResult.index;
39735: yyResult = pSymbol(yyBase);
39736: yyError = yyResult.select(yyError);
39737: if (yyResult.hasValue("]")) {
39738:
39739: return yyResult.createValue(yyValue, yyError);
39740: } else {
39741: yyError = yyError.select("\"]\" expected", yyBase);
39742: }
39743: }
39744: }
39745:
39746: // Done.
39747: yyError = yyError
39748: .select("concrete dimension expected", yyStart);
39749: return yyError;
39750: }
39751:
39752: // =========================================================================
39753:
39754: /**
39755: * Parse nonterminal xtc.lang.jeannie.DebuggerJava.ArrayInitializer.
39756: *
39757: * @param yyStart The index.
39758: * @return The result.
39759: * @throws IOException Signals an I/O error.
39760: */
39761: private Result pDebuggerJava$ArrayInitializer(final int yyStart)
39762: throws IOException {
39763:
39764: Result yyResult;
39765: int yyBase;
39766: int yyRepetition1;
39767: Pair<Node> yyRepValue1;
39768: int yyOption1;
39769: Node yyValue;
39770: ParseError yyError = ParseError.DUMMY;
39771:
39772: // Alternative 1.
39773:
39774: yyResult = pSymbol(yyStart);
39775: yyError = yyResult.select(yyError);
39776: if (yyResult.hasValue("{")) {
39777:
39778: final int yyChoice1 = yyResult.index;
39779:
39780: // Nested alternative 1.
39781:
39782: yyResult = pDebuggerJava$VariableInitializer(yyChoice1);
39783: yyError = yyResult.select(yyError);
39784: if (yyResult.hasValue()) {
39785: final Node v$g$1 = yyResult.semanticValue();
39786:
39787: yyRepetition1 = yyResult.index;
39788: yyRepValue1 = Pair.empty();
39789: while (true) {
39790:
39791: yyBase = yyRepetition1;
39792: yyResult = pSymbol(yyBase);
39793: yyError = yyResult.select(yyError);
39794: if (yyResult.hasValue(",")) {
39795:
39796: yyResult = pDebuggerJava$VariableInitializer(yyResult.index);
39797: yyError = yyResult.select(yyError);
39798: if (yyResult.hasValue()) {
39799: final Node v$el$1 = yyResult
39800: .semanticValue();
39801:
39802: yyRepetition1 = yyResult.index;
39803: yyRepValue1 = new Pair<Node>(v$el$1,
39804: yyRepValue1);
39805: continue;
39806: }
39807: } else {
39808: yyError = yyError.select("\",\" expected",
39809: yyBase);
39810: }
39811: break;
39812: }
39813: { // Start scope for v$g$2.
39814: final Pair<Node> v$g$2 = yyRepValue1.reverse();
39815:
39816: yyOption1 = yyRepetition1;
39817:
39818: yyBase = yyOption1;
39819: yyResult = pSymbol(yyBase);
39820: yyError = yyResult.select(yyError);
39821: if (yyResult.hasValue(",")) {
39822:
39823: yyOption1 = yyResult.index;
39824: } else {
39825: yyError = yyError.select("\",\" expected",
39826: yyBase);
39827: }
39828:
39829: yyBase = yyOption1;
39830: yyResult = pSymbol(yyBase);
39831: yyError = yyResult.select(yyError);
39832: if (yyResult.hasValue("}")) {
39833:
39834: yyValue = GNode.createFromPair(
39835: "ArrayInitializer", v$g$1, v$g$2);
39836: yyValue.setLocation(location(yyStart));
39837:
39838: return yyResult.createValue(yyValue, yyError);
39839: } else {
39840: yyError = yyError.select("\"}\" expected",
39841: yyBase);
39842: }
39843: } // End scope for v$g$2.
39844: }
39845:
39846: // Nested alternative 2.
39847:
39848: yyOption1 = yyChoice1;
39849:
39850: yyBase = yyOption1;
39851: yyResult = pSymbol(yyBase);
39852: yyError = yyResult.select(yyError);
39853: if (yyResult.hasValue(",")) {
39854:
39855: yyOption1 = yyResult.index;
39856: } else {
39857: yyError = yyError.select("\",\" expected", yyBase);
39858: }
39859:
39860: yyBase = yyOption1;
39861: yyResult = pSymbol(yyBase);
39862: yyError = yyResult.select(yyError);
39863: if (yyResult.hasValue("}")) {
39864:
39865: yyValue = GNode.create("ArrayInitializer", false);
39866: yyValue.setLocation(location(yyStart));
39867:
39868: return yyResult.createValue(yyValue, yyError);
39869: } else {
39870: yyError = yyError.select("\"}\" expected", yyBase);
39871: }
39872: }
39873:
39874: // Done.
39875: yyError = yyError.select("array initializer expected", yyStart);
39876: return yyError;
39877: }
39878:
39879: // =========================================================================
39880:
39881: /**
39882: * Parse nonterminal xtc.lang.jeannie.DebuggerJava.VariableInitializer.
39883: *
39884: * @param yyStart The index.
39885: * @return The result.
39886: * @throws IOException Signals an I/O error.
39887: */
39888: private Result pDebuggerJava$VariableInitializer(final int yyStart)
39889: throws IOException {
39890:
39891: DebuggerParserColumn yyColumn = (DebuggerParserColumn) column(yyStart);
39892: if (null == yyColumn.chunk13)
39893: yyColumn.chunk13 = new Chunk13();
39894: if (null == yyColumn.chunk13.fDebuggerJava$VariableInitializer)
39895: yyColumn.chunk13.fDebuggerJava$VariableInitializer = pDebuggerJava$VariableInitializer$1(yyStart);
39896: return yyColumn.chunk13.fDebuggerJava$VariableInitializer;
39897: }
39898:
39899: /** Actually parse xtc.lang.jeannie.DebuggerJava.VariableInitializer. */
39900: private Result pDebuggerJava$VariableInitializer$1(final int yyStart)
39901: throws IOException {
39902:
39903: Result yyResult;
39904: Node yyValue;
39905: ParseError yyError = ParseError.DUMMY;
39906:
39907: // Alternative <Array>.
39908:
39909: yyResult = pDebuggerJava$ArrayInitializer(yyStart);
39910: yyError = yyResult.select(yyError);
39911: if (yyResult.hasValue()) {
39912: yyValue = yyResult.semanticValue();
39913:
39914: return yyResult.createValue(yyValue, yyError);
39915: }
39916:
39917: // Alternative <Expression>.
39918:
39919: yyResult = pDebuggerJava$Expression(yyStart);
39920: yyError = yyResult.select(yyError);
39921: if (yyResult.hasValue()) {
39922: yyValue = yyResult.semanticValue();
39923:
39924: return yyResult.createValue(yyValue, yyError);
39925: }
39926:
39927: // Done.
39928: return yyError;
39929: }
39930:
39931: // =========================================================================
39932:
39933: /**
39934: * Parse nonterminal xtc.lang.jeannie.DebuggerJava.Arguments.
39935: *
39936: * @param yyStart The index.
39937: * @return The result.
39938: * @throws IOException Signals an I/O error.
39939: */
39940: private Result pDebuggerJava$Arguments(final int yyStart)
39941: throws IOException {
39942:
39943: Result yyResult;
39944: int yyBase;
39945: int yyRepetition1;
39946: Pair<Node> yyRepValue1;
39947: Node yyValue;
39948: ParseError yyError = ParseError.DUMMY;
39949:
39950: // Alternative 1.
39951:
39952: yyResult = pSymbol(yyStart);
39953: yyError = yyResult.select(yyError);
39954: if (yyResult.hasValue("(")) {
39955:
39956: final int yyChoice1 = yyResult.index;
39957:
39958: // Nested alternative 1.
39959:
39960: yyResult = pDebuggerJava$Expression(yyChoice1);
39961: yyError = yyResult.select(yyError);
39962: if (yyResult.hasValue()) {
39963: final Node v$g$1 = yyResult.semanticValue();
39964:
39965: yyRepetition1 = yyResult.index;
39966: yyRepValue1 = Pair.empty();
39967: while (true) {
39968:
39969: yyBase = yyRepetition1;
39970: yyResult = pSymbol(yyBase);
39971: yyError = yyResult.select(yyError);
39972: if (yyResult.hasValue(",")) {
39973:
39974: yyResult = pDebuggerJava$Expression(yyResult.index);
39975: yyError = yyResult.select(yyError);
39976: if (yyResult.hasValue()) {
39977: final Node v$el$1 = yyResult
39978: .semanticValue();
39979:
39980: yyRepetition1 = yyResult.index;
39981: yyRepValue1 = new Pair<Node>(v$el$1,
39982: yyRepValue1);
39983: continue;
39984: }
39985: } else {
39986: yyError = yyError.select("\",\" expected",
39987: yyBase);
39988: }
39989: break;
39990: }
39991: { // Start scope for v$g$2.
39992: final Pair<Node> v$g$2 = yyRepValue1.reverse();
39993:
39994: yyBase = yyRepetition1;
39995: yyResult = pSymbol(yyBase);
39996: yyError = yyResult.select(yyError);
39997: if (yyResult.hasValue(")")) {
39998:
39999: yyValue = GNode.createFromPair("Arguments",
40000: v$g$1, v$g$2);
40001: yyValue.setLocation(location(yyStart));
40002:
40003: return yyResult.createValue(yyValue, yyError);
40004: } else {
40005: yyError = yyError.select("\")\" expected",
40006: yyBase);
40007: }
40008: } // End scope for v$g$2.
40009: }
40010:
40011: // Nested alternative 2.
40012:
40013: yyBase = yyChoice1;
40014: yyResult = pSymbol(yyBase);
40015: yyError = yyResult.select(yyError);
40016: if (yyResult.hasValue(")")) {
40017:
40018: yyValue = GNode.create("Arguments", false);
40019: yyValue.setLocation(location(yyStart));
40020:
40021: return yyResult.createValue(yyValue, yyError);
40022: } else {
40023: yyError = yyError.select("\")\" expected", yyBase);
40024: }
40025: }
40026:
40027: // Done.
40028: yyError = yyError.select("arguments expected", yyStart);
40029: return yyError;
40030: }
40031:
40032: // =========================================================================
40033:
40034: /**
40035: * Parse nonterminal xtc.lang.jeannie.DebuggerJava.JavaInJavaBlock.
40036: *
40037: * @param yyStart The index.
40038: * @return The result.
40039: * @throws IOException Signals an I/O error.
40040: */
40041: private Result pDebuggerJava$JavaInJavaBlock(final int yyStart)
40042: throws IOException {
40043:
40044: Result yyResult;
40045: int yyBase;
40046: int yyRepetition1;
40047: Pair<Node> yyRepValue1;
40048: Node yyValue;
40049: ParseError yyError = ParseError.DUMMY;
40050:
40051: // Alternative 1.
40052:
40053: yyResult = pSymbol(yyStart);
40054: yyError = yyResult.select(yyError);
40055: if (yyResult.hasValue("{")) {
40056:
40057: yyRepetition1 = yyResult.index;
40058: yyRepValue1 = Pair.empty();
40059: while (true) {
40060:
40061: yyResult = pDebuggerJava$DeclarationOrStatement(yyRepetition1);
40062: yyError = yyResult.select(yyError);
40063: if (yyResult.hasValue()) {
40064: final Node v$el$1 = yyResult.semanticValue();
40065:
40066: yyRepetition1 = yyResult.index;
40067: yyRepValue1 = new Pair<Node>(v$el$1, yyRepValue1);
40068: continue;
40069: }
40070: break;
40071: }
40072: { // Start scope for v$g$1.
40073: final Pair<Node> v$g$1 = yyRepValue1.reverse();
40074:
40075: yyBase = yyRepetition1;
40076: yyResult = pSymbol(yyBase);
40077: yyError = yyResult.select(yyError);
40078: if (yyResult.hasValue("}")) {
40079:
40080: yyValue = GNode.createFromPair("JavaInJavaBlock",
40081: v$g$1);
40082: yyValue.setLocation(location(yyStart));
40083:
40084: return yyResult.createValue(yyValue, yyError);
40085: } else {
40086: yyError = yyError.select("\"}\" expected", yyBase);
40087: }
40088: } // End scope for v$g$1.
40089: }
40090:
40091: // Done.
40092: yyError = yyError
40093: .select("java in java block expected", yyStart);
40094: return yyError;
40095: }
40096:
40097: // =========================================================================
40098:
40099: /**
40100: * Parse nonterminal xtc.lang.jeannie.DebuggerJava.CInJavaBlock.
40101: *
40102: * @param yyStart The index.
40103: * @return The result.
40104: * @throws IOException Signals an I/O error.
40105: */
40106: private Result pDebuggerJava$CInJavaBlock(final int yyStart)
40107: throws IOException {
40108:
40109: Result yyResult;
40110: Node yyValue;
40111: ParseError yyError = ParseError.DUMMY;
40112:
40113: // Alternative 1.
40114:
40115: yyResult = p$$Shared26(yyStart);
40116: yyError = yyResult.select(yyError);
40117: if (yyResult.hasValue()) {
40118:
40119: yyResult = pJeannieC$CInCBlock(yyResult.index);
40120: yyError = yyResult.select(yyError);
40121: if (yyResult.hasValue()) {
40122: final Node v$g$1 = yyResult.semanticValue();
40123:
40124: yyValue = GNode.create("CInJavaBlock", v$g$1);
40125: yyValue.setLocation(location(yyStart));
40126:
40127: return yyResult.createValue(yyValue, yyError);
40128: }
40129: }
40130:
40131: // Done.
40132: return yyError;
40133: }
40134:
40135: // =========================================================================
40136:
40137: /**
40138: * Parse nonterminal xtc.lang.jeannie.DebuggerJava.CInJavaExpression.
40139: *
40140: * @param yyStart The index.
40141: * @return The result.
40142: * @throws IOException Signals an I/O error.
40143: */
40144: private Result pDebuggerJava$CInJavaExpression(final int yyStart)
40145: throws IOException {
40146:
40147: Result yyResult;
40148: Node yyValue;
40149: ParseError yyError = ParseError.DUMMY;
40150:
40151: // Alternative 1.
40152:
40153: yyResult = p$$Shared26(yyStart);
40154: yyError = yyResult.select(yyError);
40155: if (yyResult.hasValue()) {
40156:
40157: yyResult = pJeannieC$UnaryExpression(yyResult.index);
40158: yyError = yyResult.select(yyError);
40159: if (yyResult.hasValue()) {
40160: final Node v$g$1 = yyResult.semanticValue();
40161:
40162: yyValue = GNode.create("CInJavaExpression", v$g$1);
40163: yyValue.setLocation(location(yyStart));
40164:
40165: return yyResult.createValue(yyValue, yyError);
40166: }
40167: }
40168:
40169: // Done.
40170: return yyError;
40171: }
40172:
40173: // =========================================================================
40174:
40175: static {
40176: add(JAVA_KEYWORDS, new String[] { "abstract", "continue",
40177: "for", "new", "switch", "assert", "default", "if",
40178: "package", "synchronized", "boolean", "do", "goto",
40179: "private", "this", "break", "double", "implements",
40180: "protected", "throw", "byte", "else", "import",
40181: "public", "throws", "case", "instanceof", "return",
40182: "transient", "catch", "extends", "int", "short", "try",
40183: "char", "final", "interface", "static", "void",
40184: "class", "finally", "long", "strictfp", "volatile",
40185: "const", "float", "native", "super", "while" });
40186: }
40187: static {
40188: add(C_KEYWORDS, new String[] { "_cancel", "_commit", "_with" });
40189: }
40190: static {
40191: add(C_KEYWORDS, new String[] { "auto", "break", "case", "char",
40192: "const", "continue", "default", "do", "double", "else",
40193: "enum", "extern", "float", "for", "goto", "if", "int",
40194: "long", "register", "return", "short", "signed",
40195: "sizeof", "static", "struct", "switch", "typedef",
40196: "union", "unsigned", "void", "volatile", "while" });
40197:
40198: if (C99)
40199: add(C_KEYWORDS, new String[] { "_Bool", "_Complex",
40200: "inline", "restrict" });
40201:
40202: if (GCC)
40203: add(C_KEYWORDS, new String[] { "__alignof", "__alignof__",
40204: "asm", "__asm", "__asm__", "__attribute",
40205: "__attribute__", "__builtin_offsetof",
40206: "__builtin_types_compatible_p", "__builtin_va_arg",
40207: "__builtin_va_list", "__complex__", "__const",
40208: "__const__", "__extension__", "__inline",
40209: "__inline__", "__label__", "__restrict",
40210: "__restrict__", "__signed", "__signed__", "typeof",
40211: "__typeof", "__typeof__", "__volatile",
40212: "__volatile__" });
40213:
40214: }
40215:
40216: // =========================================================================
40217:
40218: /**
40219: * Get the specified text.
40220: *
40221: * @param s The text.
40222: * @return The text.
40223: */
40224: protected static final String toText(String s) {
40225: return s;
40226: }
40227:
40228: // =========================================================================
40229:
40230: /**
40231: * Add the specified values to the specified set.
40232: *
40233: * @param set The set.
40234: * @param values The new values.
40235: */
40236: protected static final <T> void add(Set<T> set, T[] values) {
40237: for (T v : values)
40238: set.add(v);
40239: }
40240:
40241: /**
40242: * Check whether the specified set contains the specified value.
40243: *
40244: * @param set The set.
40245: * @param value The value.
40246: * @return <code>true</code> if the set contains the value.
40247: */
40248: protected static final <T> boolean contains(Set<T> set, T value) {
40249: return set.contains(value);
40250: }
40251:
40252: }
|