Source Code Cross Referenced for DebuggerParser.java in  » Parser » Rats-Parser-Generators » xtc » lang » jeannie » Java Source Code / Java DocumentationJava Source Code and Java Documentation

Java Source Code / Java Documentation
1. 6.0 JDK Core
2. 6.0 JDK Modules
3. 6.0 JDK Modules com.sun
4. 6.0 JDK Modules com.sun.java
5. 6.0 JDK Modules sun
6. 6.0 JDK Platform
7. Ajax
8. Apache Harmony Java SE
9. Aspect oriented
10. Authentication Authorization
11. Blogger System
12. Build
13. Byte Code
14. Cache
15. Chart
16. Chat
17. Code Analyzer
18. Collaboration
19. Content Management System
20. Database Client
21. Database DBMS
22. Database JDBC Connection Pool
23. Database ORM
24. Development
25. EJB Server geronimo
26. EJB Server GlassFish
27. EJB Server JBoss 4.2.1
28. EJB Server resin 3.1.5
29. ERP CRM Financial
30. ESB
31. Forum
32. GIS
33. Graphic Library
34. Groupware
35. HTML Parser
36. IDE
37. IDE Eclipse
38. IDE Netbeans
39. Installer
40. Internationalization Localization
41. Inversion of Control
42. Issue Tracking
43. J2EE
44. JBoss
45. JMS
46. JMX
47. Library
48. Mail Clients
49. Net
50. Parser
51. PDF
52. Portal
53. Profiler
54. Project Management
55. Report
56. RSS RDF
57. Rule Engine
58. Science
59. Scripting
60. Search Engine
61. Security
62. Sevlet Container
63. Source Control
64. Swing Library
65. Template Engine
66. Test Coverage
67. Testing
68. UML
69. Web Crawler
70. Web Framework
71. Web Mail
72. Web Server
73. Web Services
74. Web Services apache cxf 2.0.1
75. Web Services AXIS2
76. Wiki Engine
77. Workflow Engines
78. XML
79. XML UI
Java
Java Tutorial
Java Open Source
Jar File Download
Java Articles
Java Products
Java by API
Photoshop Tutorials
Maya Tutorials
Flash Tutorials
3ds-Max Tutorials
Illustrator Tutorials
GIMP Tutorials
C# / C Sharp
C# / CSharp Tutorial
C# / CSharp Open Source
ASP.Net
ASP.NET Tutorial
JavaScript DHTML
JavaScript Tutorial
JavaScript Reference
HTML / CSS
HTML CSS Reference
C / ANSI-C
C Tutorial
C++
C++ Tutorial
Ruby
PHP
Python
Python Tutorial
Python Open Source
SQL Server / T-SQL
SQL Server / T-SQL Tutorial
Oracle PL / SQL
Oracle PL/SQL Tutorial
PostgreSQL
SQL / MySQL
MySQL Tutorial
VB.Net
VB.Net Tutorial
Flash / Flex / ActionScript
VBA / Excel / Access / Word
XML
XML Tutorial
Microsoft Office PowerPoint 2007 Tutorial
Microsoft Office Excel 2007 Tutorial
Microsoft Office Word 2007 Tutorial
Java Source Code / Java Documentation » Parser » Rats Parser Generators » xtc.lang.jeannie 
Source Cross Referenced  Class Diagram Java Document (Java Doc) 


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:        }
www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.