2015-03-13 79 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;