История изменений
Исправление den73, (текущая версия) :
У меня такие задачи актуальны:
- раскраска - для неё не нужно ходить по дереву, она появляется побочным эффектом лексера/парсера
- автодополнение слов - ещё не делал, сказать не могу. Но если это идентификатор, то от него нужен в моём случае не просто текст
- печать лексем для отладки. Здесь текст в полный рост
- анпарсер - текст в полный рост
- поиск - пока не делал, но тут либо текст, либо ходить по структуруам
- трансляция в другой язык - здесь от текста есть кое-какая польза, но в целом рекурсивное хождение по структурам неизбежно
- действия по щелчку на имени, например, переход к определению - для этого полюбасу нужен отдельный парсер окрестностей текущего положения курсора, т.к. в ЯП имя может встречаться и в комментарии, и внутри строкового литерала. Впрочем, это зависит от языка
- отображение «дерева структуры» - это, по-моему, самое страшное, потому что это дерево не должно моргать, когда текст временно становится невалидным. ЕМНИП эта задача толком не решена в Visual Studio для С++, т.е. дерево очень медленно обновляется. Видимо, нужно ещё искать - может быть, где-то сделано нормально,и взять идеи оттуда. Пока что я на практике пользуюсь кнопкой, которая в отдельное окно выдаёт мне список определений, т.е. в ручном режиме обновляю дерево.
- фолдинг-анфолдинг - мне он не нравится и делать его я не собираюсь
- переход/подсветка парных скобок, переход на лексему вперёд/назад
- показ места ошибки разбора
Моё имхо после нескольких подходов к этой задаче - главное - это попытаться разбить на как можно более мелкие части. Я с этой задачей не справился, но «почти» справился. Связи между слоями возникают в самый последний момент, когда вдруг оказывается, что что-то недоучёл. Я сделал сколько-то рефакторингов, но всё равно в чистом виде модульности добиться не удалось. Однако количество связей между слоями у меня более-менее обозримо и в целом я, как мне кажется, контролирую ситуацию.
Но ты сам видишь - даже список того, что должна уметь среда разработки, весьма внушительный.
Исправление den73, :
У меня такие задачи актуальны:
- раскраска - для неё не нужно ходить по дереву, она появляется побочным эффектом лексера/парсера
- автодополнение слов - ещё не делал, сказать не могу. Но если это идентификатор, то от него нужен в моём случае не просто текст
- печать лексем для отладки. Здесь текст в полный рост
- анпарсер - текст в полный рост
- поиск - пока не делал, но тут либо текст, либо ходить по структуруам
- трансляция в другой язык - здесь от текста есть кое-какая польза, но в целом рекурсивное хождение по структурам неизбежно
- действия по щелчку на имени, например, переход к определению - для этого полюбасу нужен отдельный парсер окрестностей текущего положения курсора, т.к. в ЯП имя может встречаться и в комментарии, и внутри строкового литерала. Впрочем, это зависит от языка
- отображение «дерева структуры» - это, по-моему, самое страшное, потому что это дерево не должно моргать, когда текст временно становится невалидным. ЕМНИП эта задача толком не решена в Visual Studio для С++, т.е. дерево очень медленно обновляется.
- фолдинг-анфолдинг - мне он не нравится и делать его я не собираюсь
- переход/подсветка парных скобок, переход на лексему вперёд/назад
- показ места ошибки разбора
Моё имхо после нескольких подходов к этой задаче - главное - это попытаться разбить на как можно более мелкие части. Я с этой задачей не справился, но «почти» справился. Связи между слоями возникают в самый последний момент, когда вдруг оказывается, что что-то недоучёл. Я сделал сколько-то рефакторингов, но всё равно в чистом виде модульности добиться не удалось. Однако количество связей между слоями у меня более-менее обозримо и в целом я, как мне кажется, контролирую ситуацию.
Но ты сам видишь - даже список того, что должна уметь среда разработки, весьма внушительный.
Исходная версия den73, :
У меня такие задачи актуальны:
- раскраска - для неё не нужно ходить по дереву, она появляется побочным эффектом лексера/парсера
- автодополнение слов - ещё не делал, сказать не могу. Но если это идентификатор, то от него нужен в моём случае не просто текст
- печать лексем для отладки. Здесь текст в полный рост
- анпарсер - текст в полный рост
- поиск - пока не делал, но тут либо текст, либо ходить по структуруам
- трансляция в другой язык - здесь от текста есть кое-какая польза, но в целом рекурсивное хождение по структурам неизбежно
- действия по щелчку на имени, например, переход к определению - для этого полюбасу нужен отдельный парсер окрестностей текущего положения курсора, т.к. в ЯП имя может встречаться и в комментарии, и внутри строкового литерала. Впрочем, это зависит от языка
- отображение «дерева структуры» - это, по-моему, самое страшное, потому что это дерево не должно моргать, когда текст временно становится невалидным. По-моему, эта задача толком не решена
- фолдинг-анфолдинг - мне он не нравится и делать его я не собираюсь
- переход/подсветка парных скобок, переход на лексему вперёд/назад
- показ места ошибки разбора
Моё имхо после нескольких подходов к этой задаче - главное - это попытаться разбить на как можно более мелкие части. Я с этой задачей не справился, но «почти» справился. Связи между слоями возникают в самый последний момент, когда вдруг оказывается, что что-то недоучёл. Я сделал сколько-то рефакторингов, но всё равно в чистом виде модульности добиться не удалось. Однако количество связей между слоями у меня более-менее обозримо и в целом я, как мне кажется, контролирую ситуацию.
Но ты сам видишь - даже список того, что должна уметь среда разработки, весьма внушительный.