2 import IR.NameDescriptor;
4 import IR.VarDescriptor;
5 import IR.TagVarDescriptor;
6 import IR.TypeDescriptor;
7 import IR.FieldDescriptor;
8 import IR.ClassDescriptor;
10 public class NameNode extends ExpressionNode {
18 public NameNode(NameDescriptor nd) {
26 public boolean isSuper() {
30 public void setIsSuper() {
34 public ExpressionNode getExpression() {
38 public ClassDescriptor getClassDesc() {
42 public void setClassDesc(ClassDescriptor cd) {
47 public void setExpression(ExpressionNode en) {
51 public void setVar(Descriptor vd) {
55 public void setField(FieldDescriptor fd) {
59 public FieldDescriptor getField() {
63 public boolean isTag() {
64 return (vd instanceof TagVarDescriptor);
67 public VarDescriptor getVar() {
68 return (VarDescriptor) vd;
71 public TagVarDescriptor getTagVar() {
72 return (TagVarDescriptor) vd;
75 public TypeDescriptor getType() {
81 return new TypeDescriptor(TypeDescriptor.TAG);
83 return ((VarDescriptor)vd).getType();
86 TypeDescriptor tp = new TypeDescriptor(cd);
95 public TypeDescriptor getClassType() {
97 TypeDescriptor tp = new TypeDescriptor(cd);
104 public NameDescriptor getName() {
108 public String printNode(int indent) {
109 return name.toString();
113 return Kind.NameNode;
116 public Long evaluate() {
119 if(fd.isFinal() && fd.isStatic()) {
120 eval = fd.getExpressionNode().evaluate();
121 } else if(fd.isEnum()) {
122 eval = Long.valueOf((long)fd.enumValue());
124 } else if(en!= null) {
125 eval = en.evaluate();