package edu.stanford.nlp.sempre.test;
import edu.stanford.nlp.sempre.*;
/**
* Useful utilities and dummy system components for writing tests.
*
* @author Roy Frostig
*/
public final class TestUtils {
private TestUtils() { }
public static Grammar makeAbcGrammar() {
Grammar g = new Grammar();
g.addStatement("(rule $X (a) (ConstantFn (string a)))");
g.addStatement("(rule $X (b) (ConstantFn (string b)))");
g.addStatement("(rule $X (c) (ConstantFn (string c)))");
g.addStatement("(rule $X ($X $X) (ConcatFn ,))");
g.addStatement("(rule $ROOT ($X) (IdentityFn))");
return g;
}
public static Grammar makeArithmeticGrammar() {
Grammar g = new Grammar();
g.addStatement("(rule $Expr ($TOKEN) (NumberFn))");
g.addStatement("(rule $Expr ($Expr $Partial) (JoinFn backward))");
g.addStatement("(rule $Partial ($Operator $Expr) (JoinFn forward))");
g.addStatement("(rule $Operator (plus) (ConstantFn (lambda y (lambda x (call + (var x) (var y))))))");
g.addStatement("(rule $Operator (times) (ConstantFn (lambda y (lambda x (call * (var x) (var y))))))");
g.addStatement("(rule $Operator (and) (ConstantFn (lambda y (lambda x (call + (var x) (var y))))))");
g.addStatement("(rule $Operator (and) (ConstantFn (lambda y (lambda x (call * (var x) (var y))))))");
g.addStatement("(rule $ROOT ($Expr) (IdentityFn))");
return g;
}
public static Grammar makeNumberConcatGrammar() {
Grammar g = new Grammar();
g.addStatement("(rule $Number ($TOKEN) (NumberFn))");
g.addStatement("(rule $Number ($Number $Number) (ConcatFn ,))");
g.addStatement("(rule $ROOT ($Number) (IdentityFn))");
return g;
}
public static Builder makeSimpleBuilder() {
Builder builder = new Builder();
builder.grammar = makeNumberConcatGrammar();
builder.executor = new FormulaMatchExecutor();
builder.buildUnspecified();
return builder;
}
public static Dataset makeSimpleDataset() {
return new Dataset();
}
public static Learner makeSimpleLearner(Parser parser, Params params, Dataset dataset) {
return new Learner(parser, params, dataset);
}
public static Learner makeSimpleLearner(Builder builder, Dataset dataset) {
return makeSimpleLearner(builder.parser, builder.params, dataset);
}
public static Learner makeSimpleLearner() {
return makeSimpleLearner(makeSimpleBuilder(), makeSimpleDataset());
}
public static Example makeSimpleExample(String utterance) { return makeSimpleExample(utterance, null); }
public static Example makeSimpleExample(String utterance, Value targetValue) {
Builder builder = new Builder();
builder.build();
Example ex = new Example.Builder()
.setId("_id")
.setUtterance(utterance)
.setTargetValue(targetValue)
.createExample();
ex.preprocess();
return ex;
}
}