mirror of https://github.com/aamine/cbc
61 lines
1.4 KiB
Java
61 lines
1.4 KiB
Java
package net.loveruby.cflat.ast;
|
|
import net.loveruby.cflat.type.*;
|
|
import net.loveruby.cflat.asm.*;
|
|
|
|
public class DefinedVariable extends Variable {
|
|
protected ExprNode initializer;
|
|
protected MemoryReference memref;
|
|
|
|
public DefinedVariable(boolean priv, TypeNode type,
|
|
String name, ExprNode init) {
|
|
super(priv, type, name);
|
|
initializer = init;
|
|
sequence = -1;
|
|
}
|
|
|
|
public boolean isDefined() {
|
|
return true;
|
|
}
|
|
|
|
public boolean hasInitializer() {
|
|
return (initializer != null);
|
|
}
|
|
|
|
public boolean isInitialized() {
|
|
return hasInitializer();
|
|
}
|
|
|
|
public ExprNode initializer() {
|
|
return initializer;
|
|
}
|
|
|
|
public void setInitializer(ExprNode expr) {
|
|
this.initializer = expr;
|
|
}
|
|
|
|
public void setMemref(MemoryReference mem) {
|
|
this.memref = mem;
|
|
}
|
|
|
|
public MemoryReference memref() {
|
|
if (memref == null)
|
|
throw new Error("unresolved variable address");
|
|
return memref;
|
|
}
|
|
|
|
public AsmEntity address() {
|
|
return null;
|
|
}
|
|
|
|
protected void _dump(Dumper d) {
|
|
d.printMember("name", name);
|
|
d.printMember("isPrivate", isPrivate);
|
|
d.printMember("typeNode", typeNode);
|
|
d.printMember("initializer", initializer);
|
|
}
|
|
|
|
public void accept(ASTVisitor visitor) {
|
|
visitor.visit(this);
|
|
}
|
|
}
|