2009-04-14 1 views
32

Я разрабатываю компилятор для нового языка. Я подумал, что было бы неплохо продемонстрировать свою разработку в среде, поддерживающей синтаксис. Язык имеет довольно много пользовательских ключевых слов, и его структура значительно отличается от обычных языков, таких как Java или C/C++.Как создать пользовательский синтаксис синтаксиса Eclipse

Как я могу разработать собственный синтаксис highligher для Eclipse? Я видел некоторые ссылки на несколько плагинов, но документация недостаточно полная для моих потребностей новичка.

У меня есть грамматика/REs для моего языка, а также списки релевантных ключевых слов.

ответ

14

Рамка Eclipse использует довольно сложную модель документа для синтаксической раскраски (они называют ее окраской, а не подсветкой), это не так просто, как в других редакторах.

Если вы действительно хотите попробовать и общаетесь с ним, вы можете прочитать the following from the Eclipse plug-in developer guide.

(Выше ссылка теперь мертв. This may be a similar document или this.)

+0

Похоже, что это довольно активно, но будет производить продукт высокого качества. Я буду держать этот инструмент в виду, поскольку я продолжаю развивать свой язык. Благодаря! –

+0

эта ссылка поврежден. Это одно и то же? Http: //help.eclipse.org/indigo/index.jsp? topic =% 2Forg.eclipse.platform.doc.isv% 2Fguide% 2Feditors_highlighting.htm – thejoshwolfe

31

Похоже, вы имеете дело с DSL (Domain Specific Language). То, что вы ищете, звучит точно так же, как XText. Вот выдержка со страницы:

Xtext - это основа/инструмент для разработки внешних текстовых DSL. Просто опишите свой собственный DSL, используя простой язык грамматики EBNF Xtext, и генератор создаст парсер, мета-модель AST (реализованную в EMF), а также полнофункциональный текстовый редактор Eclipse.

Также зарегистрируйтесь this video, который является интервью с одним из людей, стоящих за ним. Я уверен, что вы отнесете это отсюда :-)

Возможно, вы также захотите зарегистрироваться this plugin. Не совсем то, что вы ищете, но может быть хорошим началом.

+1

Видео больше не доступно на Blip. –

4

Это точно одна из целей LiClipse (http://www.liclipse.com/): легко сделать редактор с подсветкой синтаксиса, базовым кодом завершения, контуром и т. Д. Eclipse - обратите внимание, что его ядро ​​(которое позволяет создавать собственные языки) стало открытым источник недавно: http://liclipse.blogspot.com.br/2016/05/liclipse-303-providing-back-to-open.html.

Никаких навыков java не требуется, чтобы добавить новый язык (в основном создавая новый файл .liclipse - который является YAML-файлом в нужном месте и создавая некоторые основные правила, чтобы сказать, как разделить ваш язык - то есть: обычно просто отделяя код от комментариев от строк - и указание ключевых слов, которые у вас есть в разделе, уже даст вам правильную подсветку синтаксиса).

Если вы загружаете его, есть ряд примеров в плагинах \ com.brainwy.liclipse.editor \ Языки и есть некоторые основные документы на http://www.liclipse.com/text/supported_languages.html и http://www.liclipse.com/text/scope_definition.html о том, как это сделать.

+2

Я считаю, что идея хорошая, но имейте в виду, что LiClipse на самом деле не свободен. Короче говоря, лицензия позволяет любому оценить LiClipse в течение 30 дней, но его необходимо купить для продолжения использования. – Anton

+0

@ Антон: автономный LiClipse приложение не является бесплатным, но плагин LiClipseText Eclipse [по-видимому] (http://www.liclipse.com/text/index.html). Его можно установить с сайта обновления LiClipse по адресу http: // www.liclipse.com/text/updates'. – Lii

+1

@ Lii да, основные языки, обрабатывающие LiClipse, были открыты как LiClipseText (см. Http://liclipse.blogspot.com.br/2016/05/liclipse-303-providing-back-to-open.html) –

1

Вместо этого вы можете использовать функциональность User Defined Language для Notepad ++. Обычно мы используем Notepad ++ для такого варианта использования. В том, что это всего лишь XML. Кроме того, notepad ++ предоставляет редактирование на основе пользовательского интерфейса для определения грамматики, специфичной для вашего языка.