OberonCore
https://forum.oberoncore.ru/

Переход к определению
https://forum.oberoncore.ru/viewtopic.php?f=22&t=6343
Страница 3 из 3

Автор:  Sergej Durmanov [ Вторник, 05 Февраль, 2019 18:53 ]
Заголовок сообщения:  Re: Переход к определению

Кстати, в Активном Обероне один физический файл может содержать несколько программных модулей, а есть еще пространства имен. И как с этим всем быть

Автор:  budden [ Вторник, 05 Февраль, 2019 18:54 ]
Заголовок сообщения:  Re: Переход к определению

Я два раза описал проблему с зумом, не знаю, чем ещё можно тут помочь. Возможно, дело было несколько сложнее. Я менял в нескольких местах. Сначала пробовал изменить в конфиг файле, этого оказалось мало, тогда полез в исходники. Хорошего результата (курьер 18 в PET сразу, отсутствие обрезания в меню, курьер 18 по умолчанию для новых составных документов) добиться так и не удалось. Не скажу, что лёг костьми, но определённые усилия приложил.

Но я советую, если хотите понять, в чём была моя проблема, то прочитайте то, что я написал. Похоже, из вас с Кеметом ни один не смог прочитать.

Автор:  budden [ Вторник, 05 Февраль, 2019 18:59 ]
Заголовок сообщения:  Re: Переход к определению

Несколько символьных файлов будут показывать на один исходный. Дальше вопрос - разрулит ли построитель дерева в PET эту ситуацию. Примерно то же можно сказать и про пр-ва имён (кстати, они смотрятся как костыль).

Кстати, нужен (обязательно) поиск в дереве кода, которое строит PET. Вы же не хотите уподобляться микрософту?

Автор:  Sergej Durmanov [ Вторник, 05 Февраль, 2019 19:05 ]
Заголовок сообщения:  Re: Переход к определению

Так все прочитали. Там же был ответ, что проблема в том, что в бинарном Обероновском формате документов шрифт Оберон и кодировка Оберон прибиты гвоздями. И бинарный формат используется только для сгенерированного файла сборки, потому что он содержит форматирование, выделение цветом и тд. Но это не мешает изменять размер шрифта открытого документа, используя функцию зума документа

Автор:  budden [ Вторник, 05 Февраль, 2019 19:07 ]
Заголовок сообщения:  Re: Переход к определению

Плохо прочитали, ну да ладно. У вас всё работает, а я этим заниматься в ближайшее время не буду. Можно оставить в покое эту тему.
Попробую последний раз написать. Я открываю в PET ТЕКСТОВЫЙ файл (.Mod, а не .Text), и у меня в конфиг-файле поставлен шрифт КУРЬЕР. Так вот документ открывается с курьером, но при масштабировании колёсиком курьер заменяется шрифтом ОБЕРОН. Вот. Хотя я вроде именно это уже два раза и написал. Может быть, там было что-то более сложное, включая замену шрифта где-то в исходниках. Не помню и не суть. Проверять не буду больше принципиально и вообще снесу все директории оберона на внешний диск, а диск от соблазна спрячу подальше.

Автор:  Kemet [ Среда, 06 Февраль, 2019 06:24 ]
Заголовок сообщения:  Re: Переход к определению

2budden - на "ванильной" a2 не воспроизводится - текст маштабируется без смены шрифта.

Автор:  Trurl [ Среда, 06 Февраль, 2019 08:08 ]
Заголовок сообщения:  Re: Переход к определению

budden писал(а):
Я открываю в PET ТЕКСТОВЫЙ файл (.Mod, а не .Text)

На всякий случай: .Mod или .Text ничего не значит в смысле формата файла.

Автор:  budden [ Среда, 06 Февраль, 2019 23:04 ]
Заголовок сообщения:  Re: Переход к определению

Kemet писал(а):
2budden - на "ванильной" a2 не воспроизводится - текст маштабируется без смены шрифта.

