Кто-нибудь знает о PHP (желательно с открытым исходным кодом) для рубинового компилятора? т.е. программа, которая анализирует PHP-код и создает семантически эквивалентный код ruby?
Я не использовал его сам, но вы можете посмотреть на Phuby . Он позволяет запускать PHP-код в рубине. Затем я попробую блок проверить жизнь из кода (с использованием рубиновых модулей), а затем переписать код в рубине.
Тем не менее, я подозреваю, что Phuby даже не готов к производству.
Это уже довольно сложная задача. И вы выбрали два языка, которые очень разные. Конечно, вы, вероятно, могли бы программно перевести PHP на Ruby, но полученный в результате код был бы очень не-рубиновым.
См. Некоторые связанные вопросы и их ответы:
Если бы вы могли перевести идиоматический PHP на идиоматический Ruby, вам, вероятно, понадобится человекоподобный интеллект, т. Е. Способность понять, что делает (по сути) код и переписывать его на целевом языке. К сожалению, у нас нет очень умного ИИ в этом фронте. По крайней мере, я не знаю.
Я не думаю, что он существует.
Комбинация Quercus, которая повторно реализует PHP на Java, и JRuby может помочь, в зависимости от того, что вы пытаетесь выполнить.
Человеческий мозг в тандеме с копией Pick-Ax;)
Используя библиотеку универсального транспилятора для SWI-Prolog, вы можете преобразовать подмножество PHP в Ruby и несколько других языков. Это пример программы с исходным кодом PHP в качестве ее ввода:
:- use_module(library(transpiler)). :- set_prolog_flag(double_quotes,chars). :- initialization(main). main :- Input = "function add($a,$b){return $a.$b;}function squared($a){return $a*$a;}function add_exclamation_point($parameter){return $parameter.\"!\";}", translate(Input,'php','ruby',X), atom_chars(Y,X), writeln(Y).
Это выход программы в Ruby:
def add(a,b) return a+b end def squared(a) return a*a end def add_exclamation_point(parameter) return parameter+"!" end
http://railsforphp.com/reference/ может быть удобной ссылкой, когда вы только начинаете с PHP на Ruby. Вы можете найти функцию PHP и найти ее эквивалент Ruby.