KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > persistence > antlr > ParserGrammar


1 package persistence.antlr;
2
3 /* ANTLR Translator Generator
4  * Project led by Terence Parr at http://www.jGuru.com
5  * Software rights: http://www.antlr.org/license.html
6  *
7  */

8
9 import java.util.Hashtable JavaDoc;
10 import java.util.Enumeration JavaDoc;
11 import java.io.IOException JavaDoc;
12
13 import persistence.antlr.collections.impl.BitSet;
14 import persistence.antlr.collections.impl.Vector;
15
16
17 /** Parser-specific grammar subclass */
18 class ParserGrammar extends Grammar {
19
20
21     ParserGrammar(String JavaDoc className_, Tool tool_, String JavaDoc superClass) {
22         super(className_, tool_, superClass);
23     }
24
25     /** Top-level call to generate the code for this grammar */
26     public void generate() throws IOException JavaDoc {
27         generator.gen(this);
28     }
29
30     // Get name of class from which generated parser/lexer inherits
31
protected String JavaDoc getSuperClass() {
32         // if debugging, choose the debugging version of the parser
33
if (debuggingOutput)
34             return "debug.LLkDebuggingParser";
35         return "LLkParser";
36     }
37
38     /**Process command line arguments.
39      * -trace have all rules call traceIn/traceOut
40      * -traceParser have parser rules call traceIn/traceOut
41      * -debug generate debugging output for parser debugger
42      */

43     public void processArguments(String JavaDoc[] args) {
44         for (int i = 0; i < args.length; i++) {
45             if (args[i].equals("-trace")) {
46                 traceRules = true;
47                 antlrTool.setArgOK(i);
48             }
49             else if (args[i].equals("-traceParser")) {
50                 traceRules = true;
51                 antlrTool.setArgOK(i);
52             }
53             else if (args[i].equals("-debug")) {
54                 debuggingOutput = true;
55                 antlrTool.setArgOK(i);
56             }
57         }
58     }
59
60     /** Set parser options -- performs action on the following options:
61      */

62     public boolean setOption(String JavaDoc key, Token value) {
63         String JavaDoc s = value.getText();
64         if (key.equals("buildAST")) {
65             if (s.equals("true")) {
66                 buildAST = true;
67             }
68             else if (s.equals("false")) {
69                 buildAST = false;
70             }
71             else {
72                 antlrTool.error("buildAST option must be true or false", getFilename(), value.getLine(), value.getColumn());
73             }
74             return true;
75         }
76         if (key.equals("interactive")) {
77             if (s.equals("true")) {
78                 interactive = true;
79             }
80             else if (s.equals("false")) {
81                 interactive = false;
82             }
83             else {
84                 antlrTool.error("interactive option must be true or false", getFilename(), value.getLine(), value.getColumn());
85             }
86             return true;
87         }
88         if (key.equals("ASTLabelType")) {
89             super.setOption(key, value);
90             return true;
91         }
92         if (super.setOption(key, value)) {
93             return true;
94         }
95         antlrTool.error("Invalid option: " + key, getFilename(), value.getLine(), value.getColumn());
96         return false;
97     }
98 }
99
Popular Tags