Traduzione di un progetto da una lingua all'altra

-2

Se volessi trasformare un gioco Java in Lua, come potrei farlo? Sto pensando che potresti avere un programma per leggere il linguaggio assembly di due linguaggi di programmazione, trovare i pattern, collegarli alle funzioni e quindi convertire il codice di conseguenza. È stato fatto, tentato o teorizzato? Cosa sarebbe necessario per raggiungere questo?

    
posta Zachary Johnson 11.07.2016 - 18:40
fonte

2 risposte

0

Se ti capisco correttamente, suggerisci uno strumento tale che se hai un compilatore che compila da A a B, e un compilatore che compila da C a B, allora lo strumento potrebbe analizzare il comportamento di entrambi i compilatori e da questo risolva come tradurre da A a C.

Sembra affascinante, ma non ho mai sentito nulla di lontanamente simile a questo, e non sono sicuro che possa funzionare. Probabilmente dovrai inventarlo da solo!

In realtà, se vuoi tradurre il codice da un linguaggio di alto livello a un altro, viene eseguito manualmente da persone che conoscono entrambe le lingue. Esistono alcuni esempi di strumenti che traducono da un linguaggio di alto livello a un altro, ma questo è possibile solo per le lingue semanticamente strettamente correlate (come da C # a VB.Net). Ad esempio, semplicemente non è possibile creare un traduttore automatico da C a Python, perché molte cose che puoi fare in C sono (volutamente) non possibili in Python.

Ovviamente un compilatore è esso stesso un traduttore automatico da una lingua all'altra, ma di solito passano solo da un linguaggio di alto livello a un linguaggio a livello di amante, un codice generato non è progettato per essere leggibile dall'uomo e quindi non di solito pratico da usare come codice sorgente per ulteriori sviluppi.

    
risposta data 11.07.2016 - 20:17
fonte
0

Ci sono molti compilatori che fanno questo tipo di conversioni:

  1. GWT Java - > Javascript
  2. Haxe Haxe - > Tutto su qualcosa
  3. ClojureScript Clojure - > Javascript
  4. TioPort Java - > D
  5. RPython Python (sottoinsieme) - > C

In generale, questi compilatori producono un secondo programma che farà esattamente la stessa cosa del primo. Tuttavia, il secondo programma sarà molto difficile da leggere.

I'm thinking that you could have a program read the assembly language behind two programming languages, find the patterns, attach them to functions, and then convert the code accordingly.

Non è così che funziona. Generalmente iniziano con la tua fonte, non con l'assemblea risultante. Per ogni costrutto nella tua lingua di partenza: classe, funzione, assegnazione, ecc. Produce il costrutto equivalente nella lingua di arrivo. Quindi se scrivi una funzione nella tua lingua di partenza, aggiungerà una funzione nella lingua di destinazione che fa la stessa cosa.

    
risposta data 11.07.2016 - 21:17
fonte