История изменений
Исправление den73, (текущая версия) :
В принципе, резонный вопрос - а где же в парсере так необходимо нарушение чистоты структур? Как минимум, эффективная таблица символов - это хеш-таблица или б-дерево. Можно помыслить и многоверсионные хеш-таблицы без полного копирования.
А вообще ты навёл меня на плохую мысль: если язык по семантике требует двух проходов при чтении, то его исходный текст вообще нельзя быстро раскрасить во время редактирования без дополнительных «эвристик». Допустим, если в языке можно обращаться к именам выше места, где они декларированы и если я хочу по цвету отличить идентификаторы, определённые в редактируемом файле, то в момент, когда я посреди файла открываю комментарий, все расположенные ниже этого места идентификаторы как бы исчезают и их нужно перекрасить.
Т.е., может оказаться, что невозможно использовать один и тот же парсер и для транслятора, и для раскраски.
Исходная версия den73, :
В принципе, резонный вопрос - а где же в парсере так необходимо нарушение чистоты структур? Как минимум, эффективная таблица символов - это хеш-таблица или б-дерево. Можно помыслить и многоверсионные хеш-таблицы без полного копирования.
А вообще ты навёл меня на плохую мысль: если язык по семантике требует двух проходов при чтении, то его исходный текст вообще нельзя быстро раскрасить во время редактирования без дополнительных «эвристик». Допустим, если в языке можно обращаться к именам выше места, где они декларированы и если я хочу по цвету отличить идентификаторы, определённые в редактируемом файле, то в момент, когда я посреди файла открываю комментарий, то расположенные ниже идентификаторы как бы исчезают и их нужно перекрасить.
Т.е., может оказаться, что невозможно использовать один и тот же парсер и для транслятора, и для раскраски.