Значит, считаем, что проблема не подтвердилась.

Автор:  Kemet [ Четверг, 07 Февраль, 2019 05:54 ]
Заголовок сообщения:  Re: Переход к определению

Возможно, что ты так и пользуешься непонятной сборкой от 2015 года, хотя я несколько раз сказал об обновлении до текущей. И возможно, что в той древней сборке функции маштабирования шрифтов вообще нет.

Автор:  budden [ Четверг, 07 Февраль, 2019 11:36 ]
Заголовок сообщения:  Re: Переход к определению

Нет, последнее время я пользовался той сборкой, которую Вы рекомендовали. Я, к сожалению, не могу себе больше позволить запустить A2 ни разу, потому что мне нужно искать работу, если я запущу один раз, это кончится тем, что я буду неделями просиживать. Просто напишите руководство о том, как пользователь (или хотя бы пользователь с навыками программирования) может сделать все шрифты, кроме меню, из своего набора ttf шрифтов, причём размер по умолчанию должен быть 18. Если документ старый и в нём шрифт зашит, то тут уж придётся воспользоваться инструментом масштабирования, но для новых документов умолчание должно быть задано пользователем. Мои проблемы возникли от того, что от слишком мелкого шрифта по умолчанию у меня сразу начинали болеть глаза и первое, что мне пришлось сделать - это попробовать изменить шрифты. Также при печати русский язык показывался в другом размере, и это тоже надо было исправить. Я почитал документацию и стал это делать. Почти сразу пришлось лезть в исходники. В итоге мне так и не удалось ничего добиться.

Если вам надо, чтобы кто-то пользовался A2 (хотя я не понял, надо ли это кому-то или все напротив, хотят сохранить своё конкурентное преимущество), то имеет смысл попробовать сделать так, чтобы вновь пришедший пользователь не уходил, сломав свои зубы об этот вопрос. Для этого нужно не лаконичное "у вас есть исходники", а чёткая и быстро выполнимая инструкция.

Для сравнения, в блекбоксе мне тоже пришлось столкнуться с этой проблемой и её худо-бедно удалось решить. Вот начало обсуждения: viewtopic.php?f=1&t=6280&p=104925&hilit=шрифт#p104925
А конец, я, кстати, не нашёл. Но решение в принципе вот здесь описано: https://gitlab.com/budden/nkp

В случае A2 у меня было на это меньше времени, а система сложнее. Я не осилил вопрос даже со всеми вашими рекомендациями, и я точно уверен, что дело тут не во мне: я регулярно успешно решаю подобные вопросы в разных технологиях. Обычно для этого надо погуглить и на стековерфлоу ответ находится. Второй-третий ответ всегда подходит и решает задачу. Здесь стековерфлоу объявили ненужным, своего аналога не создали, т.е. для решения вопросов нужно каждый раз идти на поклон к немногочисленным знатокам. Это в корне неправильно, и это можно исправить.

С точки зрения программиста шрифты - это "нечто простое, что можно исправить", т.е. они не влияют на жизнеспособность системы. С точки зрения вновь пришедшего шрифты - это то, что он захочет заменить. И если их заменить нельзя, то выводы о жизнеспособности системы (и за ними оргвыводы) будут сделаны очень быстро. Я здесь говорю не про себя, а про среднестатистического "пользователя".

Автор:  budden [ Суббота, 27 Июль, 2019 13:08 ]
Заголовок сообщения:  Re: Переход к определению

Вот этот проект продолжать буду. Для начала нужно всё же разобраться со шрифтами, а потом уже займусь переходом к определению. План действий по переходу к определению вроде прорисовывается, исходя из вышесказанного в этой теме. Для начала посмотрю, как поживают шрифты в новых версиях. Если глаза от них не вытекут, то попробую делать на основе текущей версии. Видимо, русскоязычность пока придётся отложить, поскольку сделать англоязычные шрифты проще, чем русскоязычные.

Автор:  budden [ Среда, 28 Август, 2019 16:03 ]
Заголовок сообщения:  Re: Переход к определению

