将 python 语法中嵌入的 ANTLR4 java 转换为 C#

Converting ANTLR4 embedded java in python grammar to C#

我正在尝试将 python3 语法 (https://github.com/antlr/grammars-v4/blob/master/python3/Python3.g4) 的嵌入式 java 部分实现到 C#。我看到在 java 中使用了一些属性,但我无法在 ANTLR4 的 C# 运行时实现中找到这些属性。

谁能指出以下等效的 C# 属性是什么?

第 100 行:

  private CommonToken commonToken(int type, String text) {
    int stop = this.getCharIndex() - 1;
    int start = text.isEmpty() ? stop : stop - text.length() + 1;
    return new CommonToken(this._tokenFactorySourcePair, type, DEFAULT_TOKEN_CHANNEL, start, stop);
  }

在这里我找不到 _tokenFactorySourcePair 属性

第 132 行:

  boolean atStartOfInput() {
    return super.getCharPositionInLine() == 0 && super.getLine() == 1;
  }

在这里我找不到 getCharPositionInLine() 属性

我从 Github 获得了 Antlr4 程序集源并将其添加到我的项目中。这些属性存在但是是私有的。我刚刚更改了它并解决了这个问题。

似乎 _tokenFactorySourcePair 已经在当前 Antlr4 版本的 Lexer 上 protected 完成,所以应该会自行解决。

getCharPositionInLine() 的 属性 等价于 Lexer.Column