Source Code Cross Referenced for JavaPropertyParser.java in  » Parser » Rats-Parser-Generators » xtc » xform » samples » javaproperty » 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.xform.samples.javaproperty 
Source Cross Referenced  Class Diagram Java Document (Java Doc) 


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