Не помню, писал ли я уже, что коллеги сообщили о существовании TFPET - версия PET с переходом к определению, а также есть сайт bbos.org с исходниками, содержащими перекрёстные ссылки. Файлы TF*, которые всё это реализуют, всё ещё находятся в репозитории, но устарели.

Немного поизучал зависимости в файлах TF*, чтобы понять, как проще модернизировать. Вот что обнаружилось:

FoxScanner менялся около 60 раз. Мы можем попробовать синхронизировать BimboScanner/TFAOParser с современным состоянием языка и у нас получится два парсера для одного и того же языка. Смысла в этом мало, поэтому хочется заменить BimboScanner/TFAOParser на лексер из FoxScanner/FoxParser

* TFXRef - 976 строк. Мало зависит от S=BimboScanner (4+50), сильно зависит от
TS=TFTypeSys (больше 100), от TFScopeTools - (15)
* TFTypeSys - абстрактное от языка синт. дерево - 1063 строки - ни от чего не зависит в данной компании! Пишет символьные файлы.
Используется в TFDocGenerator, TFCheck, TFAOParser, TFDumpTS, TFTypeSys
* TFScopeTools - 167 строк - используется в TFPET, TFCheck, TFModuleTrees, TFXRef
* BimboScanner - 545 строк
* TFAOParser - 1316 строк - зависит от TS=TFTypeSys (202), S=BimboScanner(276)

Модуль TFTypeSys хочется оставить, т.к. он центральный в этой инфраструктуре и от него всё зависит. Но TFAOParser тоже от него зависит. Если мы хотим выкинуть TFAOParser и оставить FoxParser, то возникает проблема: мы не можем менять FoxParser.

Т.е. похоже, что заменив TFAOParser на FoxParser, придётся и TFTypeSys заменить на FoxParserTree, причём объём работы получается немалым.

Знатоки, что скажете на тему целесообразности такого плана?

Автор:  Comdiv [ Среда, 28 Август, 2019 19:26 ]
Заголовок сообщения:  Re: Переход к определению

Могу высказать общие соображения по поводу 2-х парсеров. Задача разбора исходников для работы с редактором и задача разбора исходников для трансляции в машинный код - это две разные задачи, которые кроме очевидного места пересечения, имеют достаточно различий. Если не пытаться в каждой из задач выполнить соседнюю, то это позволяет иметь более простые отдельные решения. Но будет ли общая сложность меньше или выше? Вряд ли есть простой универсальный ответ на этот вопрос. Если в транслятор изначально не закладывалась вспомогательная задача для работы с текстом, то доделать его до нужного уровня может быть проблематичным, и действительно, может быть проще иметь отдельный разборщик. Если же закладывалась, то наоборот. Поэтому ответ может быть получен из анализа того, для чего создавались FoxScanner/FoxParser и что из этого вышло.
В целом, иметь несколько разборщиков - это нормально.

Автор:  budden [ Четверг, 29 Август, 2019 14:41 ]
Заголовок сообщения:  Re: Переход к определению

Да, всё верно, спасибо, учту это.

Автор:  budden [ Суббота, 21 Сентябрь, 2019 17:01 ]
Заголовок сообщения:  Re: Переход к определению

Пока всё же планирую всё переделать на Fox. Мотивация: в обычном PET структура файла тоже показывается, а переход к определению основан на файлах символов, которые генерируются отдельной процедурой. Т.е. кардинального отличия TF от обычного стека технологий в плане качества поддержки для IDE нет. А значит, выглядит обоснованной идея сократить количество парсеров.

Автор:  budden [ Воскресенье, 26 Апрель, 2020 00:16 ]
Заголовок сообщения:  Re: Переход к определению

Переход к определению реализован в ЯОС. Возможно, и в A2 возьмут, но это спрашивайте у команды A2. Благодарность Comdiv за подсказку правильного проектного решения.

Страница 3 из 3 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/