Мне было трудно понять перевод PyPy. Это похоже на что-то абсолютно революционное, просто прочитав описание, однако мне трудно найти хорошую документацию, фактически переведя код реального мира на что-то вроде LLVM. Существует ли такая вещь? Официальная документация PyPy на нем просто просматривает функциональность, а не предоставляет все, что я могу попробовать.
Где я могу узнать больше о функции перевода PyPy?
Ответ 1
Этот документ, по-видимому, идет довольно подробно (и я думаю, что полное описание выходит за рамки для ответа на stackoverflow):
Общая идея перевода с одного языка на другой не является особенно революционной, но она только недавно набирает популярность и применимость в приложениях "реального мира". GWT делает это с Java (генерирует Javascript), и есть библиотека для перевода Haskell на другие языки (так называемый YHC)
Ответ 2
Если вам нужны примеры с практическими примерами, PyPy Getting Started в документе есть раздел под названием "Попытка перевода".
Ответ 3
Переводчик PyPy в целом не предназначен для более широкого использования. Мы используем его для перевода наш собственный интерпретатор python (включая JIT и GCs, оба написанные в RPython, это ограничено подмножество Python). Идея заключается в том, что с хорошими JIT и GC вы сможете ускорить даже без знания или использования инструментария перевода PyPy (и что более важно, без ограничивая себя RPython).
Cheers, fijal
Ответ 4
Вы ищете специальный перевод на Python или просто общий "как вы компилируете код для байт-кода"? Если это ваш случай, проверьте учебник LLVM. Я особенно нахожу главу 2, в которой вам предлагается написать компилятор для вашего собственного языка, интересный.
Ответ 5
Похоже на что-то совершенно революционное, просто прочитав описание,
Насколько я знаю, PyPy является новым в том смысле, что это первая система, специально предназначенная для реализации языков. Существуют и другие инструменты, которые помогают с большей частью самого интерфейса, например генераторы парсеров, или для самого конца, такие как генерация кода, но не так много для соединения двух.