Python中的模块化编译器

时间:2014-08-02 15:53:42

标签: python modular-design

我正在用Python编写一个编译器,使用PLY(Python Lex-Yacc)库来“编译”编译器。编译器必须经历许多规则( 只有核心规则的数量最终将少于一百,并且它们可以扩展)。因此,为了保持不同类型的规则分离,我在一个modules目录中创建了许多Python模块。

要包含所有规则,我不必将模块包含在此目录中,但我必须将规则(实现为Python函数)包含在当前命名空间中。一旦它们存在于那里,编译器的输入将被正确地标记化,解析等等。

以下是我读到并尝试过的内容:

  • 使用__import__getattrsys.modules(非常原始,一般不首选)
  • importlib库(如何在模块中获取所有内容?)
  • 很多摆弄__init__.py,只是尝试from modules import *,这将导入模块中的所有内容

但这些似乎对我来说都不是完全令人满意的。我无法准确地做我想做的事。所以我的问题是:如何将子模块中Python模块的某些属性导入到顶级模块的运行命名空间中?

感谢您的关注!

1 个答案:

答案 0 :(得分:0)

您想使用现有的插件库,例如stevedore。它将为您提供枚举可导入文件的工具,以及导入这些模块的工具。