package edu.stanford.nlp.sempre; import fig.basic.LispTree; /** * Takes two strings and returns their concatenation. * * @author Percy Liang */ public class ConcatFn extends SemanticFn { String delim; public ConcatFn() { } public ConcatFn(String delim) { this.delim = delim; } public void init(LispTree tree) { super.init(tree); delim = tree.child(1).value; } public DerivationStream call(Example ex, final Callable c) { return new SingleDerivationStream() { @Override public Derivation createDerivation() { StringBuilder out = new StringBuilder(); for (int i = 0; i < c.getChildren().size(); i++) { if (i > 0) out.append(delim); out.append(c.childStringValue(i)); } return new Derivation.Builder() .withCallable(c) .withStringFormulaFrom(out.toString()) .createDerivation(); } }; } }