我用 C# 为 friend 的自定义 CPU 编写了一个 C90 交叉编译器,它生成一个包含汇编语言的文本文件。然后,我将其提供给他用 Python 编写的汇编器,该汇编器生成包含机器代码的文本文件。然后我们通过串行连接将其传输到他的机器,此时他的自定义 CPU 运行该程序。
我想将整个过程捆绑到简单的操作中,就像按下“编译”按钮一样,就像您在任何现代 IDE 中所做的那样。此外,说到现代 IDE,最好在记事本以外的其他东西中开发我们的 C 代码,并享受这些现代 IDE 必须提供的一些便利设施,例如文件管理、就地编译、语法突出显示和智能感知.
现在,我使用 Visual Studio 进行大部分开发,因此我很清楚它已经与 C/C++ 编译器捆绑在一起。如果能够使用 Visual C++ 为我们的自定义 CPU 开发 C 代码并覆盖它的“编译”功能,以便它调用我的编译器工具链而不是它的 C++ 编译器,那将是非常好的。
我设想这种方法的问题是:
- 我认为不可能覆盖“编译”功能并且
- 语法高亮/智能感知将不符合 C90 标准。我可以接受#2,但我想知道#1 是否可行。
如果做不到这一点,我将需要硬着头皮将我的自定义编译器集成到 Visual Studio 中,这样做需要我有一个与 ANTLR 或 MPlex/MPPG 兼容的 C90 语法文件,以便我可以输出解析器/扫描器Visual Studio 可用于其语法高亮显示/智能感知的 C#。
我在 ANTLR 站点上看到的语法文件是 C99;有人知道 C90 的实现吗? http://slps.github.io/zoo/#ANSI_C90似乎有一个,但语法是 BGF、EBNF、DMS BNF 和 SDF 格式,我认为这些格式与我提到的任何一个工具都不兼容。任何帮助将不胜感激。
最佳答案
从 Visual Studio 2010 开始提供的新的基于 MSBuild 的 Visual C++ 工具链为非 Microsoft 工具链提供了框架级支持。您仍然需要提供特定于您的编译器的构建文件,但您可以将结果干净利落地集成到 Visual Studio 中。
不过,我不知道有人真正做过这件事。
关于c - 寻找与 ANTLR 4 或 MPlex/MPPG 兼容的 C90 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18141149/