2009-10-15 13 views
11

Mi piacerebbe capire come costruire un parser in .NET per elaborare i file sorgente. Ad esempio, forse potrei iniziare imparando come analizzare SQL o HTML o CSS e quindi agire sui risultati per poterli formattare per la leggibilità o qualcosa di simile.Parser How in in .NET

Dove posso sapere come fare? Ci sono libri specifici a cui posso fare riferimento? Devo conoscere i lexer/parser?

Specificamente per la piattaforma .NET poiché sono confortevole in C#.

risposta

17

Personalmente ho trovato questo articolo, Grammars and Parsing with C# 2.0, una grande introduzione sulla scrittura di lexer/Parser, con esempi in particolare in materia di C#.

Ho scritto a brief blog post a riguardo non molto tempo fa, lodandolo. La cosa bella è che si rivolge molto a principianti assoluti per analizzare la teoria (dà una base alla teoria e all'attuazione), e prende le cose in fasi graduali. Naturalmente, se vuoi continuare ad apprendere le idee più avanzate del campo, avrai bisogno di varie altre risorse, ma penso che questa sia una base eccellente.

+1

+1. Quello sembra carino. E sicuramente un inizio migliore che tuffarsi proprio in un codice molto complicato. – Joey

+1

Questo è stato fantastico. Una bella introduzione, buoni esempi e seguita con qualche C# per legare tutto insieme! – Rudy

+0

Il link è morto. Qualcuno ha ancora il documento? –

2

ANTLR :)

è un buon modo per conoscere Grammers e parser

+0

Lo "svantaggio" (in questo caso solo) di ANTLR è che produrrà il parser per te, in una delle varie lingue di destinazione. Fantastico, di solito è l'obiettivo, ma in questa situazione, SevenCentral salterà l'educativo di scriverne uno da zero [per una semplice grammatica]. – mjv

+0

Un pratico strumento per lo sviluppo di parser complessi (può anche emettere il codice C#), ma forse non l'approccio migliore se si vuole imparare lo sfondo e le basi. – Noldorin

+0

Penso che sia un buon modo per iniziare, ottieni una conoscenza pratica di ciò che è possibile in termini di parser e poi puoi scavare più a fondo e costruirti da solo se lo vuoi ancora, magari un semplice parser ricorsivo e decente. –

4

Se vuoi imparare come scrivere il parser questa potrebbe non essere la tua risposta, ma se vuoi solo analizzare e lavorare con i risultati dell'analisi, dovresti guardare in modo definitivo a Irony.net. È un toolkit che aiuta ad implementare i linguaggi (con .NET).

0

Il miglior libro che ho letto per imparare gli idiomi di analisi è "Little Lingue"

Little Languages on Amazon

Se si riesce a mettere le mani sul codice sorgente di .NET per System.Text.RegularExpressions , vedrai anche un'implementazione del mondo reale su come costruire un parser.

Justin Rogers ha alcuni eccellenti articoli su come costruire parser generico sul suo blog:

Justin's Blog

E, infine, se si vuole entrare nel nuovo mondo di parser e grammatiche, si dovrebbe davvero essere la lettura su "Oslo" e come usare il linguaggio M e MGrammar. Vi daranno molta flessibilità quando si tratta di analizzare e trasformare il grafico dell'oggetto risultante in altre forme utilizzabili.

Gli articoli di Justin sono probabilmente i più semplici e semplici da installare e utilizzare con un parser non elaborato costruito su .NET.

1

C# ha fatto molta strada dal 2.0. La recente aggiunta di alberi di espressione e digitazione dinamica rende le cose molto più interessanti per l'implementazione di compilatori.

Here is a tutorial su come creare un interprete in C# 4.0 su CodeProject.com.