Генерация PHP-кода операции / байт-кода из C
Скажем, я хочу написать небольшой компилятор на C, который генерирует байт-код PHP из произвольного языка ( typoscript). Как бы я это сделал? PHP предлагает API? Или мне нужно взломать части компилятора PHP по умолчанию?
Редактировать: На более общей ноте, вместо написания парсера на PHP, могу ли я написать его на C и создать код операции PHP (чтобы он был совместим с другим кодом PHP)?
Редактировать 2: Это может быть сделано в качестве расширения PHP, поэтому я рассмотрю это.
2 ответа
Что ж. Генерация байт-кода - это одно, а затем происходит загрузка байт-кода.
Для загрузки сгенерированного байт-кода, я предлагаю взглянуть на APC (модуль кэша кода операции). Он может прочитать код операции и выполнить его. Это должно быть довольно просто адаптировать, чтобы читать ваш байт-код вместо этого. Что касается генерации байт-кода, я не думаю, что вы найдете что-то для этого вне собственного исходного кода PHP. (Конечно, вы можете сбросить код операции изнутри работающего php-движка, но это не то, что вы просите)
Но я должен спросить, что вы ожидаете получить. Поскольку единственный PHP понимает байт-код PHP, код все равно должен выполняться внутри виртуальной машины PHP. Таким образом, вы экономите только время процессора на разборе и интерпретации источника. А с помощью APC для кеширования даже эта "задержка" исчезла.
Вы можете использовать HipHop из Facebook ( http://en.wikipedia.org/wiki/HipHop_for_PHP) для компиляции кода PHP в двоичные файлы. Тем не менее, я не думаю, что преобразование между сценарием Typo и PHP в настоящее время существует.