2015-03-13 91 views
3

在Java中有这条线parser.getInterpreter().setSLL(true);可以将ANTLR4解析器切换为SLL(*)。 C#中的等价物是什么?C#Antlr4最大速度

谢谢你在前进,WIDI

+0

'parser.getInterpreter()'会'parser.Interpreter'在C#中,但似乎没有'SLL'财产... – Onur 2015-03-13 15:19:54

+0

这就是为什么我问:d – 2015-03-13 16:32:04

回答

2

我找不到setSLL任何引用。 wiki页面here正在使用setPredictionMode方法来启用sll。这是来自页面的Java代码片段。

CharStream input = new ANTLRFileStream(args[0]); 
ExprLexer lexer = new ExprLexer(input); 
CommonTokenStream tokens = new CommonTokenStream(lexer); 
ExprParser parser = new ExprParser(tokens); 
parser.getInterpreter().setPredictionMode(PredictionMode.SLL); 
try { 
    parser.stat();  // STAGE 1 
} 
catch (Exception ex) { 
    tokens.reset(); // rewind input stream 
    parser.reset(); 
    parser.getInterpreter().setPredictionMode(PredictionMode.LL); 
    parser.stat();  // STAGE 2 
    // if we parse ok, it's LL not SLL 
} 

下面介绍如何在C#中设置预测模式。

parser.Interpreter.PredictionMode = Antlr4.Runtime.Atn.PredictionMode.Sll;