2009-10-15 20 views
11

Chciałbym zrozumieć, jak skonstruować analizator składni w .NET do przetwarzania plików źródłowych. Na przykład, może mógłbym zacząć od nauki parsowania kodu SQL lub HTML lub CSS, a następnie odczytywać wyniki, aby móc je sformatować pod kątem czytelności lub czegoś podobnego.Analizator składni How To in .NET

Gdzie mogę się dowiedzieć, jak to zrobić? Czy istnieją konkretne książki, do których mogę się odnieść? Czy muszę się uczyć o lexers/parserach?

Specjalnie dla platformy .NET, ponieważ jestem wygodny w C#.

Odpowiedz

17

ja osobiście znalazłem ten artykuł, Grammars and Parsing with C# 2.0, wspaniałe wprowadzenie na pisaniu lexers/parserami z przykładami szczególnie odnoszące się do C#.

Napisałem o tym już przed chwilą a brief blog post, robiąc to chwaląc. Cieszy fakt, że jest on skierowany do początkujących, którzy piszą teorię (daje ona podstawę do teorii i implementacji) i podejmuje sprawy stopniowo. Oczywiście, jeśli chcesz nauczyć się bardziej zaawansowanych pomysłów w tej dziedzinie, będziesz potrzebował różnych innych zasobów, ale myślę, że jest to doskonała podstawa.

+1

+1. Ta wygląda ładnie. I zdecydowanie lepszy start niż nurkowanie w bardzo skomplikowanym kodzie. – Joey

+1

To było świetne. Ładne wprowadzenie, dobre przykłady i śledzenie z C#, aby związać to wszystko razem! – Rudy

+0

Link nie działa. Ktoś nadal ma ten dokument? –

2

ANTLR :)

to dobry sposób, aby dowiedzieć się o grammers i analizatorów

+0

"Minusem" (w tym przypadku) ANTLR jest to, że stworzy on parser w jednym z kilku języków docelowych. Fajnie, to zwykle jest cel, ale w tej sytuacji SevenCentral straci edukację pisania od zera [dla prostej gramatyki]. – mjv

+0

Poręczne narzędzie do tworzenia złożonych analizatorów składni (może nawet emitować kod C#), ale być może nie jest to najlepsze podejście, jeśli chcesz nauczyć się podstaw i tła. – Noldorin

+0

Myślę, że to dobry sposób na rozpoczęcie, możesz zdobyć praktyczną wiedzę na temat tego, co jest możliwe w kategoriach analizatora składni, a następnie może kopać głębiej i budować własne, jeśli nadal chcesz, być może prosty rekurencyjny porządny parser. –

4

Jeśli chcesz nauczyć się pisać parser, to może nie być twoja odpowiedź, ale jeśli chcesz tylko analizować i pracować z wynikami analizy, powinieneś definitywnie spojrzeć na Irony.net. Jest to zestaw narzędzi, który pomaga wdrażać języki (z .NET).

0

najlepsza książka, że ​​czytałem o nauce idiomów parsowania jest „mały Języki”

Little Languages on Amazon

Jeśli można dostać w swoje ręce kodu źródłowego NET System.Text.RegularExpressions , zobaczysz także implementację tego, jak zbudować parser.

Justin Rogers ma znakomite artykuły na temat jak zbudować parser generycznych na swoim blogu:

Justin's Blog

I wreszcie, jeśli chcesz wprowadzić nowy świat parserami i gramatyk, to powinien być naprawdę czytanie na "Oslo" i jak używać języka M i MGrammar. Zapewnią one dużą elastyczność w analizie i przekształcaniu wynikowego wykresu w inne użyteczne formy.

Artykuły Justina są prawdopodobnie najłatwiejsze i najprostsze w uruchomieniu z nieprzetworzonym analizatorem składającym się na platformie .NET.

1

C# ma długą drogę od 2.0. Niedawne dodawanie drzewek wyrażeń i dynamiczne pisanie sprawia, że ​​o wiele bardziej interesujące jest implementowanie kompilatorów.

Here is a tutorial o tym, jak utworzyć interpretera w C# 4.0 na CodeProject.com.

Powiązane problemy