То, что я пытаюсь сделать, это использовать Python для разбора скрипта bob.ps
и вывод bob.py
а также bob.cpp
в зависимости от ввода пользователя.
допустим, мы имели bob.ps
который похож на питон простой язык
#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()
и с ++
#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 и использовать lexer. Я попытался немного возиться с PLY-3.4, и он не совсем то, что я хочу достичь. Мне не нужно / не нужно выполнять код при синтаксическом анализе, вместо этого я намерен только генерировать эквивалентный код на python / c ++.
Как лучше всего подойти к этой проблеме, есть ли какой-нибудь модуль / книга / статья / учебник по этой конкретной теме? Я действительно врезался в стену и не знаю, где искать.
Любая помощь высоко ценится.
То, что вы хотите сделать здесь, немного похоже на компилятор.
Вы хотите скомпилировать «ps» в python или cpp.
Стандартные инструменты для этого — lex и yacc, и везде есть много литературы.