Sto cercando di creare uno strumento di generazione e trasformazione del codice e quindi ho bisogno di un software per la manipolazione Abstract Syntax Tree per almeno tre lingue (Coq, Haskell, Java). Finora sono riuscito a trovare un software personalizzato per 2 delle lingue (Haskell, Java) e mi chiedo - perché non esiste un programma universale che possa prendere la grammatica BNF e generare lo strumento di manipolazione da esso? Esistono generatori di parser YACC universali e perché non esiste un generatore di strumenti di manipolazione AST universale? Sto pensando di costruirne uno io stesso (non ho altra scelta), ma potrebbe essere intelligente considerare il motivo per cui qualcosa di simile non è stato fatto finora? Forse non dovrei farlo anche io?
Riesco a immaginare il seguente disegno generale di tale strumento: 1) Posso usare il generatore di parser YACC per arrivare ad una struttura grafica; 2) Posso importare questa struttura grafica in una libreria di manipolazione grafica generale (suppongo che ce ne dovrebbe essere) e fare manipolazioni lì. Quindi, uno dovrebbe combinare il software esistente solo qui, non è così?
Ho due casi d'uso per questo strumento:
- Programmazione automatica o sviluppo di software automatizzato - Sto prendendo in considerazione l'uso di architetture cognitive ( link ) per la modellazione di come è progettato il software e come il codice è costruito e il ragionamento dovrebbe essere fatto al giusto livello di astrazione (livello AST) per questo. Ovviamente, il software moderno coinvolge diversi linguaggi di programmazione, ad es. la più semplice applicazione web comporta come minimo HTML / JavaScript / Sass-CSS / SQL o NoSQL.
- Caso immediato: devo simulare la riscrittura dei termini in Coq (ho una domanda SO pertinente su questo, non ci sono strumenti attualmente disponibili).
Ma immagino che ci possano essere molti casi di utilizzo.