История изменений
Исправление den73, (текущая версия) :
Потому что с помощью таблицы чтения можно, например, реализовать кастомные строки, заключённые в квадратные скобки. Или теги XML. Причём синтаксис задаётся не грамматикой, а таблицей, которая сопоставляет буквам функции. Читатель (лексер) представляет из себя как раз эту таблицу, к-рая меняется изнутри лиспа. И, если мы пишем годную среду разработки для лиспа, это нужно учитывать. Нельзя написать некий лексер на Яве и сказать «это лексер лиспа». Нужно передавать строки в лисп и из него получать лексемы.
Кроме того, чтение может иметь побочные эффекты. Поэтому для каждой таблицы чтения нужна соответствующая ей «таблица чтения для IDE», и настраивать её должен автор таблицы чтения, по тем правилам, которые мы, как авторы плагина, должны ему сообщить. Сделать это он может на любом языке, но вряд ли это имеет смысл делать не на лиспе.
Исходная версия den73, :
Потому что с помощью таблицы чтения можно, например, реализовать кастомные строки, заключённые в квадратные скобки. Или теги XML. Причём синтаксис задаётся не грамматикой, а таблицей, которая сопоставляет буквам функцию. Читатель (лексер) представляет из себя как раз эту таблицу, к-рая меняется изнутри лиспа. И, если мы пишем годную среду разработки для лиспа, это нужно учитывать. Нельзя написать некий лексер на Яве и сказать «это лексер лиспа». Нужно передавать строки в лисп и из него получать лексемы.
Кроме того, чтение может иметь побочные эффекты. Поэтому для каждой таблицы чтения нужна соответствующая ей «таблица чтения для IDE», и настраивать её должен автор таблицы чтения, по тем правилам, которые мы, как авторы плагина, должны ему сообщить. Сделать это он может на любом языке, но вряд ли это имеет смысл делать не на лиспе.