source: trunk/yao/share/antlr-2.7.7/antlr/TreeWalkerGrammar.java @ 1

Last change on this file since 1 was 1, checked in by lnalod, 15 years ago

Initial import of YAO sources

File size: 2.7 KB
Line 
1package antlr;
2
3/* ANTLR Translator Generator
4 * Project led by Terence Parr at http://www.cs.usfca.edu
5 * Software rights: http://www.antlr.org/license.html
6 *
7 * $Id: //depot/code/org.antlr/release/antlr-2.7.7/antlr/TreeWalkerGrammar.java#2 $
8 */
9
10import java.util.Hashtable;
11import java.util.Enumeration;
12import java.io.IOException;
13
14import antlr.collections.impl.BitSet;
15import antlr.collections.impl.Vector;
16
17
18/** Parser-specific grammar subclass */
19class TreeWalkerGrammar extends Grammar {
20    // true for transform mode
21    protected boolean transform = false;
22
23
24    TreeWalkerGrammar(String className_, Tool tool_, String 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 {
30        generator.gen(this);
31    }
32
33    // Get name of class from which generated parser/lexer inherits
34    protected String 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[] 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 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 (key.equals("className")) {
80            super.setOption(key, value);
81            return true;
82        }
83        if (super.setOption(key, value)) {
84            return true;
85        }
86        antlrTool.error("Invalid option: " + key, getFilename(), value.getLine(), value.getColumn());
87        return false;
88    }
89}
Note: See TracBrowser for help on using the repository browser.