Domanda

Sono sempre più preso in giro nello sviluppo di DSL.Ne ho sviluppato uno piccolo con F# utilizzando fslex e fsyacc ma i messaggi di errore sono imprecisi (non riesco nemmeno a trovare un modo per generarne di migliori, sembra esserci poca documentazione su come gestire i casi di errore) e il fatto che non analizzeranno adeguatamente le stringhe UNICODE, non è accettabile per me.Per farla breve, sto cercando strumenti che rendano piuttosto semplice lo sviluppo di un DSL (gli strumenti di Visual Studio per questo non hanno nulla a che vedere con quello che cerco) e sono più interessato alla parte di analisi/generazione AST.Ho guardato ANTLR e confondere codice e metalinguaggio di definizione grammaticale mi sembra brutto, quindi per favore non menzionarlo o soluzioni che soffrono di un problema simile nelle risposte.Inoltre, ho visto che ci sono alcune cose per una lingua chiamata Boo, ma non sono davvero interessato a scherzare con un'altra lingua (specialmente se ha poco supporto) in questo momento, quindi neanche questo va bene.Qualsiasi altro suggerimento è apprezzato, purché sia ​​adeguatamente documentato, funzioni bene con .NET e, ultimo ma non meno importante, non implichi l'uso di un linguaggio tipizzato dinamicamente o l'uso di DLR.

È stato utile?

Soluzione

Vuoi iniziare a lavorare con Oslo. Include gli strumenti per definire la DSL e gli strumenti per la definizione delle grammatiche sulla DSL. Le grammatiche possono emettere un AST o qualsiasi altra cosa.

Un tipo di output che può generare dal DSL è uno schema di SQL Server corrispondente. Le istanze del DSL possono quindi essere archiviate in SQL Server Express (o versioni successive).

Oslo fa parte di una visione più ampia che ha Microsoft, ma puoi ignorarla e iniziare con il " DSL " parte.

Ti consiglio di iniziare e di essere attivo nel far sapere a Microsoft cosa ti piace e cosa non ti piace. Hai attirato la loro attenzione proprio ora, che tu lo sappia o no.

Altri suggerimenti

Forse potresti provare Oslo . Personalmente non l'ho ancora usato, ma gli esempi sembrano piuttosto interessanti.

  &

quot; quot Oslo &; consiste di:   Uno strumento che aiuta le persone a definire e interagire con i modelli in modo ricco e visivo   Una lingua che aiuta le persone a creare e utilizzare linguaggi testuali specifici di dominio e modelli di dati   Un repository relazionale che rende i modelli disponibili sia per gli strumenti che per i componenti della piattaforma

Qui è una sorta di panoramica generale!

Potresti comunque voler guardare il codice sorgente di Boo per vedere come fanno le cose.Usano anche ANTLR per generare il parser.Non è necessario mescolare alcun codice con le grammatiche ANTLR: può essere utile come completamente descrittivo, purché sia ​​una lingua LL(*).

Irony - situato in Irony @ CodePlex potrebbe essere una buona soluzione per te - puoi costruire la tua grammatica utilizzando la funzionalità integrata dei linguaggi .NET invece di provare a creare BNF file grammaticali separatamente.

Il modo più semplice per creare un DSL in un inglese quasi normale: Crea il tuo DSL per Java o C # (parte 4): aggiunta di un livello semantico

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