如何在 Xamarin 中使用 ANTLR4

本文关键字:ANTLR4 Xamarin | 更新日期: 2023-09-27 18:30:25

我正在尝试安装 ANTLR4 以处理 Xamarin 项目。现在,当我尝试在项目中包含解析器和词法分析器文件时,我收到编译错误(无法识别的接口)。

这是我安装应用程序的方式。

  1. 安装 Java(版本 1.6 或更高版本)
  2. 下载: $ cd /usr/local/lib $ curl -O http://www.antlr.org/download/antlr-4.5-complete.jar
  3. antlr-4.5-complete.jar添加到CLASSPATH $ export CLASSPATH=".:/usr/local/lib/antlr-4.5-complete.jar:$CLASSPATH"
  4. 为 ANTLR 工具创建别名: $ 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/包是什么?

如何在 Xamarin 中使用 ANTLR4

我能够通过安装此版本的软件包来构建东西。从那里,我将.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'

还有一件事。应从语法文件中删除目标语言选项,以便使用命令行参数。您现在应该能够使用以下内容生成.cs文件:antlr4 Hello.g4 -Dlanguage=CSharp_v4_0 .