package ast;
/**
* Represents field accesses in AST (Abstract Syntax Tree)
*
* @author s-yamagiwa
*/
public class FieldAccess extends Expression {
private Expression expression;
private String fieldName;
public FieldAccess(String fieldName) {
this(null, fieldName);
}
public FieldAccess(Expression expression, String fieldName) {
this.expression = expression;
this.fieldName = fieldName;
}
@Override
public Expression replace(Variable variable, Expression expression) {
return new FieldAccess(expression.replace(variable, expression), fieldName);
}
public Expression getExpression() {
return expression;
}
public void setExpression(Expression expression) {
this.expression = expression;
}
public String getFieldName() {
return fieldName;
}
public void setFieldName(String fieldName) {
this.fieldName = fieldName;
}
@Override
public String toString() {
if (expression == null) {
return fieldName;
}
return expression + "." + fieldName;
}
}