Нитра С Открытым исходным кодом


Jetbrains имеет открытый исходный код низкоуровневого языкового инструментария под названием Nitra, который включает в себя язык для описания грамматик и инструмент сборки для их компиляции.

В сообщении в блоге, посвященном Nitra еще в ноябре 2013 года, Хади Харири объяснил, что это не просто еще один генератор синтаксического анализатора, и привел пример его способности расширять C# с помощью нового оператора .? :

В то время Нитра уже находилась в стадии разработки более года. Теперь его команда, возглавляемая Владом Чистяковым, решила, что, хотя он “все еще находится в стадии разработки”, он обеспечивает “минимальный жизнеспособный набор функций, а также хорошую архитектурную базу для будущего развития”, и его исходный код был доступен на GitHub, выпущенном под упрощенной лицензией BSD.

Его описание на GitHub говорит нам:

Нитра-это языковой верстак. Вы можете использовать Nitra для создания или расширения языка программирования общего назначения или доменного языка (DSL). В настоящее время Nitra позволяет создавать динамически расширяющиеся парсеры. В будущем Nitra позволит создать полную поддержку языков программирования: компиляторы, поддержка IDE.

В своем блоге, анонсирующем его открытый источник, Мэтт Эллис дает более полное определение:

Nitra-это язык для описания грамматик и абстрактных синтаксических деревьев для их представления, а также инструмент сборки для компиляции грамматик в синтаксические анализаторы и создания классов, необходимых для представления и навигации по AST. И это также набор языковых служб, которые используют грамматику для обеспечения автоматической подсветки синтаксиса, выделения контуров и сопоставления скобок.

Создание синтаксических анализаторов и AST (абстрактных синтаксических деревьев) – это то, в чем JetBrains уже очень хорош, но, как объясняет Эллис, убрав часть работы, Нитра позволит компании

“поддержка большего количества языков, более быстрая и сосредоточенная на более высоких уровнях в стеке языковых инструментов, таких как анализ и быстрые исправления”.

Он также предупреждает, что если вы хотите использовать Нитру, “ожидайте, что вы испачкаете руки”, и перечисляет следующее в качестве того, что она в настоящее время поддерживает:

Грамматики для определения синтаксических анализаторов без лексеров и AST, которые могут быть расширены во время компиляции или во время выполнения, поддерживая состав языков или языков с расширяемым синтаксисом, таких как Nemerle

Инструмент командной строки для компиляции грамматик в сборку, содержащую синтаксический анализатор и классы AST (грамматики также могут быть скомпилированы в Visual Studio)

Приложение для Windows (Nitra.Visualizer.exe) для загрузки и тестирования грамматик

Языковая служба Visual Studio, которая использует Nitra для анализа файлов и обеспечивает автоматическую подсветку синтаксиса, выделение контуров и сопоставление скобок. Текущая работа заключается в том, чтобы увеличить автоматическую поддержку здесь, чтобы включить переход к объявлениям, поиск использования и переименование рефакторингов


Добавить комментарий