Domanda

Qualcuno ha esperienza con gli strumenti di lavoro la lingua banco da lavoro, come xtext, Spoofax, e MPS JetBrains'? Sto cercando di provare uno fuori e sto avendo un momento difficile trovare un buon confronto tra i diversi strumenti. Quali sono i pro ei contro di ciascuno?

Sto cercando di costruire DSL che generano codice Python, quindi sono particolarmente interessato a sentire da persone che hanno utilizzato uno di questi strumenti con Python (tutti e tre sembrano abbastanza Java-si ... perché? ). I DLSS sono in primo luogo per il mio uso, quindi mi interessa di meno per la costruzione di una davvero carina IDE di me sul fatto che sia i KISS per definire la sintassi e scrivere il generatore di codice. La possibilità di digitare-check / fare l'analisi statica del DLSS sarebbe davvero bello.

Sono un po 'paura di ottenere lontano giù un percorso, colpendo un muro, e rendendosi conto che tutto il mio codice è in un formato che non può essere portato su qualsiasi altra cosa - è che un rischio con questi strumenti? MPS, in particolare, sembra un po 'paura in quanto mi pare di capire che non si ha realmente generare sintassi basati su testo, ma piuttosto costruire redattori specializzati per AST.

È stato utile?

Soluzione

Markus Voelter fa un buon lavoro di confronto tra i tre in podcast se-radio-Software Tour architettura. L'idea di base è che xtext è la più utilizzata, quindi più stabile e documentato, ed è basato sul popolare Eclipse piattaforma e la modellizzazione degli ecosistemi - EMF che lo circonda. D'altra parte è parser based e usa ANTLR internamente, il che significa che il tipo di grammatiche si può definire è limitato e le lingue non possono essere combinati con facilità. Spoofax è un prodotto accademico con almeno l'adozione di questi tre. E 'anche parser base, ma utilizza il proprio generatore di parser internamente che permette combinazioni linguistiche. JetBrains MPS è proiezione basata, che dà molta libertà al progettista di linguaggi e permette combinazioni di lingue. * T ha anche il supporto solido. Svantaggio potrebbe essere la curva di apprendimento. Nessuno di questi strumenti è strettamente Java focalizzata come lingua di destinazione per i generatori di codice. Xtext utilizza modelli Xpand, che sono testo normale. Io non so davvero come funziona la generazione di codice in Spoofax. MPS ha la sua lingua di base, che si dice essere sottoinsieme di Java, ma ci sono diverse alternative. Io personalmente uso xtext per la sua semplicità e la maturità, ma quelle forti limitazioni fornite dal suo design lo rendono non una scelta molto prova di futuro.

Altri suggerimenti

ho scelto xtext nello stesso caso due settimane fa, ma non so nulla di Spoofax. La mia prima impressione - xtext è molto semplice e produttivo. Ho fatto il mio primo Realife (ma molto semplice) del progetto in 30 minuti, ho generato un grafico dot graphviz e report HTML. Non mi piace MPS perché preferisco i file di origine e di destinazione di testo.

Ci sono altri sistemi per fare questo genere di cose. Se il vostro obiettivo è la costruzione di strumenti, non necessariamente si deve guardare a un IDE con uno strumento integrato; a volte si possono trovare strumenti migliori che si sono concentrati su di utilità piuttosto che l'integrazione IDE

Si consideri uno degli strumenti di programma di trasformazione puro:

  • TXL (pratico, unico paradigma)
  • Stratego (Spoofax prima di essere trapiantato in Eclipse)
  • Rascal (ricerca, molto ben progettato in molti modi)
  • DMS Software Reengineering Toolkit (sembra essere miei; commerciale; usato per fare resistente DSL / analisi langauge convenzionale e trasformazione anche su C ++)

Questi tutti forniscono buoni meccanismi per la definizione DSL e trasformandoli.

Ciò che conta davvero è il meccanismo di supporto per la realizzazione di "vita dopo l'analisi".

Oggi forse il posto migliore per confrontare diversi banchi di lavoro linguistici è http://www.languageworkbenches.net/ e ci http://www.languageworkbenches.net/past-editions/ mostra come un set di Banchi di lingua implementare un simile tipo di operazione: a. dsl per un determinato dominio

Date un'occhiata al libro di Markus Völter. Si fa un confronto molto completo di questi 3 tecnologie. http://dslbook.org

xtext è molto ben tenuto, ma questo non vuol dire che di problem-meno. Ottenere il tipo di sistema, scoping e la generazione di esecuzione non è così facile come pubblicizzato.

Spoofax è scannerless, (semplificando la composizione della grammatica). Non che ben documentato, ma sembra completa.

MPS è proiettivo. Un professionista per la composizione e la lingua con per la modifica. Supporta più editori per un AST e presto anche il supporto di un editor di diagrammi bello. documentazione lingua di base non è buona. Sistema dei tipi, scoping, il controllo è molto ben gestita. Modello a trasformazioni modello sono fatto da parte del risolutore. I miei colleghi che utilizzano lo lamentano modello da linguaggi di testo. (La mia opinione M2M non era intuitivo sia.)

Anni fa Microsoft se il progetto in OSLO. MGrammar e soprattutto Quadrant sono stati molto promettenti. E 'stato possibile rappresentare il modello in tabella, maschera, testo o vista diagramma. Ma improvvisamente hanno cancellato il progetto (e forse sparato le persone che lavorano su di esso)

'ho sperimentato per un paio di giorni con xtext e, mentre gli sguardi strumento promettente alla fine sono stato messo fuori dalla stretta integrazione con il Eclipse l'ecosistema e il dolore si deve passare attraverso solo per risolvere quello che dovrebbe essere dato fuori senza problemi della scatola: una corsa senza testa del generatore di codice implementato. Vedere qui per alcune delle minuzie uno deve andare attraverso (e non è nemmeno adeguatamente documentata sul xtext sito web, ma piuttosto su un blog, che significa la sua una patch ad hoc che potrebbe benissimo rompere sulla prossima release).

Sarà prendere un altro sguardo in un anno e mezzo per vedere se v'è stato alcun miglioramento su questo fronte.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top