注意:我同意這裏的其他人,你應該從頭開始重新編寫你的程序。這個答案只是一個想法,我希望有人會真正考慮。
已經有幾個Ruby-to-X轉換器,你可以引導。好的已經有一個詞法分析器,所以你只需要在後端工作。如果你選擇一種類似於Lua的語言,那麼你可以更簡化一些事情。
例如,有a few Ruby-to-Javascript的實現,如RubyJS。撇開元方法,self
語法糖,文庫差異,以及這裏和那裏的一些語義差異,Lua可以被看作Javascript的一個子集,具有更詳細的語法。
考慮到這一點,你可以修改大部分後端發生器通過在這裏和那裏改變一些{
}
S:
// some random js
while(x < 56 && y == 40) {
print('Hello World!');
}
-- What you could make it generate:
while x < 56 and y == 40 do
print 'Hello World!'
end
也許有可能是幾十倍當它依賴Javascript的特定功能時,但即使如此,其中大部分都可以被仿真。
// Javascript has a === operator that enforces type equality
'5' === 5 // FALSE!
-- Lua lacks this, but it's easy to imitate
(type('5') == type(5)) and ('5' == 5)
不,說實話,這不會是一個簡單的項目,但我認爲它的東西definetly值得投資的時間。我希望這有助於! :)
紅寶石和Lua在語義上可能完全不同,所以自動翻譯並不簡單。你想轉換的程序有多大? – lhf
@lhf,大於我想:( – nickb
爲什麼downvotes? – nickb