设置 ANTLR 4 语法来处理 Java 和 C# 环境

Setup ANTLR 4 grammar to handle Java and C# environments

我在 C# 和 Java 环境中都使用了 ANTLR 4 拆分语法,我无法编译这两种语言的语法,除非我将函数 NotifyErrorListeners 更改为使用驼峰式大小写 notifyErrorListeners。

C# 示例:

statement       
:   expression SEMICOLON
|   { NotifyErrorListeners("; expected."); } expression // They forgot the semicolon.

Java 示例:

statement       
:   expression SEMICOLON
|   { notifyErrorListeners("; expected."); } expression // They forgot the semicolon.

我的 C# ANTLR 环境是通过 Nuget 拉取的:Antlr4 4.2.2-alpha001

我的 Java ANTLR 环境是从 antlr.org 下载的:antlr-4.5-complete.jar

有没有一种方法可以修改我的语法,这样我在切换语言时就不必修改它了?是否有更好的功能可以促进两种环境?

我的问题已经解决了。在 C# 项目中为解析器创建部分 class,并确保它位于相同的程序集和命名空间中。然后很容易添加一个使用骆驼外壳 Java 的方法。现在我可以在不修改语法的情况下使用这两种环境。

public partial class ScriptParser
{
    public void notifyErrorListeners(string message)
    {
        this.NotifyErrorListeners(message);
    }
}

感谢laune 提出的问题和建议。你把我推向了正确答案。