2012-08-06 28 views
7

Pracuję nad parserem C++ (dla IDE), więc teraz staram się zrozumieć gramatykę C++ w szczegółach. Chociaż znalazłem doskonałe źródło gramatyczne pod adresem http://www.nongnu.org/hcb/, mam problemy ze zrozumieniem niektórych jego części - a zwłaszcza, które "prawdziwe" konstrukcje językowe odpowiadają różnym produkcjom.Gramatyka języka C++ BNF z analizowaniem/dopasowywaniem przykładów

Poszukuję gramatyki C/C++ BNF z przykładami kodu pasującego do różnych produkcji/reguł. Czy są jakieś?

+0

+1 za link. Wierzę, że Eclipse jest open source IDE. Może przyjrzeć się jego kodowi źródłowemu. – iammilind

+0

@BartKiers Interesują mnie konstrukcje wspólne dla C i C++, takie jak deklaratory. – intelfx

+0

@intelfx, ah, ok, myślałem, że jesteś zainteresowany tylko C++. –

Odpowiedz

7

Gramatyka z hiperłączem (rzekomą) niekoniecznie jest taka, na której można łatwo zbudować parser. Jest to zależne od natury twojego mechanizmu analizowania i od tego, na którym dialekcie C i C++ ci zależy (ANSI? GNU? C99? C++ 11? MS?).

Budowanie działającego parsera w C++ to naprawdę trudny . Zobacz moją odpowiedź na Why C++ cannot be parsed with a LR(1) parser? z kilku powodów. Jeśli chcesz mieć "dobry" parser, proponuję użyć jednego z istniejących. Warto przyjrzeć się może być Elsa, ponieważ jest to open source.

+0

Cóż, to nie jest od zera - jest już parser (IDE to KDevelop 4), i chciałem go nieco poprawić. Parser to (będzie) C++ 11. Ale dziękuję za link; Popatrzę na to. – intelfx

+0

... Niestety, Elsa nie jest C++ 11. – intelfx

+0

I, parser C++ 11 (w tym sprawdzanie typów) jest w rzeczywistości * działką * więcej pracy niż parser C++ 98 (z odpowiednim sprawdzaniem typu). –