Как создать python Ply lex с передачей модуля

Я пытаюсь использовать компилятор языка логотипов, который использует Ply в среде Unity3D для проекта с открытым исходным кодом https://github.com/ssouzawallace/blocks-programming.

Для этого я использую IronPython, интерпретатор Python, работающий в .NET (мне нужно, чтобы он работал в Uinty3D). В IronPython есть ошибка, и я нашел других с такой же проблемой, связанной с трассировкой выполнения скрипта Python.

В резюме, если я запускаю компилятор логотипа с использованием официального интерпретатора Python, все идет нормально. Но в IronPython, когда код проходит через метод get_caller_module_dic, он не может найти мой материал pyLex, потому что не может достичь уровня второго кадра.

Чтобы решить проблему, мне интересно передать правильный объект или модуль методу:

def lex(module=None,object=None,debug=0,optimize=0,lextab="lextab",reflags=0,nowarn=0,outputdir="", debuglog=None, errorlog=None):

Но я не знаю, как это сделать.

Кто-то знает, что я могу сделать?

заранее большое спасибо


person Wallace    schedule 22.12.2015    source источник


Ответы (1)


Решение найдено здесь Python : Как получить ссылку на модуль внутри самого модуля?

Теперь я передаю весь скрипт как модуль вместо того, чтобы надеяться, что скрипт lex и yacc найдет мой модуль, используя трассировку.

С использованием

import sys current_module = sys.modules[__name__]

person Wallace    schedule 22.12.2015