Parser Generator для смены файла - PullRequest
       9

Parser Generator для смены файла

2 голосов
/ 16 февраля 2010

существует ли какой-либо Генератор синтаксических анализаторов, который генерирует анализаторы, способные на следующее: Анализирует файл, и если вы изменяете строку n, то он только анализирует строку или строки, которые изменились из-за этого. Чтобы синтаксический анализатор не анализировал полный файл.

Поздравил,

Mathias

Ответы [ 3 ]

1 голос
/ 16 февраля 2010

Тим Вагнер работал над этим довольно долго. См. Его GLR документ с движком синтаксического анализа. Он работает в основном, поддерживая дерево разбора и пытаясь проанализировать «весь поток» как последовательность деревьев разбора и измененных токенов. Это довольно умно.

Скотт Макпик утверждает, что Elsa реализует инкрементный анализатор GLR. AFAIK, Эльза в основном используется для периодического анализа.

1 голос
/ 16 февраля 2010

Не могу дать однозначного да или нет, но сомневаюсь. Генераторы парсеров предназначены для создания парсеров для произвольных грамматик. Обновление дерева разбора путем повторной проверки только одной строки накладывает строгие ограничения на грамматику или допустимые изменения, поскольку оно должно влиять только на сильно локализованную часть дерева разбора. Поэтому я сильно сомневаюсь, что кто-то включил такую ​​функцию в генератор парсеров общего назначения.

0 голосов
/ 18 марта 2010

У меня был некоторый успех в реализации общего механизма синтаксического анализа поверх Packrat. Это хорошо подходит для этой цели из-за запоминания - редактор делает недействительными только запомненные фрагменты, которые перекрывают измененную строку, а затем весь файл повторно обрабатывается, но фактически анализируется только измененная строка, все остальные остаются запомненными из предыдущего запуска.

Нет готовых к использованию решений, но вы можете выбрать любую реализацию Packrat и приготовить свою собственную вещь поверх нее.

Вы можете посмотреть, как Packrat интегрируется с текстовым редактором, здесь:

http://www.meta -alternative.net / mbase.html

...