001 package org.maltparser.parser.algorithm.nivre; 002 003 import org.maltparser.core.exception.MaltChainedException; 004 import org.maltparser.core.feature.function.Function; 005 import org.maltparser.parser.AbstractParserFactory; 006 import org.maltparser.parser.Algorithm; 007 import org.maltparser.parser.DependencyParserConfig; 008 import org.maltparser.parser.ParserConfiguration; 009 /** 010 * @author Johan Hall 011 * 012 */ 013 public abstract class NivreFactory implements AbstractParserFactory { 014 protected Algorithm algorithm; 015 protected DependencyParserConfig manager; 016 017 public NivreFactory(Algorithm algorithm) { 018 setAlgorithm(algorithm); 019 setManager(algorithm.getManager()); 020 } 021 022 public ParserConfiguration makeParserConfiguration() throws MaltChainedException { 023 boolean allowRoot = (Boolean)manager.getOptionValue("nivre", "allow_root"); 024 boolean allowReduce = (Boolean)manager.getOptionValue("nivre", "allow_reduce"); 025 if (manager.getConfigLogger().isInfoEnabled()) { 026 manager.getConfigLogger().info(" Parser configuration : Nivre with with allow_root="+allowRoot+" and allow_reduce="+allowReduce+"\n"); 027 } 028 return new NivreConfig(manager.getSymbolTables(), allowRoot, allowReduce); 029 } 030 031 public Function makeFunction(String subFunctionName) throws MaltChainedException { 032 return new NivreAddressFunction(subFunctionName, algorithm); 033 } 034 035 public Algorithm getAlgorithm() { 036 return algorithm; 037 } 038 039 public void setAlgorithm(Algorithm algorithm) { 040 this.algorithm = algorithm; 041 } 042 043 public DependencyParserConfig getManager() { 044 return manager; 045 } 046 047 public void setManager(DependencyParserConfig manager) { 048 this.manager = manager; 049 } 050 }