2009-03-04 9 views
7

Pracuję nad małym projektem edytora tekstów i chcę dodać podstawowe wyróżnianie składni dla kilku języków (Java, XML..just, aby wymienić tylko kilka). Jako doświadczenie w nauce chciałem dodać jeden z popularnego lub nie popularnego parser lexera Java.Który parser zorientowany na Javę dla prostego projektu (ANTLR, DIY, itp.)

Jaki projekt polecasz. Antlr jest prawdopodobnie najbardziej znany, ale wydaje się dość skomplikowany i ciężki.

Oto opcje, które znam.

  1. antlr
  2. Ragel (tak, to może generować źródło Java dla wejścia Processing)
  3. Zrób to sam (chyba mogę napisać prosty tokena parsera i podświetlić kodu źródłowego).
+0

ANTLR. bez wątpienia. –

Odpowiedz

8

ANTLR lub JavaCC to dwie osoby, które znam. Polecam najpierw ANTLR.

+0

Czy uważasz, że jest zbyt ciężki lub skomplikowany?To jest jedyna rzecz, która powstrzymuje mnie przed użyciem Antlr. Ale jest popularny i wydaje się bardzo stabilny. –

+0

Jeśli mówisz o parsowaniu języka takiego jak Java, powiedziałbym, że jest to słuszne. Dostępne są gramatyki Java, więc będzie to kwestia chodzenia po AST i generowania tego, co z niego chcesz. – duffymo

+0

Czy znasz lub znasz? Polecanie jednego z drugim oznacza, że ​​powinieneś używać obu, nie sądzisz? –

-1

Nie sądzę, że potrzebujesz leksera. wszystko, czego potrzebujesz, to najpierw przeczytać rozszerzenie pliku, aby wykryć język, a następnie z pliku xml, który wymienione słowa kluczowe języka łatwo je znaleźć i wyróżnić.

+0

Nie, potrzebuję przynajmniej prostego lexera na to, co zamierzam zrobić. Dodatkowo daje mi to pewną elastyczność w zależności od języka. –

1

sablecc

Innym ciekawym rozwiązaniem (które jeszcze nie spróbować) byłoby Xtext, który wykorzystuje antlr ale zawiera również narzędzia do tworzenia redaktorów Eclipse dla danego języka.

0

Zrobiłem to z JFlex wcześniej i byłem całkiem zadowolony z tego. Ale język, który podświetlałem, był na tyle prosty, że nie potrzebowałem generatora analizatora, więc twój przebieg może się różnić.

1

ANTLR jest drogą do zrobienia. Nie zbudowałbym go ręcznie. Znajdziesz tu także jeśli rozejrzeć się na stronie internetowej antlr że grammars są dostępne dla Java, XML, itp

0

JLex i CUP są przyzwoite i generatory Lexer parser, odpowiednio. Obecnie używam obu do opracowania prostego języka skryptowego dla projektu, nad którym pracuję.

1

Inną opcją byłaby Xtext. To nie tylko wygeneruje parser dla twojej gramatyki, ale także kompletny edytor z kolorowaniem składni, znacznikami błędów, asystą treści i widokiem konspektu.

3

ANTLR może wydawać się skomplikowany i ciężki, ale nie trzeba używać wszystkich funkcji, które zawiera; jest ładnie ułożony warstwami. Jestem wielkim fanem używania go do tworzenia parserów. Na początek możesz użyć doskonałego ANTLRWorks do wizualizacji i testowania gramatyk, które tworzysz. Naprawdę miło jest móc oglądać przechwytywanie tokenów, budować parsowanie drzew i przechodzić przez ten proces.

Dla twojego edytora tekstu, chciałbym sprawdzić filter grammars, który może dobrze pasować do twoich potrzeb. W przypadku gramatyk filtrujących nie musisz określać całej struktury leksykalnej swojego języka, tylko te części, które są dla Ciebie ważne (tzn. Trzeba je podświetlać, kolorować lub indeksować) i zawsze możesz dodać więcej, dopóki nie będziesz w stanie obsłużyć całego języka.

+0

Twoje linki naprawdę pomocne! – tiboo

2

Kod Google ma nowy projekt acacia-lex. Napisane przeze mnie, wydaje się proste (jak dotąd) java lexer przy użyciu adnotacji javax.

Powiązane problemy