【问题标题】:ANTLR usable with C#ANTLR 可用于 C#
【发布时间】:2012-08-31 04:37:42
【问题描述】:

20 多年前,我使用 yacc/lex 和 C/C++ 为 MS-DOS 平台创建了一个用于 PLC 的自定义编译器。现在同一家公司想要一个新版本。目标平台是 Windows,所以我更喜欢使用 C#。我刚刚花了一天时间用 C# 研究 ANTLR,但到目前为止还不能创建一个简单的解析器。我正在使用 VS2012,但我没有从最新的 ANTLR 下载中找到 .Net 4.0 兼容库。我正在使用 Language=CSharp3 并且没有找到预构建的 .NET 库。尝试使用 VS2012 构建时,尝试从源代码重建库会出错。我需要在第二天左右决定 ANTLR 和 C# 是否是一个可行的选择。有没有人使用 ANTLR 和 C# 来生成大型编译器项目?

尝试构建 antlr3.Runtime 的 CSharp 版本的错误之一:

错误 1 ​​签署程序集 'c:\ANTLR\runtime\CSharp3\Sources\Antlr3.Runtime\obj\Debug\Antlr3.Runtime.dll' 时出现加密失败 - '读取密钥文件时出错 'c:\ANTLR\runtime \CSharp3\Sources\Antlr3.Runtime\Key.snk' -- 系统找不到指定的文件。 ' C:\ANTLR\runtime\CSharp3\Sources\Antlr3.Runtime\CSC Antlr3.Runtime

【问题讨论】:

    标签: c# antlr grammar yacc lex


    【解决方案1】:

    我相信您必须创建自己的密钥文件。

    How to: Create a Public/Private Key Pair

    从 Visual Studio 命令提示符使用 SN 应用

    sn –k c:\ANTLR\runtime\CSharp3\Sources\Antlr3.Runtime\Key.snk
    

    【讨论】:

    • 谢谢,但这只是直接的错误。我试图确定 ANTLR 的 C# 目标对于大型项目是否足够稳定。大约一天后,我发现 ANTLR 不允许左递归,而我现有的 BNF 广泛使用了 yacc 轻松处理的左递归。所以我选择了 yacc/lex 和托管 C++
    猜你喜欢
    • 2011-01-28
    • 2012-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-22
    • 1970-01-01
    相关资源
    最近更新 更多