linguaggio con zucchero sintattico che si traduce in C ++ che sembra "scritto a mano"

1

Sono uno studente universitario e ho compiti a casa in C ++.

Il mio professore vuole separare i file hpp e cpp per ogni classe C ++. E non mi sentivo bene quanto dovevo digitare e quanto dovevo fare clic per creare due nuovi file per ogni classe.

Ho messo a casaccio un semplice script Python che avrebbe letto un singolo file e generato tutto le classi necessarie (le cose facili come il nome della classe, l'elenco dei membri e l'elenco delle cose da includere includono la sintassi dello zucchero, ma le cose difficili da analizzare come nomi di battitura e corpi funzione che ho copiato e incollato per la maggior parte, tranne il mio lo script si aggira in modo molto primitivo per qualificare le firme del metodo con il nome della classe quando genera il file di implementazione).

E mi sentivo abbastanza bene.

Ma ho capito che se molte altre persone avevano lavorato su un problema simile in passato, probabilmente avrebbero potuto farlo meglio.

So che lo schema di Chicken si traduce in C, e così fa vala e genie, ma da quello che ho capito, con questi tipi di traduttori, non hai il pieno controllo sull'output C.

Conoscete qualsiasi traduttore che produca C ++ che mantenga intatta la semantica del C ++, in modo che i file di output C ++ sembrino scritti a mano, ma la lingua di partenza è semplicemente caricata con una sintassi meravigliosa che semplifica la vita? Forse anche il linguaggio ha un pasticcio con il corpo delle funzioni in modo che se scrivessi qualcosa come vector<int> v = [1,2,3,4,5] diventerebbe vector<int> v; v.push_back(1); v.push_back(2); .. nella sorgente generata? Forse le parentesi graffe sono state inserite automaticamente in base all'indentazione? Le nuove righe fungono da punto e virgola?

    
posta math4tots 19.11.2013 - 03:24
fonte

1 risposta

2

No, è improbabile che un linguaggio come quello che stai cercando esista.

Ricordo vagamente alcuni sforzi per creare nuovi linguaggi che provano a rimuovere tali verruche dal C ++ come file di intestazione, ma invariabilmente sono compilati direttamente (nessuna traduzione in C ++) o il C ++ che generano ha un distinto generato dalla macchina aspetto, perché produrre un C ++ leggibile non era (abbastanza) un requisito.

Nella maggior parte dei casi, la duplicazione ottenuta dall'avere dichiarazioni e definizioni separate viene curata in misura sufficiente dalle funzioni di editor avanzato, come macro, procedure guidate e strumenti di refactoring.

    
risposta data 19.11.2013 - 09:01
fonte

Leggi altre domande sui tag