生成的词法分析器中的_serializedATN第一个元素值错误

时间:2013-09-21 10:37:36

标签: c#

我正在使用VS2010 Exp。 C#XP SP3环境

我目前的问题是SerializedVersion值

Run-Time ERROR: System.TypeInitializationException: 
The type initializer for 'Antlr4.Runtime.Verilog2001Lexer' threw an exception. ---> System.NotSupportedException: Could not deserialize ATN with version 5 (expected 3).

我找到了根本原因,但我不知道一个解决方法,所以我卡住了

ATNSimulator.cs:

public abstract class ATNSimulator
{
    public static readonly int SerializedVersion = 3;
       …………………

    public static ATN Deserialize(char[] data, bool optimize)
    {
        data = (char[])data.Clone();
        // don't adjust the first value since that's the version number
        for (int i = 1; i < data.Length; i++)
        {
            data[i] = (char)(data[i] - 2);
        }
        int p = 0;
        int version = ToInt(data[p++]);
        if (version != SerializedVersion)      <<<<<< mismatch 5 vs. 3
        {

但是在生成的词法分析器中

  {     public static readonly string _serializedATN =
              "\x5\x4\xB5\x638\b\x1\x4\x2\t\x2\x4\x3\t\x3\x4\x4\t\x4\x4\x5\t\x5\x4\x6"+ }

任何评论都表示赞赏 感谢

1 个答案:

答案 0 :(得分:0)

这种情况意味着您使用旧版本的C#目标生成了词法分析器,但正在使用新版本运行代码。如果您最近更新了项目中的库,则Clean + Build将使用正确的目标重新生成语法。

如果您按照这些说明操作,请从NuGet重新安装antlr4附加组件。

https://github.com/sharwell/antlr4cs