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 {
17 public NameNode(NameDescriptor nd) {
24 public ExpressionNode getExpression() {
28 public ClassDescriptor getClassDesc() {
32 public void setClassDesc(ClassDescriptor cd) {
37 public void setExpression(ExpressionNode en) {
41 public void setVar(Descriptor vd) {
45 public void setField(FieldDescriptor fd) {
49 public FieldDescriptor getField() {
53 public boolean isTag() {
54 return (vd instanceof TagVarDescriptor);
57 public VarDescriptor getVar() {
58 return (VarDescriptor) vd;
61 public TagVarDescriptor getTagVar() {
62 return (TagVarDescriptor) vd;
65 public TypeDescriptor getType() {
71 return new TypeDescriptor(TypeDescriptor.TAG);
73 return ((VarDescriptor)vd).getType();
76 TypeDescriptor tp = new TypeDescriptor(cd);
85 public TypeDescriptor getClassType() {
87 TypeDescriptor tp = new TypeDescriptor(cd);
94 public NameDescriptor getName() {
98 public String printNode(int indent) {
99 return name.toString();
103 return Kind.NameNode;
106 public Long evaluate() {
109 if(fd.isFinal() && fd.isStatic()) {
110 eval = fd.getExpressionNode().evaluate();
111 } else if(fd.isEnum()) {
112 eval = Long.valueOf((long)fd.enumValue());
114 } else if(en!= null) {
115 eval = en.evaluate();