Source Code Cross Referenced for GrammarParser.java in  » Parser » beaver » beaver » spec » parser » 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 » beaver » beaver.spec.parser 
Source Cross Referenced  Class Diagram Java Document (Java Doc) 


001:        /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
002:         * This file is part of Beaver Parser Generator.                       *
003:         * Copyright (C) 2003,2005 Alexander Demenchuk <alder@softanvil.com>.  *
004:         * All rights reserved.                                                *
005:         * See the file "LICENSE" for the terms and conditions for copying,    *
006:         * distribution and modification of Beaver.                            *
007:         * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
008:
009:        package beaver.spec.parser;
010:
011:        import beaver.comp.util.Log;
012:        import beaver.*;
013:        import beaver.spec.ast.*;
014:        import java.util.ArrayList;
015:
016:        /**
017:         * This class is a LALR parser generated by
018:         * <a href="http://beaver.sourceforge.net">Beaver</a> v0.9.6
019:         * from the grammar specification "beaver.grammar".
020:         */
021:        public class GrammarParser extends Parser {
022:            static public class Terminals {
023:                static public final short EOF = 0;
024:                static public final short IDENT = 1;
025:                static public final short SEMI = 2;
026:                static public final short TYPEOF = 3;
027:                static public final short HEADER = 4;
028:                static public final short PACKAGE = 5;
029:                static public final short CLASS = 6;
030:                static public final short EMBED = 7;
031:                static public final short INIT = 8;
032:                static public final short GOAL = 9;
033:                static public final short IMPORT = 10;
034:                static public final short TERMINALS = 11;
035:                static public final short LEFT = 12;
036:                static public final short RIGHT = 13;
037:                static public final short NONASSOC = 14;
038:                static public final short BAR = 15;
039:                static public final short CODE = 16;
040:                static public final short AT = 17;
041:                static public final short COMMA = 18;
042:                static public final short TEXT = 19;
043:                static public final short IS = 20;
044:                static public final short QUESTION = 21;
045:                static public final short PLUS = 22;
046:                static public final short STAR = 23;
047:                static public final short DOT = 24;
048:
049:                static public final String[] NAMES = { "EOF", "IDENT", "SEMI",
050:                        "TYPEOF", "HEADER", "PACKAGE", "CLASS", "EMBED",
051:                        "INIT", "GOAL", "IMPORT", "TERMINALS", "LEFT", "RIGHT",
052:                        "NONASSOC", "BAR", "CODE", "AT", "COMMA", "TEXT", "IS",
053:                        "QUESTION", "PLUS", "STAR", "DOT" };
054:            }
055:
056:            static final ParsingTables PARSING_TABLES = new ParsingTables(
057:                    "U9pLbqbmLKKKXlztBm42n8GGXinXa459a2Ga94moAGwe33AZKEMQXMkjOgrLhbsuTg5LbbM"
058:                            + "wK9T2GWX1a8G4XIX31iAKYKcG7B##xmP2h8wQqYfvV$rzJlT$Uhgtxkb#Kd10fVQRKhH9#$"
059:                            + "IQnjgFcgjvcgy5UaRFQg6ALQ95UawBKPxI7CrKe5BA5CtMqqhJ63laxV50eLvLkIhrlDRg1"
060:                            + "RsaQctLTktINljTaxtQWB9im8ExAh2x7jpHKhlZmMsjijiUtD8ok#N1JQsqcnxqQxNrUz2d"
061:                            + "bwtFWrvjiLuFUhJHUZperklMxS4DRROR7bndlkiUNDERTis3g$Ixwi4LxR0h7dJHhyk3ozf"
062:                            + "jbptef5#d1nrwopeyQ9UitOFpQESzQ4Dhy#0IsYKFBg9TzE02sWKF3CttEsx7DKjJxRJAbA"
063:                            + "abAjH4EsR7D45Jd0PEHuXyvJiDD5Y39YbRESgrUtPFwwpEwfJknd4QE6jdzMBirqL8ZXFvp"
064:                            + "3JUpKHyaugOgHdy38xQKQLQlTMhmfeYd8cqPerp6gYFS0ISiLghLPNLM8scMOkrQ8toh37I"
065:                            + "ZZWDr4HeYT1eZSgmKtRE3ckwjTe9hTSCEwaDzeFzfEKef#mmE6SdOAkTX2Xst#vBMc6$sA$"
066:                            + "QfftQexVrYjxGi5#aRugHJKE2NUOh2mJahLdahJbahiTpLheoo5dPMWopwL50ZnBAAc#F11"
067:                            + "akr1Zou5YDuoccygOcyYxIo989uDToHzbloYYr9V$1c2EjSoGjvtyqtnFIZwpnn6jyUK5SP"
068:                            + "lEbvIelgXMISzoNDpakfsgQfcj6N7CHnN6R#uepefQAg4n695kJ4NyU9vkueJCvg#WzkFx9"
069:                            + "rIJZ1stfOwCCZNDbMUnNFeptbK64yjWkZUtWV8wPb5bncGuKFR$C8P4HXXyIH3o2jFzWCkK"
070:                            + "jX3dHtfHe8wmFMmCVm6xO9GKyhM01CIdObN0rhAA#3Eku5j8$G4zy3nlmK#4ac0#Bu6pQM#"
071:                            + "cp7Tj1VIvSXty8EnvkHQk66#0s#0vy5xfbVWG$WP$1Rs0jR8ASfUfX35SVm7x7E6bOvjKM$"
072:                            + "9duRc$xyTVZpyT$7v$n0zQX3x7pQA#0pVYhi6vDdCF16kncOZx7tuE$3$zRdaylrgrvBsq7"
073:                            + "y3dh0zOThC172tRG$Xva7S5Ex0UGPnVimduCMKUm6$if$DfjZZ4xuO1x1mVZ3UEs3$6$ZEr"
074:                            + "NnFKCjWydlqLnN3zpJF35ZKIDei$V77VZlpJE5t#XTppo4y4Gls28Npryp$oMSuOdOC0vBk"
075:                            + "ZEQCU0SppWH4$yGxhxGiZv7t832Ba3XDm2Gku18JU1a9j0o5qWv3OGyWM6t0rIE6kJvsrEd"
076:                            + "DCBo8W5qJ#c10oZB5H4FO$rkSnKZ2t6bc1Bi8N456BBgBjyKuujZ#yCbL4kIJnaXSkcVm2p"
077:                            + "BaPq");
078:
079:            static class Events extends Parser.Events {
080:                private final Log log;
081:
082:                Events(Log log) {
083:                    this .log = log;
084:                }
085:
086:                public void scannerError(Scanner.Exception e) {
087:                    log.error(e);
088:                }
089:
090:                public void syntaxError(Symbol token) {
091:                    log.error(token, "unexpected token");
092:                }
093:
094:                public void unexpectedTokenRemoved(Symbol token) {
095:                    log
096:                            .warning(token,
097:                                    "recovered by removing unexpected token");
098:                }
099:
100:                public void missingTokenInserted(Symbol token) {
101:                    log.warning(token, "recovered by inserting missing '"
102:                            + Terminals.NAMES[token.getId()] + "'");
103:                }
104:
105:                public void misspelledTokenReplaced(Symbol token) {
106:                    log.warning(token,
107:                            "recovered by replacing misspelled token with '"
108:                                    + Terminals.NAMES[token.getId()] + "'");
109:                }
110:
111:                public void errorPhraseRemoved(Symbol error) {
112:                    log.warning(error, "recovered by removing error phrase");
113:                }
114:            }
115:
116:            private Log log;
117:
118:            public GrammarParser(Log log) {
119:                this ();
120:                report = new Events(this .log = log);
121:            }
122:
123:            public GrammarParser() {
124:                super (PARSING_TABLES);
125:            }
126:
127:            protected Symbol invokeReduceAction(int rule_num, int offset) {
128:                switch (rule_num) {
129:                case 0: // lst$declaration = declaration
130:                {
131:                    ArrayList lst = new ArrayList();
132:                    lst.add(_symbols[offset + 1].value);
133:                    return new Symbol(lst);
134:                }
135:                case 1: // lst$declaration = lst$declaration declaration
136:                {
137:                    ((ArrayList) _symbols[offset + 1].value)
138:                            .add(_symbols[offset + 2].value);
139:                    return _symbols[offset + 1];
140:                }
141:                case 4: // lst$rule = rule
142:                {
143:                    ArrayList lst = new ArrayList();
144:                    lst.add(_symbols[offset + 1].value);
145:                    return new Symbol(lst);
146:                }
147:                case 5: // lst$rule = lst$rule rule
148:                {
149:                    ((ArrayList) _symbols[offset + 1].value)
150:                            .add(_symbols[offset + 2].value);
151:                    return _symbols[offset + 1];
152:                }
153:                case 6: // grammar = opt$lst$declaration.decl lst$rule.rules
154:                {
155:                    final Symbol _symbol_decl = _symbols[offset + 1];
156:                    final ArrayList _list_decl = (ArrayList) _symbol_decl.value;
157:                    final Declaration[] decl = _list_decl == null ? new Declaration[0]
158:                            : (Declaration[]) _list_decl
159:                                    .toArray(new Declaration[_list_decl.size()]);
160:                    final Symbol _symbol_rules = _symbols[offset + 2];
161:                    final ArrayList _list_rules = (ArrayList) _symbol_rules.value;
162:                    final Rule[] rules = _list_rules == null ? new Rule[0]
163:                            : (Rule[]) _list_rules.toArray(new Rule[_list_rules
164:                                    .size()]);
165:
166:                    return new GrammarTreeRoot(decl, rules);
167:                }
168:                case 19: // declaration = error.e SEMI
169:                {
170:                    final Symbol e = _symbols[offset + 1];
171:
172:                    log.error(e, "malformed declaration");
173:                    return new Declaration.Error();
174:                }
175:                case 20: // header = HEADER CODE.code SEMI
176:                {
177:                    final Symbol code = _symbols[offset + 2];
178:
179:                    return new Declaration.Header(code);
180:                }
181:                case 21: // package = PACKAGE TEXT.name SEMI
182:                {
183:                    final Symbol name = _symbols[offset + 2];
184:
185:                    return new Declaration.PackageName(name);
186:                }
187:                case 22: // import = IMPORT txt_list.names SEMI
188:                {
189:                    final Symbol _symbol_names = _symbols[offset + 2];
190:                    final ArrayList _list_names = (ArrayList) _symbol_names.value;
191:                    final beaver.Symbol[] names = _list_names == null ? new beaver.Symbol[0]
192:                            : (beaver.Symbol[]) _list_names
193:                                    .toArray(new beaver.Symbol[_list_names
194:                                            .size()]);
195:
196:                    return new Declaration.Imports(names);
197:                }
198:                case 23: // class_name = CLASS TEXT.name SEMI
199:                {
200:                    final Symbol name = _symbols[offset + 2];
201:
202:                    return new Declaration.ClassName(name);
203:                }
204:                case 24: // class_code = EMBED CODE.code SEMI
205:                {
206:                    final Symbol code = _symbols[offset + 2];
207:
208:                    return new Declaration.ClassCode(code);
209:                }
210:                case 25: // class_init = INIT CODE.code SEMI
211:                {
212:                    final Symbol code = _symbols[offset + 2];
213:
214:                    return new Declaration.ConstructorCode(code);
215:                }
216:                case 26: // grammar_goal = GOAL IDENT.name SEMI
217:                {
218:                    final Symbol name = _symbols[offset + 2];
219:
220:                    return new Declaration.Goal(name);
221:                }
222:                case 27: // terminals = TERMINALS sym_list.symbols SEMI
223:                {
224:                    final Symbol _symbol_symbols = _symbols[offset + 2];
225:                    final ArrayList _list_symbols = (ArrayList) _symbol_symbols.value;
226:                    final beaver.Symbol[] symbols = _list_symbols == null ? new beaver.Symbol[0]
227:                            : (beaver.Symbol[]) _list_symbols
228:                                    .toArray(new beaver.Symbol[_list_symbols
229:                                            .size()]);
230:
231:                    return new Declaration.Terminals(symbols);
232:                }
233:                case 28: // left_assoc = LEFT sym_list.symbols SEMI
234:                {
235:                    final Symbol _symbol_symbols = _symbols[offset + 2];
236:                    final ArrayList _list_symbols = (ArrayList) _symbol_symbols.value;
237:                    final beaver.Symbol[] symbols = _list_symbols == null ? new beaver.Symbol[0]
238:                            : (beaver.Symbol[]) _list_symbols
239:                                    .toArray(new beaver.Symbol[_list_symbols
240:                                            .size()]);
241:
242:                    return new Declaration.LeftAssoc(symbols);
243:                }
244:                case 29: // right_assoc = RIGHT sym_list.symbols SEMI
245:                {
246:                    final Symbol _symbol_symbols = _symbols[offset + 2];
247:                    final ArrayList _list_symbols = (ArrayList) _symbol_symbols.value;
248:                    final beaver.Symbol[] symbols = _list_symbols == null ? new beaver.Symbol[0]
249:                            : (beaver.Symbol[]) _list_symbols
250:                                    .toArray(new beaver.Symbol[_list_symbols
251:                                            .size()]);
252:
253:                    return new Declaration.RightAssoc(symbols);
254:                }
255:                case 30: // nonassoc = NONASSOC sym_list.symbols SEMI
256:                {
257:                    final Symbol _symbol_symbols = _symbols[offset + 2];
258:                    final ArrayList _list_symbols = (ArrayList) _symbol_symbols.value;
259:                    final beaver.Symbol[] symbols = _list_symbols == null ? new beaver.Symbol[0]
260:                            : (beaver.Symbol[]) _list_symbols
261:                                    .toArray(new beaver.Symbol[_list_symbols
262:                                            .size()]);
263:
264:                    return new Declaration.NonAssoc(symbols);
265:                }
266:                case 31: // typeof = TYPEOF sym_list.symbols IS TEXT.type SEMI
267:                {
268:                    final Symbol _symbol_symbols = _symbols[offset + 2];
269:                    final ArrayList _list_symbols = (ArrayList) _symbol_symbols.value;
270:                    final beaver.Symbol[] symbols = _list_symbols == null ? new beaver.Symbol[0]
271:                            : (beaver.Symbol[]) _list_symbols
272:                                    .toArray(new beaver.Symbol[_list_symbols
273:                                            .size()]);
274:                    final Symbol type = _symbols[offset + 4];
275:
276:                    return new Declaration.TypeOf(symbols, type);
277:                }
278:                case 32: // txt_list = TEXT
279:                {
280:                    ArrayList lst = new ArrayList();
281:                    lst.add(_symbols[offset + 1]);
282:                    return new Symbol(lst);
283:                }
284:                case 33: // txt_list = txt_list COMMA TEXT
285:                {
286:                    ((ArrayList) _symbols[offset + 1].value)
287:                            .add(_symbols[offset + 3]);
288:                    return _symbols[offset + 1];
289:                }
290:                case 34: // sym_list = IDENT
291:                {
292:                    ArrayList lst = new ArrayList();
293:                    lst.add(_symbols[offset + 1]);
294:                    return new Symbol(lst);
295:                }
296:                case 35: // sym_list = sym_list COMMA IDENT
297:                {
298:                    ((ArrayList) _symbols[offset + 1].value)
299:                            .add(_symbols[offset + 3]);
300:                    return _symbols[offset + 1];
301:                }
302:                case 36: // rule = IDENT.name IS def_list.defs SEMI
303:                {
304:                    final Symbol name = _symbols[offset + 1];
305:                    final Symbol _symbol_defs = _symbols[offset + 3];
306:                    final ArrayList _list_defs = (ArrayList) _symbol_defs.value;
307:                    final Rule.Definition[] defs = _list_defs == null ? new Rule.Definition[0]
308:                            : (Rule.Definition[]) _list_defs
309:                                    .toArray(new Rule.Definition[_list_defs
310:                                            .size()]);
311:
312:                    return new Rule(name, defs);
313:                }
314:                case 37: // rule = error.e SEMI
315:                {
316:                    final Symbol e = _symbols[offset + 1];
317:
318:                    log.error(e, "malformed production");
319:                    return new Rule(new Symbol(""), new Rule.Definition[] {});
320:                }
321:                case 38: // def_list = definition
322:                {
323:                    ArrayList lst = new ArrayList();
324:                    lst.add(_symbols[offset + 1].value);
325:                    return new Symbol(lst);
326:                }
327:                case 39: // def_list = def_list BAR definition
328:                {
329:                    ((ArrayList) _symbols[offset + 1].value)
330:                            .add(_symbols[offset + 3].value);
331:                    return _symbols[offset + 1];
332:                }
333:                case 40: // lst$def_element = def_element
334:                {
335:                    ArrayList lst = new ArrayList();
336:                    lst.add(_symbols[offset + 1].value);
337:                    return new Symbol(lst);
338:                }
339:                case 41: // lst$def_element = lst$def_element def_element
340:                {
341:                    ((ArrayList) _symbols[offset + 1].value)
342:                            .add(_symbols[offset + 2].value);
343:                    return _symbols[offset + 1];
344:                }
345:                case 48: // definition = opt$lst$def_element.elts opt$rule_precedence.prec opt$CODE.code
346:                {
347:                    final Symbol _symbol_elts = _symbols[offset + 1];
348:                    final ArrayList _list_elts = (ArrayList) _symbol_elts.value;
349:                    final Rule.Definition.Element[] elts = _list_elts == null ? new Rule.Definition.Element[0]
350:                            : (Rule.Definition.Element[]) _list_elts
351:                                    .toArray(new Rule.Definition.Element[_list_elts
352:                                            .size()]);
353:                    final Symbol prec = _symbols[offset + 2];
354:                    final Symbol code = _symbols[offset + 3];
355:
356:                    return new Rule.Definition(elts, prec, code);
357:                }
358:                case 49: // definition = error.e
359:                {
360:                    final Symbol e = _symbols[offset + 1];
361:
362:                    log.error(e, "malformed nonterminal definition");
363:                    return new Rule.Definition(null, new Symbol(null),
364:                            new Symbol(null));
365:                }
366:                case 54: // def_element = IDENT.name opt$alias.alias opt$ebnf_symbol.ebnf_mark
367:                {
368:                    final Symbol name = _symbols[offset + 1];
369:                    final Symbol alias = _symbols[offset + 2];
370:                    final Symbol ebnf_mark = _symbols[offset + 3];
371:
372:                    return new Rule.Definition.Element(name, alias, ebnf_mark);
373:                }
374:                case 2: // opt$lst$declaration = 
375:                case 42: // opt$lst$def_element = 
376:                case 44: // opt$rule_precedence = 
377:                case 46: // opt$CODE = 
378:                case 50: // opt$alias = 
379:                case 52: // opt$ebnf_symbol = 
380:                {
381:                    return new Symbol(null);
382:                }
383:                case 3: // opt$lst$declaration = lst$declaration
384:                case 7: // declaration = header
385:                case 8: // declaration = package
386:                case 9: // declaration = import
387:                case 10: // declaration = class_name
388:                case 11: // declaration = class_code
389:                case 12: // declaration = class_init
390:                case 13: // declaration = grammar_goal
391:                case 14: // declaration = typeof
392:                case 15: // declaration = terminals
393:                case 16: // declaration = left_assoc
394:                case 17: // declaration = right_assoc
395:                case 18: // declaration = nonassoc
396:                case 43: // opt$lst$def_element = lst$def_element
397:                case 45: // opt$rule_precedence = rule_precedence
398:                case 47: // opt$CODE = CODE
399:                case 51: // opt$alias = alias
400:                case 53: // opt$ebnf_symbol = ebnf_symbol
401:                case 56: // ebnf_symbol = QUESTION
402:                case 57: // ebnf_symbol = PLUS
403:                case 58: // ebnf_symbol = STAR
404:                {
405:                    return _symbols[offset + 1];
406:                }
407:                case 55: // alias = DOT IDENT
408:                case 59: // rule_precedence = AT IDENT
409:                {
410:                    return _symbols[offset + 2];
411:                }
412:                default:
413:                    throw new IllegalArgumentException("unknown production #"
414:                            + rule_num);
415:                }
416:            }
417:        }
www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.