2009-04-14 12 views
32

Opracowuję kompilator dla nowego języka. Pomyślałem, że byłoby fajnie móc zademonstrować swój rozwój w środowisku z obsługą składni. Język ma wiele niestandardowych słów kluczowych, a jego struktura znacznie różni się od popularnych języków, takich jak Java lub C/C++.Jak utworzyć niestandardowy znacznik składni Eclipse

Jak mogę utworzyć niestandardową składnię wysokiej składni dla Eclipse? Widziałem kilka odniesień do kilku wtyczek, ale dokumentacja nie jest wystarczająco dokładna dla potrzeb moich początkujących.

Mam gramatykę/RE dla mojego języka, a także listy odpowiednich słów kluczowych.

Odpowiedz

14

W ramach Eclipse wykorzystuje się dość złożony model dokumentu do tworzenia kolorowania składni (nazywają to kolorem, nie podświetlaniem), nie jest to tak proste, jak w innych edytorach.

Jeśli naprawdę chcesz się z tym pogodzić, możesz przeczytać the following from the Eclipse plug-in developer guide.

(Powyższy link jest teraz martwy. This may be a similar document lub this.)

+0

Wygląda na to, że jest dość zaangażowany, ale przyniesie produkt o wysokiej jakości. Będę pamiętać o tym narzędziu, ponieważ będę nadal rozwijać mój język. Dzięki! –

+0

ten link jest uszkodzony. Czy to to samo? http: //help.eclipse.org/indigo/index.jsp? topic =% 2Forg.eclipse.platform.doc.isv% 2Fguide% 2Feditors_highlighting.htm – thejoshwolfe

31

Brzmi jak masz do czynienia z DSL (Domain Specific Language). To, czego szukasz, brzmi dokładnie tak, jak XText. Oto fragment ze strony:

Xtext to framework/narzędzie do tworzenia zewnętrznych tekstowych list DSL. Wystarczy opisać swoje własne DSL za pomocą prostego języka gramatycznego EBNF Xtext, a generator utworzy parser, model AST-meta (zaimplementowany w EMF), a także w pełni funkcjonalny Eclipse Text Editor z tego.

Zobacz także this video, który jest wywiadem z jedną z osób, które za nim stoją. Jestem pewien, że zabierzesz stąd :-)

Możesz również sprawdzić this plugin. Nie dokładnie to, czego szukasz, ale może to być dobry początek.

+1

Film nie jest już dostępny w Blip. –

4

To jest dokładnie jeden z celów LiClipse (http://www.liclipse.com/): łatwe wykonywanie edytora z podświetlaniem składni, podstawowym uzupełnianiem kodu, konspektem itp. Kierowanie na Eclipse - zauważ, że jego rdzeń (który pozwala tworzyć niestandardowe języki) stał się otwarty źródło niedawno: http://liclipse.blogspot.com.br/2016/05/liclipse-303-providing-back-to-open.html.

Do dodania nowego języka nie są wymagane umiejętności java (głównie tworzenie nowego pliku .liclipse - który jest plikiem YAML - w odpowiednim miejscu i tworzenie podstawowych zasad określających podział na partycje - np .: zwykle po prostu oddzielając kod od komentarzy od napisów - i określając słowa kluczowe, które masz w partycji, już dawałeś odpowiednie podświetlanie składni).

Po pobraniu istnieje wiele przykładów wtyczek \ com.brainwy.liclipse.editor \ languages ​​i istnieje pewna podstawowa dokumentacja pod adresem http://www.liclipse.com/text/supported_languages.html i http://www.liclipse.com/text/scope_definition.html, jak to zrobić.

+2

Rozumiem, że idea jest miła, ale należy pamiętać, że LiClipse nie jest za darmo "Krótko mówiąc, licencja daje każdemu możliwość oceny LiClipse przez 30 dni, ale musi zostać kupiona do dalszego użytku." – Anton

+0

@Anton: Samodzielny LiClipse Aplikacja nie jest darmowa, ale wtyczka LiClipseText Eclipse [podobno jest] (http://www.liclipse.com/text/index.html). Można go zainstalować z witryny aktualizacji LiClipse pod adresem 'http: // www.liclipse.com/text/updates'. – Lii

+1

@Lii Tak, obsługa podstawowych języków z LiClipse była otwarta z wykorzystaniem metody LiClipseText (patrz: http://liclipse.blogspot.com.br/2016/05/liclipse-303-providing-back-to-open.html) –

1

Zamiast tego można użyć funkcji języka zdefiniowanego przez użytkownika w Notepad ++. Zwykle używamy Notepad ++ do takich przypadków użycia. W tym jest tylko XML. Również notatnik ++ zapewnia edycję opartą na interfejsie użytkownika w celu zdefiniowania gramatyki języka.

Powiązane problemy