Antlr4 目标 C# 错误



我已经设置了我的C#项目,以使用Antlr4构建目标和扩展来编译g4语法。 但是,当我构建时,我收到以下错误。 有什么想法吗?

Error   1   The name 'HIDDEN' does not exist in the current context C:gNOSISOracleSoftwareoracleoracleobjx64DebugVerilog2001Lexer.cs   131 22  oracle
Error   2   The name 'HIDDEN' does not exist in the current context C:gNOSISOracleSoftwareoracleoracleobjx64DebugVerilog2001Lexer.cs   136 22  oracle
Error   4   The name 'HIDDEN' does not exist in the current context C:gNOSISOracleSoftwareoracleoracleobjx64DebugVerilog2001Lexer.cs   145 22  oracle
Error   5   'Antlr4.Runtime.ICharStream' does not contain a definition for 'LA' and no extension method 'LA' accepting a first argument of type 'Antlr4.Runtime.ICharStream' could be found (are you missing a using directive or an assembly reference?)   C:gNOSISOracleSoftwareoracleoracleobjx64DebugVerilog2001Lexer.cs   156 25  oracle
Error   6   'Antlr4.Runtime.ICharStream' does not contain a definition for 'LA' and no extension method 'LA' accepting a first argument of type 'Antlr4.Runtime.ICharStream' could be found (are you missing a using directive or an assembly reference?)   C:gNOSISOracleSoftwareoracleoracleobjx64DebugVerilog2001Lexer.cs   156 44  oracle
Error   7   'Antlr4.Runtime.ICharStream' does not contain a definition for 'LA' and no extension method 'LA' accepting a first argument of type 'Antlr4.Runtime.ICharStream' could be found (are you missing a using directive or an assembly reference?)   C:gNOSISOracleSoftwareoracleoracleobjx64DebugVerilog2001Lexer.cs   156 64  oracle
Error   8   'Antlr4.Runtime.ICharStream' does not contain a definition for 'LA' and no extension method 'LA' accepting a first argument of type 'Antlr4.Runtime.ICharStream' could be found (are you missing a using directive or an assembly reference?)   C:gNOSISOracleSoftwareoracleoracleobjx64DebugVerilog2001Lexer.cs   156 84  oracle
Error   9   The name 'EOF' does not exist in the current context    C:gNOSISOracleSoftwareoracleoracleobjx64DebugVerilog2001Parser.cs  920 23  oracle
Error   10  'oracle.Verilog2001Parser' does not contain a definition for 'EOF'  C:gNOSISOracleSoftwareoracleoracleobjx64DebugVerilog2001Parser.cs  875 66  oracle

此问题以及其他一些相关问题已在以下最近的一系列提交中修复:

https://github.com/sharwell/antlr4cs/compare/2ac3c964...c0aa59cb

这些更改将包含在下一版本中。在此之前,您可以在词法分析器语法中使用以下语言(对于组合语法,请使用@lexer::members(:

@members {
    public const int EOF = Eof;
    public const int HIDDEN = Hidden;
}

错误 5-8 与语法中的语义谓词有关。在 C# 目标中,前瞻方法是 La ,而不是LA

对于"La"/"LA"部分,您可以添加一些扩展方法来修复它:

namespace Antlr4.Runtime
{
    public static class AntlrCsCompatability
    {
        public static int LA(this ICharStream self, int i)
        {
            return self.La(i: i);
        }
    }
}

律法分析器也是如此:

namespace GeneratedCode.ANTLR4
{
    public partial class STLexer
    {
        public const int EOF = Eof;
        public const int HIDDEN = Hidden;
    }
}

相关内容

  • 没有找到相关文章

最新更新