package org.eclipse.iee.translator.antlr.translator.model; import java.util.ArrayList; import java.util.Collections; import java.util.List; public class FunctionExpression extends Expression { private String name; private List<Expression> parameters; public FunctionExpression() { parameters = new ArrayList<>(); } public FunctionExpression(String name, List<Expression> parameters) { this.name = name; this.parameters = new ArrayList<>(parameters); } public String getName() { return name; } public void setName(String name) { String oldValue = this.name; this.name = name; getPropertyChangeSupport().firePropertyChange("name", oldValue, name); } public List<Expression> getParameters() { return Collections.unmodifiableList(parameters); } public void setParameters(List<Expression> parameters) { List<Expression> oldValue = this.parameters; this.parameters = new ArrayList<>(parameters); getPropertyChangeSupport().firePropertyChange("parameters", oldValue, parameters); } @Override public String getText() { StringBuilder sb = new StringBuilder(); sb.append(name != null ? name : PLACEHOLDER); sb.append('('); for (int i = 0; i < parameters.size(); i++) { if (i > 0) { sb.append(", "); } sb.append(parameters.get(i).getText()); } sb.append(')'); return sb.toString(); } @Override public <R, C> R accept(Visitor<R, C> visitor, C context) { return visitor.acceptFunctionExpression(this, context); } }