Оберон-клуб «ВЄДАsoft»

Твердыня модульных языков
Текущее время: 19 мар 2024, 08:26

Часовой пояс: UTC + 2 часа




Начать новую тему Ответить на тему  [ 1 сообщение ] 
Автор Сообщение
СообщениеДобавлено: 12 окт 2018, 11:01 
Не в сети

Сообщения: 350
Курсор клавиатуры находится в некотором документе (окне, не знаю, как оно точно называется).
Нужно считать текущую строку, затем предыдущую строку, затем строку перед предыдущей и т.п.
Ищем среди них строку, которая имеет вид MODULE<эн пробелов>Идентификатор<что угодно>.
От этой строки запускаем парсер модуля, строим AST (заимствуем функционал из компилятора). Если нам удалось построить AST, то находим в нём место, в котором стоит курсор и возвращаем стек вложенных узлов AST. Если не удалось, то извлекаем слово под курсором (по правилам формирования идентификатора, с учётом возможности появления в нём кириллицы) и возвращаем что-нибудь по смыслу равное "слово такое-то в модуле таком-то" .

Постановка задачи кривая, поскольку на самом деле для этой задачи нужен парсер, способный построить AST для некорректного текста. Решение этой задачи в принципе существует, но это сложно. Поэтому пока будем так. Видимо, в ББ есть какое-то восстановление после ошибок.

Применить это можно будет для:
  • точного перехода к определению (функция из другого модуля с учётом переименования при импорте, переменная в этом модуле и т.п.)
  • показать документацию к идентификатору в виде hint-а или чего-то подобного.
  • показать документацию или интерфейс текущего модуля за одно нажатие
  • показать, в какой функции мы находимся
Ваши ставки.


Вернуться к началу
 Профиль  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ 1 сообщение ] 

Часовой пояс: UTC + 2 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
© VEDAsoft Oberon Club