Кто-нибудь знает о PHP (желательно с открытым исходным кодом) PHP для рубинового компилятора? то есть программа, которая анализирует PHP-код и создает семантически эквивалентный код ruby?PHP-компилятор Ruby
ответ
Я не использовал его сам, но вы можете посмотреть на Phuby. Он позволяет запускать PHP-код в рубине. Затем я попробую блок проверить жизнь из кода (с использованием рубиновых модулей), а затем переписать код в рубине.
Однако я подозреваю, что Phuby даже не готов к производству.
Да, внедрение сложное, что делает Phuby далеко не готовым к производству. Почему бы просто не вызвать внешнюю ссылку на веб-службу php? –
Я не думаю, что существует.
Комбинация Quercus, которая повторно реализует PHP на Java, и JRuby может помочь, в зависимости от того, что вы пытаетесь выполнить.
Интересная идея, но это звучит как еще один способ запустить PHP-код вместе с кодом Ruby во время выполнения JRuby - не плохая идея, поскольку производственный компилятор Quercus не является открытым исходным кодом, а JRuby, похоже, лидирует в плане не- Java-языки на JVM. – Ramon
человеческий мозг в тандеме с копией заступом;)
Это довольно сложная задача уже. И вы выбрали два языка, которые очень разные. Конечно, вы, вероятно, могли бы программно перевести PHP на Ruby, но полученный в результате код был бы очень не-рубиновым.
См некоторые смежные вопросы и ответы на них:
- How to translate between programming languages
- Why is it not possible to create a practical Perl to Python source code converter?
Если бы вы могли перевести идиоматическое РНР идиоматических Ruby, вы, вероятно, нужно человекоподобное интеллект - то есть: способность понять, что делает код (по сути) и переписывать его на целевом языке. К сожалению, у нас нет очень умного ИИ в этом фронте. По крайней мере, я не знаю.
Они более похожи, чем, скажем, PHP и C++, и люди разработали компиляторы для PHP, которые нацелены на C++, хотя и для другой цели - Facebook HipHop делает это, я считаю. Синтаксически, да, они совершенно разные, поэтому вам нужен полномасштабный компилятор, а не какой-то «транслитератор». – Ramon
@Ramon PHP написан на C в конце концов, и многие из его функций являются просто оболочками для функций C. См. Вторую ссылку по причинам, почему было бы чрезвычайно сложно создать такой «компилятор». – NullUserException
@Ramon: компиляция PHP в Ruby, скорее всего, будет похожа на попытку компиляции на C++ с добавленной работой по реализации всех тех библиотек C, на которых рисует PHP (реализация C++ использует только те библиотеки C). Итак, если вы хотите потратить столько же энергии, сколько Facebook, чтобы получить компилятор PHP для Ruby, я уверен, что вы можете это сделать. Вы можете узнать, что это довольно много работы. –
http://railsforphp.com/reference/ может быть удобной ссылкой, когда вы только начинаете с PHP на Ruby. Вы можете найти функцию PHP и найти ее эквивалент Ruby.
Используя библиотеку universal-transpiler для 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
- 1. chruby: unknown Ruby: ruby-2.2.0
- 2. Ruby Project VS Ruby Gem
- 3. Ruby как переопределить ruby sort_by
- 4. Ruby Cucumber - Добавить коды Ruby
- 5. Ruby: Как сгруппировать массив Ruby?
- 6. Ruby 1.9.3 vs Ruby 2.0.0
- 7. Ruby vs. Ruby On Rails
- 8. Запуск Ruby без префикса «Ruby»
- 9. ruby 1.8 до 1.9 ruby -v показывает ruby 1.9.2p0
- 10. RVM + Ruby 1.9.1 + ruby-debug = ошибка?
- 11. linux-Ruby - запустить приложение ruby как команду
- 12. Ruby on rails: Paperclip & Ruby Mp3Info
- 13. Установка ruby 1.8.7 с ruby 1.9.2
- 14. Ruby На основе метода ленивого сплющивания Ruby
- 15. Возможно ли использование Ruby, скопировав папку ruby?
- 16. Ruby Facets 2.9.0 Работа с Ruby 1.9.2?
- 17. Обновление с Ruby 1.8.7 до Ruby 1.9.1
- 18. Ruby: Embedded Ruby Array хешей для JSON
- 19. running file ruby on when/crontjob ruby
- 20. Хэш в Ruby & Convert python to ruby
- 21. Безопасное удаление .ruby-версии и .ruby-gemset
- 22. Начиная с Ruby и Ruby on Rails
- 23. Создавать/изменять исходные файлы Ruby из Ruby
- 24. Ошибка при установке ruby ruby-1.9.3-p551
- 25. Установить Ruby 1.9.3 после установки Ruby 2.0.0
- 26. ruby Отладка шаблона ERB, отображение как ruby
- 27. Профилирование приложения ruby / ruby on rails
- 28. Ruby Rake - Running Ruby -w по умолчанию?
- 29. Latin1_General_CI_AS - Использование ruby on rails - Ruby ODBC
- 30. Ruby on Rails - KeyCode в Ruby
Ничего подобного, будет производить чертовски уродливый код на Ruby - Руби настолько более выразительным чем PHP. почему ты хочешь сделать это? – Skilldrick
Ну да, он не ожидает, что он будет конкурировать с ручным Ruby, но выразительность упомянутого вами языка должна лишь упростить реализацию семантики PHP. Я рассматриваю варианты переноса большой базы кода PHP на рубин, такой инструмент, как это, сделает это намного проще. – Ramon
Вы не хотите использовать вывод компилятора для создания кода, который вы будете поддерживать. Люди, которые компилируют, генерируют (правильно) все, что работает (уродливое или недостижимое, не имеет значения), если сгенерированный код выполняется правильно. Вот почему такие компиляторы имеют ужасную репутацию как «инструменты миграции»; их нет! Перенос PHP-приложения на * поддерживаемый * Ruby - совершенно другая проблема. –