LINUX.ORG.RU

История изменений

Исправление den73, (текущая версия) :

У меня такие задачи актуальны:

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

Моё имхо после нескольких подходов к этой задаче - главное - это попытаться разбить на как можно более мелкие части. Я с этой задачей не справился, но «почти» справился. Связи между слоями возникают в самый последний момент, когда вдруг оказывается, что что-то недоучёл. Я сделал сколько-то рефакторингов, но всё равно в чистом виде модульности добиться не удалось. Однако количество связей между слоями у меня более-менее обозримо и в целом я, как мне кажется, контролирую ситуацию.

Но ты сам видишь - даже список того, что должна уметь среда разработки, весьма внушительный.

Исправление den73, :

У меня такие задачи актуальны:

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

Моё имхо после нескольких подходов к этой задаче - главное - это попытаться разбить на как можно более мелкие части. Я с этой задачей не справился, но «почти» справился. Связи между слоями возникают в самый последний момент, когда вдруг оказывается, что что-то недоучёл. Я сделал сколько-то рефакторингов, но всё равно в чистом виде модульности добиться не удалось. Однако количество связей между слоями у меня более-менее обозримо и в целом я, как мне кажется, контролирую ситуацию.

Но ты сам видишь - даже список того, что должна уметь среда разработки, весьма внушительный.

Исходная версия den73, :

У меня такие задачи актуальны:

  • раскраска - для неё не нужно ходить по дереву, она появляется побочным эффектом лексера/парсера
  • автодополнение слов - ещё не делал, сказать не могу. Но если это идентификатор, то от него нужен в моём случае не просто текст
  • печать лексем для отладки. Здесь текст в полный рост
  • анпарсер - текст в полный рост
  • поиск - пока не делал, но тут либо текст, либо ходить по структуруам
  • трансляция в другой язык - здесь от текста есть кое-какая польза, но в целом рекурсивное хождение по структурам неизбежно
  • действия по щелчку на имени, например, переход к определению - для этого полюбасу нужен отдельный парсер окрестностей текущего положения курсора, т.к. в ЯП имя может встречаться и в комментарии, и внутри строкового литерала. Впрочем, это зависит от языка
  • отображение «дерева структуры» - это, по-моему, самое страшное, потому что это дерево не должно моргать, когда текст временно становится невалидным. По-моему, эта задача толком не решена
  • фолдинг-анфолдинг - мне он не нравится и делать его я не собираюсь
  • переход/подсветка парных скобок, переход на лексему вперёд/назад
  • показ места ошибки разбора

Моё имхо после нескольких подходов к этой задаче - главное - это попытаться разбить на как можно более мелкие части. Я с этой задачей не справился, но «почти» справился. Связи между слоями возникают в самый последний момент, когда вдруг оказывается, что что-то недоучёл. Я сделал сколько-то рефакторингов, но всё равно в чистом виде модульности добиться не удалось. Однако количество связей между слоями у меня более-менее обозримо и в целом я, как мне кажется, контролирую ситуацию.

Но ты сам видишь - даже список того, что должна уметь среда разработки, весьма внушительный.