Что такое IronText?
-------------------
IronText — это библиотека для создания DSL и языков программирования под .Net с
низким уровнем сложности, и в то же время, достаточно мощная для создания любых
контекстно-свободных языков.
Ресурсы
-------
Сорсы, примеры, и документация:
http://github.com/sucaba/IronTextLibrary/
NuGet:
http://www.nuget.org/packages/IronText/
Версия
------
0.9.1.0 (1.0 beta)
Возможности
-----------
— Синтаксические и лексические правила описаны полностью с помощью .Net-овых типов
и пользовательских атрибутов
— Поддерживает создание любых контекстно-свободных языков, включая языки заданные
неоднозначными грамматиками
— Поддержка словарей лексических и синтаксических правил, которые могут быть
использованы в разных языках
— Generic-методы могут быть использованы в качестве "шаблонов правил"
— Позволяет задать язык как абстракцию с помощью интерфейсов и абстрактных
классов. В результате такая абстракция может иметь несколько реализаций для
различных задач парсинга, компиляции и т.д.
— Язык может быть унаследован от другого без доступа к исходному коду
базового языка.
— Язык может быть вложен в другой язык с совместимыми лексическими правилами
— Встроенная обработка ошибок
— Встроенная отслеживание позиции (строка, столбец)
— Сканер поддерживает переключаемые *режимы* которые позволяют обрабатывать сложные
лексические элементы, такие как вложенные комментарии
Технические детали
------------------
Парсер: LALR1, RNGLR.
Сканер: DFA скомпилировнный в RE2C-подобный .net код.