Wie kann ich Ruby in Lua konvertieren?

8

Gibt es eine Möglichkeit, automatisch Ruby-Code in Lua zu konvertieren? Meine Frage ist:

  1. Welche Arten von Werkzeugen existieren für diesen Zweck?
  2. Was sind ihre Grenzen?

Ein primäres Ziel ist es, den Ruby-Interpreter umgehen zu können, wenn ich das (konvertierte) Lua-Programm ausführe. Es macht mir nichts aus, wenn der Ruby-Interpreter während der Konvertierung zu Lua aufgerufen werden muss, aber ich möchte nicht auf den Ruby-Interpreter angewiesen sein, wenn ich den neu erzeugten Lua-Code ausführe.

UPDATE:

Ich habe ziemlich viel über dieses Thema geforscht und ich persönlich finde keine Lösung (deshalb stelle ich die Frage hier auf StackOverflow).

Falls jemand neugierig ist, habe ich tief in:

  • Ruby-Lua , obwohl all dies erlaubt, Lua von Ruby zu rufen
  • RLua , damit können Sie Ruby-Code von Lua ausführen und umgekehrt, aber Ruby wird nicht in Lua übersetzt und es ruft immer noch den Ruby-Interpreter beim Programmlauf auf.
nickb 07.11.2012, 02:18
quelle

3 Antworten

7

Es tut mir leid, wenn das nicht die Antwort ist, die Sie hören wollen, aber es gibt keinen praktischen Weg , Kumpel. Ich werde nicht sagen, dass Ruby reicher ist als Lua, da ich das letzte nicht genug studiert habe, um das zu sagen, aber von dem, was ich weiß und was ich sehe,

  1. Es gibt keine Möglichkeit, dass jemand den Ruby-Compiler für Lua und ähnliche Sprachen geschrieben hätte.
  2. Es gibt keine Möglichkeit, einen Compiler zu schreiben, der Ihnen weniger Zeit kostet, als Ihr Programm manuell neu zu schreiben.
  3. Die einzige Sprache, die Ruby-Community beim Kompilieren von Ruby interessiert, ist Ruby bytecode.

Man könnte weitermachen, was die Möglichkeiten sind, und nicht darin bestehen, Hochsprachen miteinander zu kombinieren, aber das Endergebnis für Sie ist: Geben Sie früh auf. Stoppen Sie die Suche und beginnen Sie Ihre Progs manuell neu zu schreiben.

    
Boris Stitnicky 07.11.2012 03:23
quelle
2

Hinweis: Ich stimme allen anderen hier zu, dass Sie Ihr Programm wirklich von Grund auf neu schreiben sollten. Diese Antwort ist nur eine Idee, auf die ich hoffe, dass jemand wirklich nachgeht.

Es gibt bereits ein paar Ruby-to-X Converter, die Sie booten könnten. Die Guten haben schon einen Lexer & amp; Parser, so dass Sie nur mit dem Backend arbeiten müssen. Wenn du eine Sprache wählst, die Lua ähnlich ist, kannst du die Dinge noch vereinfachen.

Zum Beispiel gibt es ein paar Ruby-to- Javascript Implementierungen, wie RubyJS . Metamethoden, self syntaktischen Zucker, Bibliothek Unterschiede und ein paar semantische Unterschiede hier und da beiseite, Lua könnte als eine Untermenge von Javascript mit einer ausführlicheren Syntax gesehen werden.

In diesem Sinne könnten Sie den Großteil des Backend-Generators modifizieren, indem Sie hier und da ein paar { } s ändern:

%Vor%

%Vor%

Vielleicht gibt es ein paar Mal, wenn es auf Javascript-spezifischen Funktionen beruht, aber selbst dann könnten die meisten von ihnen emuliert werden.

%Vor%

%Vor%

Nein, ehrlich, das wäre kein einfaches Projekt, aber ich denke, es ist etwas, das es wert ist, die Zeit dafür zu investieren. Ich hoffe, das hilft! :)

    
Miguel 07.11.2012 04:25
quelle
0

Universal-transpiler ist eine Bibliothek für SWI-Prolog, die eine kleine Teilmenge von Ruby in Lua und mehrere andere Sprachen konvertieren kann.

Dies ist ein Beispiel für seine Verwendung in Prolog, mit Ruby-Quellcode als Eingabe:

%Vor%

... und das ist der Lua-Quellcode, den er erzeugt:

%Vor%     
Anderson Green 17.09.2016 01:53
quelle

Tags und Links