Как устроено дерево разбора в PET

Только технические вопросы по ЯОС и MINOS. Терминология и прочее - в других форумах.
Ответить
БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Как устроено дерево разбора в PET

Сообщение БудДен » 28.09.19 11:31

Обычный PET (не TFPet) довольно неплохо ориентируется в исходном коде. Соответственно, возникает вопрос: а нет ли вне TF* альтернативного парсера АО, который мог бы пригодиться для целей рефакторинга?

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: Как устроено дерево разбора в PET

Сообщение БудДен » 28.09.19 11:43

Чтение исходников PET.Mod

Код: Выделить всё

sidePanel -> genTree -> Configuration.XML -> PETModuleTree.GenModuleTree

но данная процедура тривиальна - она возвращает пустое дерево. 

Зато там есть PetModuleTree.ModuleTree в к-рой вызывается AddImportList, он вызывается только в 2 местах.
Посмотреть вокруг этих вызовов - там рядом интересное

Чтобы было ясно - в целом задача создать инструменты рефакторинга, прежде всего, "переименовать идентификатор".
Когда это будет сделано, можно будет начать переводить код на РЯ.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: Как устроено дерево разбора в PET

Сообщение БудДен » 28.09.19 16:47

Модуль ModuleParser.Mod отвечает в PET за разбор модуля. Он заметно отличается от TFAOParser.Mod. Ну, наплодили!

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: Как устроено дерево разбора в PET

Сообщение БудДен » 28.09.19 18:09

ModuleParser изменялся около 70 раз :(
Итак, есть аж целых три парсера одного и того же Оберона, два из которых изменялись по 60 раз, а один безнадёжно отстал. Что-то мне это всё не нравится :(

Павиа
Сообщения: 136
Зарегистрирован: 23.05.19 21:28

Re: Как устроено дерево разбора в PET

Сообщение Павиа » 28.09.19 19:11

Это нормально. У вон тоже свой компилятор пробовал начинать 13 раз. На 13 получилось.
А вот уж сколько изменений в парсере было и не упомнишь. Хотя там большинство изменений было добавления новых правил.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: Как устроено дерево разбора в PET

Сообщение БудДен » 28.09.19 21:17

Вопрос не в том, что он менялся 60 раз - это нормально. Вопрос в том, что их таких три штуки разных в рамках одной системы. Для компиляции, для отображения структуры кода в редакторе и для построения таблицы определений.

Павиа
Сообщения: 136
Зарегистрирован: 23.05.19 21:28

Re: Как устроено дерево разбора в PET

Сообщение Павиа » 28.09.19 22:49

Им нужны разные структуры и можно делать разные оптимизации.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: Как устроено дерево разбора в PET

Сообщение БудДен » 29.09.19 10:51

Из соображений минимализма хватило бы и одного. Плохо то, что язык с годами меняется, описания нет, два парсера поддерживаются, третий не поддерживается. При этом в А2 появляются новые возможности, но старые при этом отваливаются. Т.е. даже непонятно пока, от какой точки надо ответвляться. Если бы не это, то неважно было бы, сколько парсеров. А так пока непонятно, за какую ниточку тянуть.

Павиа
Сообщения: 136
Зарегистрирован: 23.05.19 21:28

Re: Как устроено дерево разбора в PET

Сообщение Павиа » 29.09.19 11:09

Берите тот что для компиляции он должен быть полным.
А тот что для отображения он не обязан быть полным, но там могут быть свои примочки, расширения и дополнения.

Ответить