2009-07-28 17 views

Odpowiedz

6

Gold jest OK jak daleko generatory parser iść.

+0

Powiedziałbym, że jest całkiem niezły – SpaceghostAli

+3

OP proszony o LL (k). Złoto to LALR. –

+0

popraw mnie jeśli się mylę: czy nie ma podzbiorów gramatyki LL gramatyk LALR? –

4

Być może zechcesz spojrzeć na MinosseCC, port JavaCC na C#. Inną możliwością jest Spart.

+1

Nazwa MinosseCC została zmieniona na CSharpCC. Obecna wersja jest w przestrzeni Google Code i jest portem JavaCC 3.2, podczas gdy wersja rozwojowa (port JavaCC 5.0) jest rozwijana na GitHub (http://github.com/deveel/csharpcc) – Antonello

22

ANTLR (nic innego do powiedzenia)

+16

dobrze, musisz powiedz coś, aby uzyskać 15 znaków. ;) +1 – kenny

+0

Myślę, że ANTLR ma prawdziwe problemy z podawaniem odpowiednich komunikatów o błędach. Powodzenia w szukaniu np. gdzie umieścić specyfikację @inlude! Dokumentacja jest oszałamiająca i nigdy nie pokazuje preferowanego sposobu robienia rzeczy. Gramaty drzewa to strata czasu. Strona ANTLR ma nawet ogromny wpis na blogu. –

+1

Hmm, wygląda jak http://www.antlr.org/wiki/display/ANTLR3/Antlr+3+CSharp+Target został ostatnio zaktualizowany 3 lata temu i brakuje wszystkich bloków kodu - poczekaj, nie, właśnie to dzieje się, gdy JavaScript jest wyłączony. W każdym razie C# zawsze był celem ANTLR drugiej klasy. Kiedy użyłem go po raz pierwszy, kod źródłowy C# Runtime nie był dostępny: autor (nie ten sam co autor ANTLR) wypuścił plik binarny bez określonej licencji IIRC i odpadł z powierzchni ziemi. Użyłem Reflectora do rekonstrukcji kodu źródłowego. – Qwertie

3

W bloku o nazwie LLLPG znajduje się nowy generator parsera obsługujący gramatyki LL (k) i asercje o zerowej szerokości. Może być używany bez biblioteki środowiska wykonawczego (wystarcza klasa podstawowa). Dokumentacja jest teraz dość szczegółowa i wykorzystałem LLLPG do przeanalizowania większości dialektów języka C# o nazwie Enhanced C# (która w rzeczywistości jest głównym językiem wprowadzania LLLPG). Składnia wejściowa nie jest jednak EBNF (jest to rodzaj mashup kodu stylu C# + ANTLR).

Pełne ujawnienie: napisałem. Pytania mile widziane.