KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > antlr > TreeWalkerGrammar


1 package antlr;
2
3 /* ANTLR Translator Generator
4  * Project led by Terence Parr at http://www.jGuru.com
5  * Software rights: http://www.antlr.org/RIGHTS.html
6  *
7  * $Id: //depot/code/org.antlr/main/main/antlr/TreeWalkerGrammar.java#6 $
8  */

9
10 import java.util.Hashtable JavaDoc;
11 import java.util.Enumeration JavaDoc;
12 import java.io.IOException JavaDoc;
13
14 import antlr.collections.impl.BitSet;
15 import antlr.collections.impl.Vector;
16
17
18 /** Parser-specific grammar subclass */
19 class TreeWalkerGrammar extends Grammar {
20     // true for transform mode
21
protected boolean transform = false;
22
23
24     TreeWalkerGrammar(String JavaDoc className_, Tool tool_, String JavaDoc superClass) {
25         super(className_, tool_, superClass);
26     }
27
28     /** Top-level call to generate the code for this grammar */
29     public void generate() throws IOException JavaDoc {
30         generator.gen(this);
31     }
32
33     // Get name of class from which generated parser/lexer inherits
34
protected String JavaDoc getSuperClass() {
35         return "TreeParser";
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("-traceTreeParser")) {
50                 traceRules = true;
51                 antlrTool.setArgOK(i);
52             }
53 // else if ( args[i].equals("-debug") ) {
54
// debuggingOutput = true;
55
// superClass = "parseview.DebuggingTreeWalker";
56
// Tool.setArgOK(i);
57
// }
58
}
59     }
60
61     /** Set tree parser options */
62     public boolean setOption(String JavaDoc key, Token value) {
63         if (key.equals("buildAST")) {
64             if (value.getText().equals("true")) {
65                 buildAST = true;
66             }
67             else if (value.getText().equals("false")) {
68                 buildAST = false;
69             }
70             else {
71                 antlrTool.error("buildAST option must be true or false", getFilename(), value.getLine(), value.getColumn());
72             }
73             return true;
74         }
75         if (key.equals("ASTLabelType")) {
76             super.setOption(key, value);
77             return true;
78         }
79         if (super.setOption(key, value)) {
80             return true;
81         }
82         antlrTool.error("Invalid option: " + key, getFilename(), value.getLine(), value.getColumn());
83         return false;
84     }
85 }
86
Popular Tags