我正在尝试安装ANTLR4以使用Xamarin项目。现在,当我尝试在项目中包含解析器和词法分析器文件时,我收到编译错误(无法识别的界面)。
以下是我安装应用程序的方法。
$ cd /usr/local/lib
$ curl -O http://www.antlr.org/download/antlr-4.5-complete.jar
antlr-4.5-complete.jar
添加到CLASSPATH
:
$ export CLASSPATH=".:/usr/local/lib/antlr-4.5-complete.jar:$CLASSPATH"
$ alias antlr4='java -Xmx500M -cp "/usr/local/lib/antlr-4.5-complete.jar:$CLASSPATH" org.antlr.v4.Tool'
这是一个用
进行测试的简单语法// Define a grammar called Hello
grammar Hello;
options
{
language = CSharp;
}
r : 'hello' ID ; // match keyword hello followed by an identifier
ID : [a-z]+ ; // match lower-case identifiers
WS : [ \t\r\n]+ -> skip ; // skip spaces, tabs, newlines
从终端运行命令antlr4 Hello.g4
会生成C#的词法分析器/解析器文件。当我现在尝试将这些文件复制到我的Xamarin项目中时,我被要求解决几个无法识别的符号。
我应该安装什么ANTLR包?我尝试了4.3.0版本,但这显然没有定义IVocabulary
接口(据我所知,没有其他编译错误)。从描述中,该版本的软件包是使用Visual Studio 2010或更高版本构建的。与Xamarin一起使用的ANTLR /包的正确版本是什么?
答案 0 :(得分:1)
我可以通过安装this version of the package来构建内容。从那里,我将.jar文件复制到/usr/local/lib
,并将antlr4
命令添加到我的.bash_profile:
export
CLASSPATH=".:/usr/local/lib/antlr4-csharp-4.5-SNAPSHOT-complete.jar:$CLASSPATH"
alias antlr4='java -jar
/usr/local/lib/antlr4-csharp-4.5-SNAPSHOT-complete.jar'
还有一件事。应从语法文件中删除目标语言选项,以支持使用命令行参数。您现在应该能够使用:antlr4 Hello.g4 -Dlanguage=CSharp_v4_0
生成.cs文件。