C++ 解析器导入模块

C++ Parser import module

我正在为我的编程语言编写解释器。我在 Java 上看到了很好的解释器实现,但是每个人都知道 Java 工作起来很慢。所以,我正在使用 C++ 进行开发,但我遇到了一个问题。确切地说:Java 有美丽的东西作为 Java 反射。并且,当解析器看到 "import" 语句时,它采用 "module" 的名称(在解释程序中已经存在 class )并且使用反射按名称采用 class 的实例。如此简单,但不是在 C++ 中。 C++ 没有通过名称获取 class 实例的技巧。我们能帮帮我吗?)

根据提问和评论的理解,这是我对你目前情况的理解:

  1. 你有模块,它们是作为 Java classes 实现的,而不是用你自己的语言编写的文件。
  2. 当您解析导入语句时,您使用反射在模块包中找到具有给定名称的 class(这意味着有一个包含所有模块 class 的包,没有其他任何东西并且每个模块 class 与其代表的模块同名)
  3. 然后大概您通过调用实例化对象上的方法从导入的模块中调用函数,再次使用反射。

所以你是对的,你不能在 C++ 中那样做。

你可以做的是有一个从模块名称到模块对象的映射,然后每个模块应该有一个自己功能的映射。