Я собираюсь выполнить побочный проект, целью которого является перевод кода с одного языка программирования на другой. Языки, на которых я начинаю с PHP и Python (с Python на PHP должно быть проще начать), но в идеале я мог бы добавить другие языки с (относительной) легкостью. План таков:
Это ориентировано на веб-разработку. Оригинал и целевой код будет находиться поверх фреймворков (которые мне тоже придется написать). Эти платформы будут охватывать шаблон проектирования MVC и следовать строгим соглашениям о кодировании. Это должно несколько упростить перевод.
Я также смотрю на IOC и внедрение зависимостей, поскольку они могут упростить процесс перевода и уменьшить вероятность ошибок.
Я воспользуюсь модулем синтаксического анализатора Python , который позволяет мне возиться с абстрактное синтаксическое дерево. По-видимому, самое близкое, что я могу получить с PHP, - это token_get_all () , что является началом.
С этого момента я могу создавать AST, таблицы символов и поток управления.
Тогда я могу начать выводить код. Мне не нужен идеальный перевод . Мне все равно придется просмотреть сгенерированный код и исправить проблемы. В идеале переводчик должен отмечать проблемные переводы.
Прежде чем вы спросите " __call () и передать аргументы . Если я перегружаю метод __call в классе PHP, как я могу вызвать реальный метод, если мой код не делает ничего другого? Например: публичная функция __call ($ name, $ arguments) format = xmlfm
Есть ли существующая библиотека для Python, которую я могу использовать для создания массива с отображением субъектов и значений?
Например:
{height_ft,6},{nationality, American}
Похоже, вы действительно хотите иметь возможность разбирать разметку MediaWiki. Существует библиотека python, разработанная для этой цели, называется mwlib. Вы можете использовать встроенные в python пакеты XML для извлечения содержимого страницы из ответа API, затем передать это содержимое в парсер mwlib для создания объектного представления, которое вы можете просматривать и анализировать в коде для извлечения нужной вам информации. mwlib имеет лицензию BSD.
Только что наткнулся на библиотеку на PyPi, wikidump , которая утверждает, что предоставляет
инструменты для манипулирования и извлечения данных из дампов википедии
Я еще не использовал его, так что вы можете сами попробовать ...
Здесь есть некоторая информация о библиотеках Python и XML .
Если вы спрашиваете, существует ли библиотека, специально разработанная для синтаксического анализа XML Wiki (pedia) и соответствующая вашим требованиям, это сомнительно. Однако вы можете использовать одну из существующих библиотек для обхода DOM и извлечения необходимых данных.
Другой вариант - написать таблицу стилей XSLT, которая делает то же самое, и вызвать ее с помощью lxml. Это также позволяет вам выполнять вызовы функций Python изнутри XSLT, чтобы вы могли получить лучшее из обоих миров.
Я бы посоветовал взглянуть на использование Beautiful Soup и просто получить страницу Википедии в HTML вместо использования API.
Попробую выложить пример.