package edu.stanford.nlp.parser.common;
import java.io.PrintWriter;
import java.util.List;
import edu.stanford.nlp.ling.HasWord;
import edu.stanford.nlp.util.concurrent.ThreadsafeProcessor;
/**
* Takes a sentence and returns a ParserQuery with the given sentence parsed.
* Can be used in a MulticoreWrapper.
*
* @author John Bauer
*/
public class ParsingThreadsafeProcessor implements ThreadsafeProcessor<List<? extends HasWord>, ParserQuery> {
ParserGrammar pqFactory;
PrintWriter pwErr;
public ParsingThreadsafeProcessor(ParserGrammar pqFactory) {
this(pqFactory, null);
}
public ParsingThreadsafeProcessor(ParserGrammar pqFactory, PrintWriter pwErr) {
this.pqFactory = pqFactory;
this.pwErr = pwErr;
}
@Override
public ParserQuery process(List<? extends HasWord> sentence) {
ParserQuery pq = pqFactory.parserQuery();
if (pwErr != null) {
pq.parseAndReport(sentence, pwErr);
} else {
pq.parse(sentence);
}
return pq;
}
@Override
public ThreadsafeProcessor<List<? extends HasWord>, ParserQuery> newInstance() {
// ParserQueryFactories should be threadsafe
return this;
}
}