我要做的是使用Python来解析脚本bob.ps
并输出bob.py
和bob.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 ++代码。
这个问题的最佳方法是什么,是否有关于此特定主题的任何模块/书籍/文章/教程?我真的碰壁了,不知道在哪里看。 任何帮助都非常感谢。
答案 0 :(得分:1)
这里你想做的有点像编译器。 您想将“ps”编译为python或cpp。
标准工具是lex和yacc,并且到处都有很多文献。