C ++ Parser导入模块

时间:2018-03-24 18:28:22

标签: c++ parsing interpreter

我正在为我的编程语言编写解释器。我在Java上看到了很好的解释器实现,但是每个人都知道Java工作得非常慢。所以,我正在开发C ++,但我遇到了问题。确切地说:Java像Java Reflection一样美丽。并且,当解析器看到“import”语句时,它将取名为“module”(解释器程序中已经存在的类),并使用Reflection按名称获取类的实例。这么简单,但不是用C ++。 C ++没有通过名称来获取类的实例。我们可以帮助我吗?)

1 个答案:

答案 0 :(得分:0)

所以这是我对你的情况的了解到目前为止,正如我从问题和评论中所理解的那样:

  1. 您有模块,它们是作为Java类实现的,而不是用您自己的语言编写的文件。
  2. 解析import语句时,使用反射在模块包中查找具有给定名称的类(意味着包含所有模块类的包,没有其他内容,并且每个模块类的名称与它代表的模块)
  3. 然后假设您通过调用实例化对象上的方法来调用导入模块中的函数,再次使用反射。
  4. 所以你是对的,你不能像在C ++中那样做。

    您可以做的是拥有从模块名称到模块对象的映射,然后每个模块都应该有自己的函数映射。