package edu.stanford.nlp.sempre;
import java.lang.reflect.Constructor;
import fig.basic.Option;
import fig.exec.Execution;
/**
* Entry point for the semantic parser.
*
* @author Percy Liang
*/
public class Main implements Runnable {
@Option public boolean interactive = false;
@Option public boolean server = false;
@Option public String masterType = "edu.stanford.nlp.sempre.Master";
public void run() {
Builder builder = new Builder();
builder.build();
Dataset dataset = new Dataset();
dataset.read();
Learner learner = new Learner(builder.parser, builder.params, dataset);
learner.learn();
if (server || interactive) {
Master master = createMaster(masterType, builder);
if (server)
master.runServer();
if (interactive)
master.runInteractivePrompt();
}
}
public Master createMaster(String masterType, Builder builder) {
try {
Class<?> masterClass = Class.forName(masterType);
Constructor<?> constructor = masterClass.getConstructor(Builder.class);
return (Master)constructor.newInstance(builder);
} catch (Throwable t) {
t.printStackTrace();
}
return null;
}
public static void main(String[] args) {
Execution.run(args, "Main", new Main(), Master.getOptionsParser());
}
}