c - 寻找与 ANTLR 4 或 MPlex/MPPG 兼容的 C90 语法

标签 c visual-studio antlr yacc lex

我用 C# 为 friend 的自定义 CPU 编写了一个 C90 交叉编译器,它生成一个包含汇编语言的文本文件。然后,我将其提供给他用 Python 编写的汇编器,该汇编器生成包含机器代码的文本文件。然后我们通过串行连接将其传输到他的机器,此时他的自定义 CPU 运行该程序。

我想将整个过程捆绑到简单的操作中,就像按下“编译”按钮一样,就像您在任何现代 IDE 中所做的那样。此外,说到现代 IDE,最好在记事本以外的其他东西中开发我们的 C 代码,并享受这些现代 IDE 必须提供的一些便利设施,例如文件管理、就地编译、语法突出显示和智能感知.

现在,我使用 Visual Studio 进行大部分开发,因此我很清楚它已经与 C/C++ 编译器捆绑在一起。如果能够使用 Visual C++ 为我们的自定义 CPU 开发 C 代码并覆盖它的“编译”功能,以便它调用我的编译器工具链而不是它的 C++ 编译器,那将是非常好的。

我设想这种方法的问题是:

  1. 我认为不可能覆盖“编译”功能并且
  2. 语法高亮/智能感知将不符合 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/

相关文章:

C++ 就地析构函数编译警告

c# - Roslyn 模型是否以 C#/VB.NET 为中心以至于现在和将来都无法进行 XAML 分析?

c# - 使用 ConfigurationManager 将用户值存储在独立于应用程序配置的文件中

javascript - ANTLR JavaScript 目标

java - NoClassDefFoundError:servlet 中的antlr/RecognitionException 但在正常的java 程序中工作

antlr - 在 ANTLR 中,我可以在不实际匹配它们的情况下预测特定的 token 吗?

c - 如何停止输入字符卡在缓冲区中? C

c - 二叉搜索树插入 - 根始终为空

c - 将文件的每一行作为字符串存储在数组中

c - 为什么当我写任何其他数字时输出总是数字 1?