Usa più lingue e poi le compila tutte in un linguaggio comune (un po 'come l'editor di Unity3D)

0

Sto esaminando la logica alla base di applicazioni come Unity3d, che ti permettono di scrivere codice con JS, C # o Boo, e poi di compilare in un linguaggio comune (credo sia semplice C ++), rendendo l'editor indipendente da uno specifico linguaggio. Permettere agli utenti di scrivere codice in entrambe le lingue (o tutte in una volta, in diversi script, all'interno dello stesso progetto).

C'è già qualcosa di "confezionato" e pronto per l'uso, o qualcosa in cui posso effettivamente imparare come realizzare qualcosa di simile a ciò che fa Unity? L'idea è di usare solo poche lingue; JS e Python sembrano essere quelli che pop più spesso tra le ricerche di conversione, quindi probabilmente inizierei con questi.

Mi è stato detto che questo può essere ottenuto principalmente con l'analisi del codice sorgente, usando espressioni regolari. Non ho trovato molto accanto a questo approccio.

Sono a conoscenza dei problemi relativi alle diverse sintassi e API, tra lingue diverse; ecco perché invece di reinventare la ruota, ho deciso di cercare le metodologie esistenti e provare ad applicarle. Qualsiasi puntatore sarebbe molto apprezzato.

    
posta rataplan 09.02.2017 - 04:27
fonte

1 risposta

2

Python, e credo che molte altre lingue , prima analizza il codice sorgente in un albero sintattico astratto , AST, così come GCC, (GNU Compiler Collection) , strumenti che vengono poi ulteriormente elaborati inclusi, in base a impostazioni, flag, target, ecc., ottimizzazioni, ecc. .

L'AST può quindi essere utilizzato per generare codice specifico per macchina o, almeno nei casi Python, codici per la macchina virtuale.

Nel caso di GCC questo consente di codificare un programma, (con un po 'di attenzione), in più lingue, eventualmente con il rischio di un sovraccarico e di un sovraccarico dovuto all'interfacciamento e alla possibile duplicazione della funzione di libreria, ( in quanto vi sono un certo numero di librerie specifiche per lingua ciascuna delle quali può fornire alcune delle stesse funzionalità) .

La libreria AST Python consente l'elaborazione di python in alberi di sintassi astratti, (ulteriori informazioni) e gcc ha opzioni che consentono l'output di tali alberi.

Questa è un'area di studio piuttosto importante e sono abbastanza sicuro che la maggior parte degli strumenti moderni che consentono la traduzione automatica tra i linguaggi di programmazione lo utilizzano in modo più esteso rispetto alle espressioni regolari.

    
risposta data 09.02.2017 - 07:22
fonte

Leggi altre domande sui tag