List of usage examples for org.antlr.v4.runtime.atn ParserATNSimulator setPredictionMode
public final void setPredictionMode(PredictionMode mode)
From source file:org.tvl.goworks.editor.go.parser.GoParserFactory.java
License:Open Source License
protected void configureParser(@NonNull Parser parser, @NonNull ParserConfiguration configuration) { ParserATNSimulator interpreter = parser.getInterpreter(); // common configuration interpreter.force_global_context = false; interpreter.always_try_local_context = true; interpreter.optimize_tail_calls = true; parser.setBuildParseTree(true);/*from w w w .j av a 2 s.com*/ parser.removeErrorListeners(); switch (configuration) { case FASTEST: interpreter.setPredictionMode(PredictionMode.SLL); interpreter.tail_call_preserves_sll = false; interpreter.treat_sllk1_conflict_as_ambiguity = true; parser.setErrorHandler(new BailErrorStrategy()); break; case SLL: throw new UnsupportedOperationException( "The tail_call_preserves_sll flag cannot change within a single ATN instance."); //interpreter.setPredictionMode(PredictionMode.SLL); //interpreter.tail_call_preserves_sll = true; //interpreter.treat_sllk1_conflict_as_ambiguity = true; //parser.setErrorHandler(new BailErrorStrategy<Token>()); //break; case HYBRID: interpreter.setPredictionMode(PredictionMode.LL); interpreter.tail_call_preserves_sll = false; interpreter.treat_sllk1_conflict_as_ambiguity = true; parser.setErrorHandler(new BailErrorStrategy()); break; case HYBRID_SLL: throw new UnsupportedOperationException( "The tail_call_preserves_sll flag cannot change within a single ATN instance."); //interpreter.setPredictionMode(PredictionMode.LL); //interpreter.tail_call_preserves_sll = true; //interpreter.treat_sllk1_conflict_as_ambiguity = true; //parser.setErrorHandler(new BailErrorStrategy<Token>()); //break; case PRECISE: interpreter.setPredictionMode(PredictionMode.LL); interpreter.tail_call_preserves_sll = false; interpreter.treat_sllk1_conflict_as_ambiguity = false; parser.setErrorHandler(new DefaultErrorStrategy()); parser.addErrorListener(DescriptiveErrorListener.INSTANCE); break; default: throw new IllegalArgumentException("Invalid configuration."); } }