2014-05-21 42 views
0

我想在ANTLR4中修飾一些CSharp語法。 下面是語法: http://pastie.org/9197255ANTLR 4.2.2:不匹配的輸入

下面是測試類:

public class Test 
{ 
    public static void Main() 
    { 
     System.Console.WriteLine("Hello, World!"); 
    } 
} 

這裏是錯誤: 線1:0不匹配輸入 '公共' 期待ACCESS_MODIFIER

什麼問題?

回答

1

輸入public與詞法分析器規則IDENTIFIER和都匹配。 ANTLR通過選擇語法中聲明的第一個解決了這種歧義。換句話說,對於您的語法,輸入public將永遠是IDENTIFIER,永遠不會是。

您可以通過將IDENTIFIER規則移動到其他關鍵字的規則之後來解決此問題。

+0

非常感謝! –