Python从一个文件生成不同的文件

时间:2014-12-15 10:32:01

标签: python c++ parsing code-generation ply

我要做的是使用Python来解析脚本bob.ps并输出bob.pybob.cpp,具体取决于用户输入。

假设我们有bob.ps这是类似python的简单语言

#comment
use ShowBase
# Load the environment model.
environ = loadModel 'cube'
# Reparent the model to render.
render environ
run

用户需要使用以下命令运行python脚本:$ python main.py -py -c ++ 它会导致生成以下python和c ++脚本:

from direct.showbase.ShowBase import ShowBase
class MyApp(ShowBase):

    def __init__(self):
       ShowBase.__init__(self)
       # Load the environment model.
          self.environ = self.loader.loadModel("models/environment")
       # Reparent the model to render.
       self.environ.reparentTo(self.render)
app = MyApp()
app.run()

和c ++

#include "pandaFramework.h"
#include "pandaSystem.h"

int main(int argc, char *argv[]) {
      // Load the window and set its title.
   PandaFramework framework;
   framework.open_framework(argc, argv);
   framework.set_window_title("My Panda3D Window");
   WindowFramework *window = framework.open_window();
      // Load the environment model.
   NodePath environ = window->load_model(framework.get_models(), "models/environment");
      // Reparent the model to render.
   environ.reparent_to(window->get_render());
      // Run the engine.
   framework.main_loop();
      // Shut down the engine when done.
   framework.close_framework();
   return (0);
}

问题

我花了一些时间浏览互联网寻求答案。我发现我需要解析bob.ps并使用词法分析器。我试着用PLY-3.4弄乱一点,但它并没有完全按照我想要的方式完成。我不需要/想要在解析时执行代码而不是我的意图只是生成等效的python / c ++代码。

这个问题的最佳方法是什么,是否有关于此特定主题的任何模块/书籍/文章/教程?我真的碰壁了,不知道在哪里看。 任何帮助都非常感谢。

1 个答案:

答案 0 :(得分:1)

这里你想做的有点像编译器。 您想将“ps”编译为python或cpp。

标准工具是lex和yacc,并且到处都有很多文献。