2014-05-21 40 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

非常感谢! –