本文是 VMBC / D# 项目 的 系列文章,
有关 VMBC / D# , 见 《我发起并创立了一个 VMBC 的 子项目 D#》(以下简称 《D#》) https://www.cnblogs.com/KSongKing/p/10348190.html 。
VMBC 需要一个 内置 的 C 编译器, 想来想去, 觉得还是自己写一个,
计划用 C 语言 写, 因为 VMBC 的 C 编译器 要求是一个 本地库, 如果不要求是 本地库, 我就用 C# 写了, 呵呵呵 。
为什么 是 库 呢 ? 因为这是一个 内置编译器, 是由 ILBC 运行时 来 调用的 (ILBC 见 《D#》), 所以 是一个 库 。
这个 库 最好 能 尽可能的 小 。
C 语言 写的 代码 是 最贴近 底层(汇编) 的, 所以 C 语言 写的 库 应该是 最紧凑 的, 所以用 C 语言 来写 。
还有一个 原因 是, 我会的 语言 不多, C 算是 相对 更熟一点的, So 。
有 网友 说 C 语言 不适合 写 编译器, C 的抽象太低了, 建议用 函数式 语言写,
又举例 Rust 最早是用 OCaml 写的, 然后又用 Rust 写了一遍 。
好吧, 但 Rust 、OCaml 这些语言 的 名字 我都 没怎么听过, 还是用 C 吧 。
另外用 C 的话, 应该不用担心 操作系统 的 支持 的 问题 。
这个 项目 我只 实现 语法分析 和 类型检查 的 部分, 语法分析 包含了 语法检查 。
生成目标代码 链接(链接外部库) 这 2 个 部分 大家 如果有兴趣, 对 汇编 和 操作系统 了解 的话, 可以来补充 。
原文:https://www.cnblogs.com/KSongKing/p/10352273.html