This commit was manufactured by cvs2svn to create tag 'buildscript'.
[IRC.git] /
1 package IR.Tree;
2 import IR.NameDescriptor;
3 import IR.Descriptor;
4 import IR.VarDescriptor;
5 import IR.TagVarDescriptor;
6 import IR.TypeDescriptor;
7 import IR.FieldDescriptor;
8
9 public class NameNode extends ExpressionNode {
10     NameDescriptor name;
11     Descriptor vd;
12     FieldDescriptor fd;
13     ExpressionNode en;
14
15     public NameNode(NameDescriptor nd) {
16         this.name=nd;
17         this.vd=null;
18         this.fd=null;
19     }
20
21     public ExpressionNode getExpression() {
22         return en;
23     }
24
25     /* Gross hack */
26     public void setExpression(ExpressionNode en) {
27         this.en=en;
28     }
29
30     public void setVar(Descriptor vd) {
31         this.vd=vd;
32     }
33
34     public void setField(FieldDescriptor fd) {
35         this.fd=fd;
36     }
37
38     public FieldDescriptor getField() {
39         return fd;
40     }
41
42     public boolean isTag() {
43         return (vd instanceof TagVarDescriptor);
44     }
45
46     public VarDescriptor getVar() {
47         return (VarDescriptor) vd;
48     }
49
50     public TagVarDescriptor getTagVar() {
51         return (TagVarDescriptor) vd;
52     }
53
54     public TypeDescriptor getType() {
55         if (en!=null)
56             return en.getType();
57         else if (fd!=null)
58             return fd.getType();
59         else if (isTag())
60             return new TypeDescriptor(TypeDescriptor.TAG);
61         else
62             return ((VarDescriptor)vd).getType();
63     }
64
65     NameDescriptor getName() {
66         return name;
67     }
68
69     public String printNode(int indent) {
70         return name.toString();
71     }
72
73     public int kind() {
74         return Kind.NameNode;
75     }
76 }