Оберон-клуб «ВЄДАsoft» https://zx.oberon.org/forum/ |
|
Процедура для определения текущего контекста в исходном тексте https://zx.oberon.org/forum/viewtopic.php?f=37&t=421 |
Страница 1 из 1 |
Автор: | budden [ 12 окт 2018, 11:01 ] |
Заголовок сообщения: | Процедура для определения текущего контекста в исходном тексте |
Курсор клавиатуры находится в некотором документе (окне, не знаю, как оно точно называется). Нужно считать текущую строку, затем предыдущую строку, затем строку перед предыдущей и т.п. Ищем среди них строку, которая имеет вид MODULE<эн пробелов>Идентификатор<что угодно>. От этой строки запускаем парсер модуля, строим AST (заимствуем функционал из компилятора). Если нам удалось построить AST, то находим в нём место, в котором стоит курсор и возвращаем стек вложенных узлов AST. Если не удалось, то извлекаем слово под курсором (по правилам формирования идентификатора, с учётом возможности появления в нём кириллицы) и возвращаем что-нибудь по смыслу равное "слово такое-то в модуле таком-то" . Постановка задачи кривая, поскольку на самом деле для этой задачи нужен парсер, способный построить AST для некорректного текста. Решение этой задачи в принципе существует, но это сложно. Поэтому пока будем так. Видимо, в ББ есть какое-то восстановление после ошибок. Применить это можно будет для:
|
Страница 1 из 1 | Часовой пояс: UTC + 2 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |