一:处理消息
在一个庞大的软件(比如编译器)中,我们不希望将消息字符串分散在各个地方。如果需要修改消息内容或将其翻译成另一种语言,最好将它们集中存放在一个地方!目前缺少的是对消息的集中定义。下面我们看看来如何实现它。
一种简单的方法是,每条消息都有一个 ID(一个枚举成员)、一个 严重级别(如 错误(Error) 或 警告(Warning)),以及一个包含具体消息的 字符串。在代码中,你只需要引用消息 ID,而严重级别和消息字符串仅在打印消息时使用。这三个项目(ID、严重级别和消息)必须保持一致地管理。
LLVM 库使用 预处理器 来解决这个问题。数据存储在 .def 后缀的文件中,并用 宏 进行包装。该文件通常会被包含多次,并使用不同的 宏定义。该文件的路径是:include/tinylang/Basic/Diagnostic.def
,其内容如下所示: