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 TypeDescriptor tp = new TypeDescriptor(cd);
77 return ((VarDescriptor)vd).getType();
80 public TypeDescriptor getClassType() {
82 TypeDescriptor tp = new TypeDescriptor(cd);
89 NameDescriptor getName() {
93 public String printNode(int indent) {
94 return name.toString();
101 public Long evaluate() {
104 if(fd.isFinal() && fd.isStatic()) {
105 eval = fd.getExpressionNode().evaluate();
106 } else if(fd.isEnum()) {
107 eval = Long.valueOf((long)fd.enumValue());
109 } else if(en!= null) {
110 eval = en.evaluate();