Domanda

Sto cercando uno strumento che sarà in grado di costruire un parser (in C #) se gli do una grammatica BNF (es. http://savage.net.au/SQL/sql-2003-2.bnf )

Esiste un tale generatore?

È stato utile?

Soluzione

Normalmente le grammatiche BNF sono troppo ambigue. ANTLR sarà probabilmente buono per quello che stai cercando.

Altri suggerimenti

Il Visual Studio SDK viene effettivamente fornito con lexer e strumenti di generazione parser. Questi sono chiamati MPPG e MPLex e fanno parte del Managed Babel pacchetto. Mentre l'intenzione di raggrupparli con l'SDK è di sviluppare estensioni di linguaggio per Visual Studio, sono perfettamente utilizzabili per la creazione di parser generici che emettono AST.

MPLex e MPPG sono basati su GPLEX e GPPG (progetti della Queensland University of Technology) e sono usati in modo simile a Lex e Yacc. L'SDK contiene anche azioni MSBuild per rendere la generazione del parser una parte del normale processo di compilazione.

Ecco uno screencast che mostra MPLex e MPPG in azione:
http://msdn.microsoft.com/en-us/vstudio/cc837016.aspx

Dovrai modificare un po 'il BNF, ma TinyPG è un ottimo strumento.

Dai un'occhiata anche a Irony:

http://irony.codeplex.com/

sembra molto promettente

IronMeta è un'implementazione in C # di OMeta ; è un PEG packrat (analizzando la grammatica delle espressioni; usa una scelta distorta), quindi le grammatiche possono essere più pulite di quando si usa un sistema LALR simile a yacc.

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