Ещё одним местом, где можно было бы этим воспользоваться - библиотека для работы с грамматиками.
Про грамматики нам всё известно:
- математическое описание грамматики (множества того, этого)
- операции выполняемые с частями грамматики (добавление, чтение, модификация, удаление)
- некоторые особые операции/алгоритмы (left factoring, left recursion removal - это две разных операции)
то есть, такую библиотеку можно написать на любом языке программирования, например на Си, или на русском Си,
и постараться соответствовать бинарным стандартам, для того, чтобы можно было эту библиотеку использовать из всех прочих языков.
Кроме собственно конструирования грамматик в памяти, в этой библиотеке можно реализовать:
1) "механизм редактирования", это список изменений, вносимых в грамматику, возможно ещё Undo/Redo движок
2) "механизм экспорта/импорта", это возможность записывать в файл в некотором формате (или в нескольких), и читать/парсить такие файлы
3) подумать о возможности интеграции с каким-нибудь GraphVis для рисования ориентированного графа грамматики
Интересно, а нет ли такой библиотеки уже готовой? Если нет, то почему? Если есть, то у кого, у Terence Parr?
ЧатГПТ говорит: посмотри на:
- libpcre (регулярные выражения)
- libmarpa (для контекстно-зависимых грамматик, дока)
Но это же другое. Хотя в libmarpa есть работа с объектами "грамматика" и "правила", можно взять в качестве примера.
Удивлён, что никто не сделал для КС-грамматик.
Можно сделать на русском языке и через интернационализацию+локализацию на английский продаться врагам. Или не продаваться, а использовать самостоятельно (работы меньше, переводить на английский не надо, раскручивать локальноанглийскую версию сайта).
Я не знаю, как делает Saxonica свой парсер (как у них одновременно есть реализации на разных языках типа Java и JavaScript - может у них просто много программистов?), но в IBM точно работали с метапрограммированием (из единой мета модели нагенерировать несколько реализаций через генераторы кода). Уж метапрограммирование-то точно можно по-русски выполнить?
Вроде бы на роль подходящего инструмента претендовал Алфор, но я его не смотрел. Может пора?
Отредактировано Лис (2023-04-01 16:38:17)