2010-11-08 3 views
3

Я однажды реализовал генератор парсера SLR, который генерирует инкрементные синтаксические анализаторы. Парсер может анализировать фрагмент текста от начала до конца, но когда вы удаляете или вставляете текст, он выполняет минимальный объем работы и минимальное количество изменений в потоке токенов и синтаксическом дереве вместо того, чтобы просто перерисовывать все с самого начала. Проблема в том, что я не нашел возможности использовать это? Парсер делает немного больше работы, чем обычный парсер. Есть ли такая возможность? PS. Если вы хотите знать, как основы Google для разработки компилятора diku, это бесплатная книга, тогда мне нужно было немного модифицировать алгоритм, чтобы он сохранял состояние парсера повсюду, что является дополнительной работой Я упомянул выше.Каково использование инкрементного генератора парсера SLR?

+1

Синтаксис проверки в редактировании ПРС? –

+0

«знаете, как Google, его бесплатная книга». Эта фраза не имеет никакого смысла. Google для книги по разбору SLR? –

+0

К сожалению, я сказал, что «основы дизайна компилятора diku» Google, но вместо «» я использовал символы, uhm '<' and '>', и я думаю, что они, вероятно, снова исчезнут. –

ответ

3

Очевидным ответом является поддержка структурированного редактора, в котором хранится редактор, а именно AST, а не текст. Это позволяет редактору предлагать, как продолжить редактирование, когда предоставляется только частичный ввод (например, после слова «while», редактор знает, что »(« необходимо и может предложить, он может вставить полный оператор «if» после того, как будет предоставлено только ключевое слово, он может пожаловаться на то, что введенный синтаксис неверен при вводе и т. д.)

Было построено много таких редакторов, большинство из них не удались, люди, похоже, любят/ненавидят редакторы, которые делают это

самый продвинутый текущий проект, я знаю, что это это Harmonia проект в Беркли Они используют версию большого брата вашего дополнительных парсер:... инкрементного РВО анализатор