Charj : added pup generation for primitive type class members
[charm.git] / src / langs / charj / src / charj / translator / CharjAST.java
1 package charj.translator;
2
3 import org.antlr.runtime.tree.CommonTree;
4 import org.antlr.runtime.tree.Tree;
5 import org.antlr.runtime.Token;
6 import org.antlr.runtime.CommonToken;
7 import java.util.*;
8
9 /**
10  * Custom subclass of Antlr's tree node. Doesn't do anything special yet,
11  * it's just here to make it easier to add features later.
12  */
13 public class CharjAST extends CommonTree
14 {
15     /** Semantic information about this node. Includes type, scope, location
16      * of definition, etc. */
17     public Symbol symbol;
18
19     public CharjAST(Token t) {
20         super(t);
21     }
22
23     public CharjAST(int type, String text) {
24         super(new CommonToken(type, text));
25     }
26
27     public CharjAST getParent()
28     {
29         return (CharjAST) super.getParent();
30     }
31
32     public List<CharjAST> getChildren()
33     {
34         return (List<CharjAST>) super.getChildren();
35     }
36
37     public CharjAST getChild(int index)
38     {
39         try
40         {
41             return (CharjAST) super.getChild(index);
42         }
43         catch(ClassCastException e)
44         {
45             Tree child = super.getChild(index);
46             System.out.println("possible error node: " + child);
47             return new CharjAST(child.getType(), child.getText());
48         }
49     }
50
51     public String toString() {
52         String s = super.toString();
53         if (symbol != null) {
54             s += "(" + symbol + ")" ;
55         }
56         return s;
57     }
58
59     public CharjAST dupNode()
60     {
61         return new CharjAST(getType(), getText());
62     }
63
64 }