Newer
Older
DesignCraft / src / main / java / ast / FieldAccess.java
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;
	}
}