Язык программирования Python

       

Получение байт-кода


После того как получено дерево синтаксического разбора, компилятор должен превратить его в байт-код, подходящий для исполнения интерпретатором. В следующей программе проводятся отдельно синтаксический анализ, компиляция и выполнение (вычисление) кода (и выражения) в языке Python:

import parser

prg = """print 2*2""" ast = parser.suite(prg) code = ast.compile('filename.py') exec code

prg = """2*2""" ast = parser.expr(prg) code = ast.compile('filename1.py') print eval(code)

Функция parser.suite() (или parser.expr()) возвращает AST-объект (дерево синтаксического анализа), которое методом compile() компилируется в Python байт-код и сохраняется в кодовом объекте code. Теперь этот код можно выполнить (или, в случае выражения - вычислить) с помощью оператора exec (или функции eval()).

Здесь необходимо заметить, что недавно в Python появился пакет compiler, который объединяет модули для работы анализа исходного кода на Python и генерации кода. В данной лекции он не рассматривается, но те, кто хочет глубже изучить эти процессы, может обратиться к документации по Python.



Содержание раздела