дневник Яос

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

Re: дневник ч115

Сообщение БудДен » 20.04.20 02:18

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

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

Re: дневник ч115

Сообщение БудДен » 20.04.20 22:42

Вчера меня почти обозвали идиотом в чате телеграма, посвящённом А2, и попросили не флудить. Я послушался, вышел из группы и вообще закрыл нафиг этот дурацкий телеграм. Поэтому сегодняшний день был весьма плодотворным. Во-первых, спортивная злость, во-вторых, не тратится время на этот самый флуд :)
  • теперь флагманской версией в Win является Win32/oberon.exe, а не WinAos/a2.exe - отличие в том, что у нового лидера есть консольное окно, в которое можно выводить Trace-ом. Это меня спасло при отладке KernelLog. Теперь наличие двух отдельных каналов трассировки документировано. Также поправил документацию по сборке (ссылка пока не в мастере). Если вдруг есть добровольцы, прошу проверить правильность инструкций. Однако хостом для кросс-компиляции по прежнему остаётся WinAos/a2.exe (думаю, что это до следующей оказии что-нибудь поменять в системе сборки)
  • решил ещё одну проблему с некорректным юникодом, в случае, когда глоталась строчка после первой же ошибки. Таким образом, уже исправлено 4 проблемы с юникодом. Но это ещё далеко не всё, что нужно сделать в этом направлении, даже по самым скромным запросам. Речи о приучении парсера А2 к русским ключевым словам пока даже близко не идёт. Речь пока идёт просто об установлении полноценной работоспособности юникода, хотя бы в виде УТФ8, везде, где это нужно.
  • переписал код для раскодировки УТФ8 из буферизованного потока, но никакого теста не написал. Вряд ли оно работает. То, что было там раньше, скорее всего тоже не работало (иначе я бы туда и не полез бы, впрочем, тут надо долго выяснять и разбираться)
  • написал прототип класса потока, который
    возвращает байты, но способен при этом считать позицию по буквам УТФ8. Правда, ещё нужно доделать обработку концов строк.
  • немного поменял структуру исходников, чтобы можно было чтение буквы УТФ8 вставить прямо в базовый класс Streams.Reader. Поскольку в A2 используется наследование плюс сложный порядок инициализации, если мы хотим, чтобы чтение юникода было доступно рано по течению инициализации ОС, то нужно сделать это именно там, а не в более позднем файле UTFStrings.Mod, как это было раньше
Однако я должен заниматься не этим, а своей основной работой (надеюсь, моё начальство не читает этот форум, а если читает, то поймёт и простит :) )
Так что придётся сделать некую паузу.

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

Re: дневник ч115

Сообщение БудДен » 21.04.20 22:45

Сегодня я неплохо поработал, позволю немного покопаться с A2. Сначала вставлю чтение УТФ8 прямо в Стреамс.

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

Re: дневник ч115

Сообщение БудДен » 22.04.20 00:38

Вставил и вроде довёл до красоты читатель-обёртку, считающий буквы в UTF8 потоке и пропускающий CR.
В следующий раз можно будет попробовать интегрировать его в компилятор вместо обычного читателя
и починить определение позиции ошибки. Такое изменение является минимальным, и если всё получится, кириллица
в комментариях и строковых литералах перестанет ломать позицию ошибки.

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

Re: дневник ч115

Сообщение БудДен » 23.04.20 01:56

С помощью читателя-обёртки починил вывод позиции ошибки. Теперь опять можно попробовать вводить кириллицу в исходные тексты (в строковых литералах и комментариях). Правда, пока есть аномалия с раскраской - слово "Тест" сводит раскраску в редакторе с ума. А с помощью нехитрой магии - починил и вывод юникода в текстовую консоль. Теперь под Юиндоюс осталось только починить работу с русскими именами файлов - и можно будет начинать собственно перевод.

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

Re: дневник ч115

Сообщение БудДен » 25.04.20 01:56

Сегодня было особо некогда, но немного покопал подсветку синтаксиса. В одной части внедрил новый тип-букву (руну?) воплощённую в виде записи. Но в целом там в основном остаётся CHAR. Классно то, что было решено поддерживать только кириллицу. Бывает нужно составить таблицу каких-то свойств букв (например, является ли данная буква буквой, цифрой, знаком препинания или чем-то ещё). Для целого юникода любая такая таблица является огромной и должна реализовываться либо как функция , либо как хеш-таблица. А если нужна только кириллица, то просто создаётся таблица размером 0x500 с чем-то там или без чего-то там - и всё. Заменить 256 на 1000 с чем-то почти всегда не страшно, а вот таблица размером 2^32 элементов спокойно может вызвать проблемы. Ведь я запихиваю работу с UTF8 в самое начало загрузки, чтобы она была доступна во всех модулях и чтобы тем самым кириллица стала полноправным членом общества в Яос.

Нарабатываю набор библиотечных функций для преобразования строковых типов, их сравнения и проч.

Похоже на то, что идея о поэтапном внедрении юникода и длительном периоде сосуществования CHAR(байт), UCS32 и UTF8 работает. В конечном итоге нужно вытеснить UTF8 и CHAR и оставить их только для ввода-вывода и FFI, но сразу это сделать невозможно, т.к. система потеряет работоспособность. Похоже, что получается делать это маленькими шажками, при этом после каждого шага система остаётся работающей. И даже пока не понадобилось лезть и менять компилятор/язык.

Вчера славно второй раз поругался в телеграм чате A2 и опять оттуда ушёл. Дня не продержался. Ну ладно, может ещё вернусь туда. А может, так и надо. Нечего в мессенджерах тупить, работать надо.

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

Re: дневник Яос

Сообщение БудДен » 25.04.20 17:46


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

Re: дневник Яос

Сообщение БудДен » 26.04.20 01:07

Есть две вещи: с одной стороны, быстрый прогресс по улучшению положения с кириллицей, с другой - этот прогресс состоит из частных заплаток для отдельных модулей, и для каждого применения заплатку нужно создавать заново. Некоторые получаются не слишком просто. Поэтому пока нет ясности, насколько уверенно происходит работа с кириллицей. Например, я переписал код, способный при чтении из буфера склеивать букву в кодировке UTF-8, попавшую на границу буферов. Но я его не тестировал. Сообщения об ошибках в коде на АО учитывают кириллицу, а в ассемблере - нет. Т.е. есть некое ощущение рыхлости и накопление тех.долга.

С другое стороны, можно уже попытаться перейти к таким приятностям, как кириллизация самого ЯП АО.

Нужно составить план на ближайшее время. Вот примерно такой:

- посмотреть, можно ли починить кириллицу в формате Oberon (богатый текст)
- починить русские имена файлов, чтобы они работали во всех трёх версиях (сейчас точно не работают в WinAos)
- печать StringJQ в трапах, в KernelLog и в модуле отладочной печати. Причём неясно, что делать с ARRAY OF UNSIGNED32?

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

Re: дневник Яос

Сообщение БудДен » 26.04.20 14:30

С форматом оберон решаем так - его нужно заменить на формат bbt, к-рый используется в веб-браузере и вроде в который можно даже вставлять картинки. Он изрядно сломан в плане невозможности назначить стиль текста и даже увеличить шрифт, а браузер не запускается и поэтому текст с картинками нельзя поинспектировать, но кириллица в нём поддерживается и это текстовый формат, основанный на ХМЛ.

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

Re: дневник Яос

Сообщение БудДен » 26.04.20 16:05

Работа со стилями - один сплошной глюк и уже пора в этом разобраться. Я разбирался уже один раз, но толку вышло мало. Завожу отдельную тему:

http://вече.программирование-по-русски. ... ?f=5&t=252

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

Re: дневник Яос

Сообщение БудДен » 28.04.20 01:23

Немного лучше разобрался в стилях, но того, что надо, сделать пока не получилось. Наша цель - чтобы можно было отконвертировать формат Oberon в bbt и потом отключить и уничтожить формат Oberon - он не поддерживает кириллицу. Я так понял, что в формате BlueBottle есть понятие стиля абзаца, но оно кривое и не до конца поддерживается инструментами. Возможно, его следует выкинуть, раз оно не работает.

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

Re: дневник Яос

Сообщение БудДен » 30.04.20 01:23

Сегодня опять не смог лечь спать вовремя, зато:
  • Нежное масштабирование в документах формата bbt (оно работает, но при сохранении забывается), см. http://вече.программирование-по-русски. ... ?f=5&t=252
  • Включил штатную русификацию главного меню, которая уже была!
  • Перевёл туториал в формат bbt - теперь можно в нём печатать в кириллице и оно даже запоминается
  • Отметил некоторые места в исходниках, где зашит размер шрифта.
  • Частично осознал, как устроены стили (но недостаточно, чтобы понять, почему мои изменения "работают" именно так, а не иначе)
  • Починил автораспознавание формата bbt
Появились предпосылки сделать так, чтобы в редакторе для программиста при масштабировании текст не помечался бы изменённым - давно хотел это сделать, но знаний не хватало. Теперь часть знаний в наличии.

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

Re: дневник Яос

Сообщение БудДен » 01.05.20 01:06

На сегодня: выкинул все или почти все шрифты (кроме шрифта из модуля WMDefaultFont.Mod, который не так просто отключить), в которых нет кириллицы. Установленные по умолчанию шрифты содержали глюки - кривая буква й, отсутствие кириллицы, совпадающие по виду одинарные и двойные кавычки. В итоге теперь используются везде шрифты из семейства DejaVu. Они не идеальны, не особо приятно на них смотреть, но в них русский и английски текст нормально масштабируются и выводятся без глюков.

Благодаря проделанной за прошедшие два дня работе, стало возможно вводить документацию в формате bbt на русском языке. Формат oberon кириллицу не поддерживал.

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

Re: дневник Яос

Сообщение БудДен » 01.05.20 01:14

яос-2020-04-30.png
яос-2020-04-30.png (204.18 КБ) 2489 просмотров

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

Re: дневник Яос

Сообщение БудДен » 02.05.20 22:40

Не осилил починку браузера, хотя какая-то польза от этой деятельности всё же была. См.

http://вече.программирование-по-русски. ... e9210f84e9

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

Re: дневник Яос

Сообщение БудДен » 02.05.20 22:54

Следующем номером попробую переделать парсеры A2 (их у нас ведь два - один для компиляции, один для редактора), чтобы они понимали юникод. Начну с того, который для редактора. Это будет шаг по направлению к русскоязычным идентификаторам и ключевым словам.

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

Re: дневник Яос

Сообщение БудДен » 04.05.20 17:56

Вчера вроде переделал лексический анализатор для редактора TFPET, хорошо, что не поленился потестировать. В итоге до сих пор он не работает. Зато вчера впервые применил в бою пошаговый отладчик и он мне помог. Правда, пришлось его ещё починить. Попытался записать видео про это, но отладчик оказался стеснительным и при записи видео работать перестал. Библиотека для работы с внутренним представлением UTF32 всё растёт. Вроде компилятор помогает в большинстве случаев, где лежат грабли, но почему-то не во всех. Одни грабли ещё ищу.

Ребята из команды A2 починили браузер - теперь он зависает не при открытии страницы, а при нажатии на первую гиперссылку на странице. Но это уже большой шаг вперёд. Глядишь - и дальше сделают.

Наконец-то сделал над собой усилия и начал делать что-то вроде каркаса для тестирования. Хотя там вроде уже есть какой-то, надо хоть взглянуть на него.

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

Re: дневник Яос

Сообщение БудДен » 04.05.20 23:26

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

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

Re: дневник Яос

Сообщение БудДен » 05.05.20 17:37

Ещё починил отладчик и нашёл с его помощью ещё одну ошибку (в своём новом коде).

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

Re: дневник Яос

Сообщение БудДен » 05.05.20 23:10

Вроде отладил ввод многострочных строк для команд, уткнулся (очередной раз) в проблему CRLF vs LF

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

Re: дневник Яос

Сообщение БудДен » 08.05.20 00:10

Это какой-то ад. Занимаюсь всего лишь одним модулем Strings. Сначала ошибок было около 200, теперь осталось около 40. Это только ошибки компиляции. Ясно, что при массовых заменах я внесу и другие ошибки (уже внёс в те модули, которые поправлял, отлаживал долго).

Спать.

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

Re: дневник Яос

Сообщение БудДен » 08.05.20 22:48

Вроде перевёл за сегодня TFTypeSys.Mod, до понимающего кириллицу TFPET ещё ого-го. Временное окно скоро закроется, и всё затянется ещё на месяц. Т.е. раньше начала июня не будет среды разработки с поддержкой кириллицы в идентификаторах, и даже картиночку красивую не получится нарисовать. Не говоря уж, конечно же, о компиляторе с поддержкой кириллицы в идентификаторах. Как бы не к осени он созрел. Жаль, что так медленно, вроде простая вещь, а тянется годами. Хорошо хотя бы то, что текущее дело можно делать в более-менее вялотекущем режиме.

Главное, не полениться и побольше потестировать модули.

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

Re: дневник Яос

Сообщение БудДен » 10.05.20 20:30

Дело пошло существенно медленнее в последние два дня из-за других дел, но сегодня TFAOParser.Mod с UCS32 скомпилировался. Теперь нужно тестировать и открывается (видимо) прямая дорога к поддержке русскоязычных идентификаторов хотя бы в IDE. Впилить их в компилятор может оказаться намного сложнее... Но можно будет зато показывать красивые картинки :)

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

Re: дневник Яос

Сообщение БудДен » 12.05.20 14:21

Вчера улучшил вывод новых 32-разрядных строк в отладчике, для этого сделал, чтобы печать ловушек (TRAP-ов) происходила через мой модуль отладочной печати (завёл глобальную переменную, к-рая хранит функцию вывода стека), и сам этот модуль пришлось местами поменять. Это классно и это давно нужно было сделать, но парсер для редактора всё равно далёк от работоспособности и валится почти на всём. Начались рабочие дни, много времени теперь не смогу этому уделять. Буду ковыряться потихоньку...

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

Re: дневник Яос

Сообщение БудДен » 12.05.20 23:59

Пока качались репозитории, пересобрал Linux32 и образ под QEMU. Правда, последний без сетки. Но парсер не сильно продвинулся.

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

Re: дневник Яос

Сообщение БудДен » 13.05.20 23:11

Было особо некогда, но улучшил процесс сборки BIOS32. Теперь можно с довольно высокой степенью автоматизации собрать и запустить образ для qemu с работающей сетью (под Linux). Это, в общем-то, к основной теме нынешней деятельности никак не относится, просто было сподручно это сделать. Идеально было бы забрать из A2 патчи, которые чинят веб-браузер, но неизвестно, когда до этого дойдут руки. Явно не раньше, чем заработает TFPET.

https://gitlab.com/budden/jaos/-/commit ... 880bad2d29

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

Re: дневник Яос

Сообщение БудДен » 14.05.20 23:29

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

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

Re: дневник Яос

Сообщение Павиа » 15.05.20 16:52

А сравнение у вас по правилам Unicode или по символьно? Юникод сурогатные пары требует объединять как следствие длина становится короче. Как по мне правило это тупое. Даже вредное. Так как много алгоритмов выборки и поиска отсекают по длине, а это правило порождает, вторую отличную от первой длину.

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

Re: дневник Яос

Сообщение БудДен » 15.05.20 20:45

Сравнение посимвольно. Я сначала читаю из utf-8, вот что получилось, то и сравниваю. А где этот алгоритм описан и что является примером суррогатной пары?

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

Re: дневник Яос

Сообщение БудДен » 16.05.20 23:21

Благодаря помощи команды A2, научился по переменной типа ANY (указатель на любую запись) определять родословную (т.е. базовые типы по порядку наследования) типа этой записи. Это понадобилось после того, как выяснилось, что модуль отладочной печати не печатает унаследованные от базовых типов поля записей. Однако ни отладочную печать ни доделал, ни парсер не работает. Мало времени, медленно идёт, цели множатся как головы гидры. Настроение средне паршивое. Шансы выпустить юникодный TFAOParser в мае тают.

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

Re: дневник Яос

Сообщение БудДен » 18.05.20 13:56

Готовимся к консервации проекта, см http://вече.программирование-по-русски. ... 5cd52289fc

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

Re: дневник Яос

Сообщение БудДен » 19.05.20 19:18

В "подробной печати" теперь печатаются поля предков записи, а не только поля самого младшего класса. Плюс немного подчистил этот говнокод. Вроде всё работает.

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

Re: дневник Яос

Сообщение БудДен » 20.05.20 14:02

Скопировал из A2 изменения от Сергея Дурманова (спасибо), которые чинят веб-браузер.
Теперь он работает, хотя и надо его иногда пинать. Открывается в т.ч. мой сгенерированный маркдаун, http://xn-----6kcajervcdvqarhfgengcekya ... -docs.html
Вложения
веб-браузер-в-яос.png
веб-браузер-в-яос.png (165.14 КБ) 2533 просмотра

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

Re: дневник Яос

Сообщение БудДен » 20.05.20 14:05

Перепахал ещё один модуль под 32-битные знаки. Объём проделанной работы устрашает, а модульно тестировать можно не всё (да и кому не лень этим заниматься)? Остался, по сути дела, только один файл, чтобы попробовать запустить TFPET, полностью основанный на UCS32. Там, где он обращается к другим модулям, не переведённым на UCS32, происходит конвертация в/из UTF-8, который пока что во многих местах является внутренним представлением строк в А2. Чувствуется, что тема внедрения 32-битных знаков по трудоёмкости может оказаться гораздо эпичнее, чем даже перевод на русский язык...

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

Re: дневник Яос

Сообщение БудДен » 22.05.20 23:43

Консервация пока отменяется, но может ещё состояться.

В модуле TFPET2 было с утра 300 с лишним ошибок компиляции, теперь осталось 194. Ещё пара дней и можно будет посмотреть, как он падает.

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

Re: дневник Яос

Сообщение БудДен » 23.05.20 18:45

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

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

Re: дневник Яос

Сообщение БудДен » 24.05.20 11:34

Умеем читать, сохранять и раскрашивать файл. Теперь пора сделать модельный набор ключевых слов на РЯ и раскрасить их, потом сделать снимок экрана и всем показывать. Наверное, первый случай в истории, когда разработка языка начинается с раскраски синтаксиса в IDE. Хотя в наше время и такое наверняка бывает.

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

Re: дневник Яос

Сообщение БудДен » 24.05.20 23:24

Добавил поддержку юникодных ключевых слов в модуле раскраски,

https://gitlab.com/budden/jaos/-/commit ... 1c79ac1878

Теперь могу делать такие картиночки:
Раскраска-с-кириллицей.png
Раскраска-с-кириллицей.png (43.6 КБ) 2506 просмотров

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

Re: дневник Яос

Сообщение БудДен » 24.05.20 23:28

Почему-то не работает ЛогЯдра.Строка

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

Re: дневник Яос

Сообщение БудДен » 27.05.20 12:55

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

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

Re: дневник Яос

Сообщение БудДен » 27.05.20 20:33

Ещё немного дизайнерских изысков, и нужно уже с этим завязывать. Следующий этап - это поддержка парсером TFPET (показ структуры кода и переход к определению).
Вложения
символ-халмоша-2.png
символ-халмоша-2.png (22.42 КБ) 2712 просмотров

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

Re: дневник Яос

Сообщение БудДен » 30.05.20 21:45

Это начинает становиться интересным.
Медведка-структура.png
Медведка-структура.png (20.2 КБ) 2694 просмотра

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

Re: дневник Яос

Сообщение БудДен » 31.05.20 19:50

Сегодня исправил пару ошибок и приступил к переводу инфраструктуры компилятора Fox на буквы UCS32.
Хоть это и ожидает быть долгим и трудным, возникает ощущение, что проект Яос перевалил за экватор.

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

Re: дневник Яос

Сообщение БудДен » 31.05.20 23:04

Сделал один модуль - StringPool, он совсем простой.

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

Re: дневник Яос

Сообщение БудДен » 04.06.20 13:28

Использовал немного наёмного труда. Если кто-нибудь хочет дать денег на первую русскоязычную операционную систему XXI века, то этот опыт можно расширить. Как только наберётся два раза по столько, сколько я успел израсходовать (21 евро помножить на два), закажу следующую порцию. Из своих, возможно, пожаблюсь. Я и так вкладываю в это кучу своего времени, в пересчёте на деньги это тысяч 50 в месяц в среднем за последний год.

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

Re: дневник Яос

Сообщение БудДен » 06.06.20 17:23

Завершил перенос вики по ЯОС и акт. оберону в репозиторий, теперь дока живёт здесь:

https://gitlab.com/budden/jaos/-/blob/я ... авление.md

Если кто-то заметит косяки типа битых ссылок, пишите.
В вики вставил сообщение об устаревании, но нужно либо снести все страницы, чтоб их не было, либо вообще данную вики уничтожить и поставить перенаправление. Там, правда, есть ещё какие-то статьи, не относящиеся к A2.

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

Re: дневник Яос

Сообщение БудДен » 11.06.20 22:21

Проект слегка парализован. Во-первых, работаю. Во-вторых, изучаю ситуацию в США. В лучшем случае, ситуация там деградирует настолько, что защищать РЯ не понадобится.

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

Re: дневник Яос

Сообщение БудДен » 12.06.20 12:39

В честь дня России и в честь Монка, который проявляет себя как блестящий евангелист русскоязычного программирования (я ему в подмётки не гожусь в этом амплуа), решил немного посидеть, и вот у меня компилируется такой код:

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

MODULE Proba; IMPORT Commands, KernelLog; 

CONST Ойляля* = 8;

PROCEDURE Процедурка*(ц: Commands.Context);
BEGIN
	ц.out.Int(Ойляля,0); ц.out.Ln;
	KernelLog.String("Мечта сбывается..."); KernelLog.Ln; END Процедурка;

PROCEDURE Test*(ц: Commands.Context);
BEGIN
 Процедурка(ц); END Test; END Proba.  

Proba.Процедурка~
В гитлабе этого ещё нет. Говорить о полной поддержке компилятором русскоязычных идентификаторов рано, т.к. это работает не во везде. Например, нельзя вызвать из одного модуля процедуру другого с кириллическим именем.

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

Re: дневник Яос

Сообщение БудДен » 12.06.20 14:51

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

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

Re: дневник Яос

Сообщение БудДен » 12.06.20 21:37

Научил ЯОС компилировать ключевые слова и идентификаторы в кириллице (см. тему про это)

Более-менее работает. Не пробовал пока модули с русскими именами, т.к. под виндой и файлы с русскими именами не работают. Также команды с кириллицей вызываются только из редактора. Ни в консоли, ни в KernelLog они не работают. Понятно, что есть ещё какие-то ошибки, на которые я не успел натолкнуться. Однако даже в FoxScanner.Mod я вставил одно-два экспортируемых кириллических имени - всё собирается и работает.

Это большой успех. В целом всё равно понятно, куда дальше копать, но можно чуть-чуть остановиться и попланировать. Времени в ближайшие несколько недель на A2 у меня почти не будет, так что есть время осмыслить данную информацию.

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

Re: дневник Яос

Сообщение БудДен » 13.06.20 11:21

Выложил машину для VirtualBox, надеюсь, на этот раз в формате ova она будет более пригодна к использованию. Если есть кто-нибудь живой здесь, прошу проверить и отписаться.

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

Re: дневник Яос

Сообщение БудДен » 16.06.20 22:47

Потихоньку учу Яос под Юиндоюз понимать имена файлов в кириллице, пока что не доучил.

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

Re: дневник Яос

Сообщение БудДен » 18.06.20 12:57

Вчера практически под грохот танков доделал.
кириллические-имена-файлов.png
кириллические-имена-файлов.png (93.44 КБ) 2805 просмотров
Доделано не всё, например, нельзя из A2 создать в редакторе новый файл с именем в кириллице,
будут проблемы и с директориями. Но, во всяком случае, файлы с именами в кириллице теперь показываются
и можно их редактировать. Ещё немного этим позанимаюсь и будем двигаться дальше.

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

Re: дневник Яос

Сообщение БудДен » 19.06.20 16:43

Вроде доделал имена файлов в кириллице и сразу после этого сами собой заработали имена модулей в кириллице. Вот такой код работает:

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

модуль ПробаПера;
использует Проба, UCS2;

тип
	Эр = набор
		эс от_компоновщика "Проба.эс": SIZE кн;
		
проц Дуй*;
  перем эр, эр2: Эр;
тело
	эр2.эс := 7100;
	TRACE( эр.эс); кн Дуй;

кн ПробаПера.Дуй ~

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

Re: дневник Яос

Сообщение БудДен » 19.06.20 20:02

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

https://gitlab.com/budden/jaos/-/blob/я ... -записи.md

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

Re: дневник Яос

Сообщение БудДен » 19.06.20 22:56

Захотелось написать новый модуль на кириллице, и тут стало ясно, что пора сделать яроклаву. Заготовку сделал, она работает, правда, только под Windows.
Когда дойдёт дело до нативной A2, надо не забыть, что там в событие Release не приходит код клавиши.

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

Re: дневник Яос

Сообщение БудДен » 22.06.20 00:08

Реализовал яроклаву для Win32, при этом на пробел-( и пробел-) навесил кавычки-лапки, хотя
они пока и никак не используются в языке (надеюсь, когда нибудь удастся это сделать).

Исходную яроклаву на js смотрите тут: http://программирование-по-русски.рф/яроклава-js.яргт/

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

Re: дневник Яос

Сообщение БудДен » 23.06.20 01:35

Сегодня танчики не едут, но я всё же сделал, чтобы Яроклава работала в Яос под Linux.


https://gitlab.com/budden/jaos/-/commit ... baedc83164


Теперь Яроклава не работает только в нативной Яос. Потом...

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

Re: дневник Яос

Сообщение БудДен » 24.06.20 09:01

Опять проехали танки, поэтому я сделал, чтобы Яроклава работала и в нативной Яос. Теперь она работает везде и для полного счастья не хватает только подсветки латиницы.

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

Re: дневник Яос

Сообщение БудДен » 26.06.20 00:55

Сделал шрифт с отличающейся латиницей, но там есть конкретная проблема с курсивом - по сути дела он вряд ли будет работать, потому что за 10 лет никто не стал его спонсором. Зато этот шрифт Mono PT поддерживает все языки народов России (вот так и поддерживает, без курсива).

Теперь всё надо переделать, по всей видимости - либо взять другой шрифт с такой же метрикой (кстати, там была нестандартная ширина в 1000, а должна быть степень двойки) и сделать из него курсив, либо просто заменить его на DejaVu, который вроде уже прижился. Хотя у меня ощущение, что этот шрифт поприятнее. Может это я уже от усталости.

То, что работает, выглядит так (найдите три буквы, которые затесались не туда, куда надо - это будет трудно, что и говорит о неуспехе данного предприятия).

В целом эксперимент нужно признать неудачным и сделать всё же режим подчёркивания.
Вложения
2020-06-26-005420_1354x768_scrot.png
2020-06-26-005420_1354x768_scrot.png (9.71 КБ) 2755 просмотров

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

Re: дневник Яос

Сообщение БудДен » 26.06.20 00:59

Надо, во всяком случае, записать видео про то, как я это делал, чтобы потом вспомнить.

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

Re: дневник Яос

Сообщение Павиа » 26.06.20 06:03

По первой трудно, но когда понятно что они худые 3 в миг находишь.
пробелНажатЛи
ввелиЛиЧтоТоСПробелом

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

Re: дневник Яос

Сообщение БудДен » 27.06.20 20:31

Это был классный эксперимент, но пока что отличать кириллицу от латиницы мы будем следующим образом:
Вложения
Подчёркивание-кириллицы.png
Подчёркивание-кириллицы.png (122.96 КБ) 2827 просмотров

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

Re: дневник Яос

Сообщение БудДен » 27.06.20 20:43

На этом цикл работ по поддержке кириллицы при вводе и отображении считается успешно завершённым, хотя, конечно, какие-то хвосты остались.
Например, я натолкнулся на ограничение длины имени команды в 32 буквы (или 16 русских букв, т.к. UTF-8). Прямо сразу и в лоб исправить не получилось.

Приступаем к следующему большому этапу - созданию инструмента для автоперевода.

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

Re: дневник Яос

Сообщение БудДен » 28.06.20 00:14

Решил записать видео со знаниями про FontForge, по результатам записи и послевечеринки получилась такая вот картинка:
Вложения
cyrillic_old.png
cyrillic_old.png (85.59 КБ) 2814 просмотров

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

Re: дневник Яос

Сообщение БудДен » 30.06.20 23:29

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

* яро-раскладка, т.е. ввод латиницы при удерживаемом пробеле
* отключаемый режим подчёркивания всей латиницы на экране
* шрифт, в котором латиница отличается по виду от кириллицы
* форма курсора показывает, какая раскладка клавиатуры включена

Всё таки есть кардинальное отличие между тем, когда ОС в твоём распоряжении,
и той ситуацией, в которой находятся программисты Windows/Linux. Задачи решаются
проще, причём они решаются. Для существующих ОС некоторые из этих задач
просто никак не решались в общем виде.

Релиза пока нет, но, видимо, его нужно уже сделать.

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

Re: дневник Яос

Сообщение БудДен » 01.07.20 23:22

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

Пора уже с этим завязывать и возвращаться к теме инструментов для перевода.

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

Re: дневник Яос

Сообщение БудДен » 03.07.20 20:30

Сделал в итоге оба варианта - и опускание латиницы, и выделение подчёркиванием отличающихся букв латиницы. Режимы можно переключить,
вызывая команды в меню "Главное меню/текст"

Пересобрал только Win32. Со временем, когда всё устаканится и станет ясно, что всё в порядке, нужно будет пересобрать и остальные сборки.

https://gitlab.com/budden/jaos/-/commit ... 53b22ee0d4

Теперь, собственно, можно с нормальным уровнем комфорта редактировать двухъязычные тексты и при следующей возможности продолжу разработку лексера-парсера линзы для полумашинного перевода кода.

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

Re: дневник Яос

Сообщение БудДен » 04.07.20 09:20

Переделал на подчёркивание всей основной латиницы. Всё же надо ещё как-то выделить и буквы вне кириллицы и латиницы, т.к. они тоже могут совпасть.

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

Re: дневник Яос

Сообщение БудДен » 05.07.20 01:13

Сделал новый образ вирт. машины, который можно скачать (см. прикреплённую тему в этом форуме) и записал видео о нём

Продолжил работу над лексером-парсером-линзой, пока сделано очень мало, но дело сдвинулось с мёртвой точки - удалось наконец-то отцепиться от этой эргономики и подавить проект создания шрифта :)

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

Re: дневник Яос

Сообщение БудДен » 05.07.20 23:36

Имя команд в кириллицы было всего 16 букв, это было неприемлемо. Расширил до 32. Теперь, нужно опять скорее возвращаться к лексеру-парсеру.

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

Re: дневник Яос

Сообщение БудДен » 10.07.20 20:23

Чуть-чуть покопал лексер, успех пока не близок и свободного времени достаточно мало. Сделал несколько задач платными https://gitlab.com/budden/jaos/-/issues и даже пытался обратиться к какому-то фрилансеру. Затея проста - просить не большую сумму на что-то непонятное, а собирать маленькую под конкретные задачи. Плюс к тому, обкатать механизм вхождения сторонних людей в тему, под это придётся подготовить достаточный объем обучающих материалов. Впрочем, наплыва желающих что-то делать не наблюдается. Вероятно, сумму нужно умножить на три, чтобы выстроилась очередь желающих, но жаба это не одобряет.

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

Re: дневник Яос

Сообщение БудДен » 12.07.20 00:25

Продолжил копаться в лексере, исправил часть ошибок, а потом сдуру решил перевести его на UCS32. Теперь, скорее всего, он работает гораздо неправильнее, чем раньше. Но в целом-то он уже готов и можно переходить к изменению парсера.

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

Re: дневник Яос

Сообщение БудДен » 13.07.20 23:16

Удалось написать (а скорее даже стереть) несколько строчек из лексера-парсера. Там была непонятная обработка знака ESC с кодом 1B, и я её выкинул. Думается, что она была нужна для интерпретатора, хотя точной цитаты из Сергея Дурманова я так и не нашёл. Во всяком случае, в исходниках ЯОС такого знака при пересборке не попалось.

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

Re: дневник Яос

Сообщение БудДен » 15.07.20 20:46

Сделал первую версию переводилки ключевых слов.

Было:

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

rposes only *)
		VAR i: SIGNED32;
		BEGIN
			D.Ln;  D.Int( indent,1 );
			FOR i := 1 TO indent DO D.Str( "  " );  END;
			D.Str( "end : " );  D.Str( s );  D.Str( " at pos " );  D.Int( token.position.start,1 );
			DEC(indent);
		END E;
Стало:

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

		проц E(конст s: ряд из CHAR);
		перем 
			i: SIGNED32; 
		тело
			D.Ln(); 
			D.Int(indent, 1); 
			цикл_для i := 1на indentшаг 1 делай 
				D.Str(\"  "\)
			кн; 
			D.Str(\"end : "\); 
			D.Str(s); 
			D.Str(\" at pos "\); 
			D.Int(token^.position.start, 1); 
			DEC(indent, 1)
		кн E; 
Здесь, конечно, ещё пахать и пахать. Самое неприятное - это "на" вместо "до" в цикле, т.к. в английском это одно слово "то", а в русском - два. Остальное - сохраняется лишь небольшая часть всех комментариев, а также пробелы "нормализуются", в результате чего исходное форматирование документа утрачивается. Чтобы это исправить, нужна довольно массированная переработка всего кода разбора. Я её начал, но до конца далеко.

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

Re: дневник Яос

Сообщение БудДен » 19.07.20 23:42

Всё начиналось невинно - возникли проблемы с тем, что "на" и "до" - это одно и то же слово "to". Кончилось тем, надо продублировать порядка 40 файлов, составляющих компилятор и окружающие его вещи, чтобы получить возможность дорабатывать новую версию компилятора. Менять рабочий компилятор "на живую" не совсем правильно, т.к. нет права на ошибку. В течение некоторого времени это прокатывало, но уже наступил момент, когда это больше не работает. Пока продублировал порядка 7 файлов. В целом это не так уж и сложно...

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

Re: дневник Яос

Сообщение БудДен » 20.07.20 22:36

Пришлось дублирование переделывать заново, в итоге по компилятору пока двигаюсь назад, хотя надеюсь, что в правильном направлении.

Начали с товарищем https://gitlab.com/budden/jaos/-/blob/8 ... е-языка.md

Поскольку я плачу за эту работу, это возможность помочь проекту материально. Ставка 350 рублей за страницу, всего страниц порядка 80. Пока переведено 10 и ещё не заплатил ничего.

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

Re: дневник Яос

Сообщение БудДен » 23.07.20 22:09

Доперелисовал компилятор, теперь парсер падает. Это, в принципе, более-менее хорошо, не считая того, что я забыл, что в нём последнее менял. Ну ничего, разберёмся. Последнее время стало как-то некогда.

Аватара пользователя
Лис [Вежливый]
Сообщения: 561
Зарегистрирован: 08.10.18 13:32

Re: дневник Яос

Сообщение Лис [Вежливый] » 23.07.20 23:24

Доперелисовал
Да!

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

Re: дневник Яос

Сообщение БудДен » 25.07.20 17:44

Вот теперь точно доперелисовал. Смысл "лисования" состоит в том, что для (почти) каждого модуля Fox* создан параллельный ему Lis*, чтобы был один компилятор в работе и один - на этапе переделки. Правда, перелисованный компилятор пока почти не работает, но зато заложена методическая основа для дальнейшего движения.

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

Re: дневник Яос

Сообщение БудДен » 25.07.20 19:05

Не знаю, как там ретроградный Меркурий, но поступательное движение, похоже, скоро сможет продолжаться.
Вот как на данный момент выглядит процесс преобразования ключевых слов. Было:

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

MODULE Proba;

CONST x = 1;

TYPE rr = POINTER TO RECORD i : INTEGER END;

OPERATOR ^ "="-(CONST a, b: rr): BOOLEAN;

(* OPERATOR ^ "="-(CONST a, b : rr): BOOLEAN; *)

END Proba.
Стало

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

модуль Proba;
конст 
	x = 1; 
тип 
	rr = укль до набор 
		i: INTEGER; 
	кн; 

	операция "="-(конст a, b: rr): BOOLEAN;
	кн "="; 
кн Proba.
(исправлена одна ошибка в парсере. Весь сыр-бор последних пары недель был из-за того, что TO нужно разделить на "НА" и "ДО", пока что этого не сделано, но подготовлена почва).

Можно обратить внимание, что комментарий потерялся. Такого происходить не должно и это является целью ближайшего эээээ времени.

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

Re: дневник Яос

Сообщение БудДен » 29.07.20 12:35

https://gitlab.com/budden/jaos/-/commit ... a2394063a2 - новая порция описания языка. Ещё 10 страниц в очереди, ждут вычитку.

Кроме того, перелисованный компилятор собрался и даже немного обогатил синтаксическое дерево инфой о конкретной лексеме (отладка ещё впереди). Когда дерево будет достаточно богатым, можно будет непосредственно приступать к инфраструктуре переводчика. Думаю, это всё же вопрос не недель, а месяцев.


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

Re: дневник Яос

Сообщение БудДен » 05.08.20 16:20

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

Начал создавать инфраструктуру для перевода. При ближайшем рассмотрении в задаче обнаружилось несколько довольно больших подзадач. Дерево грамм. разбора довольно сложное.

Изначально планировал расширить язык, чтобы можно было задавать и английское, и русское название для сущности. Однако подумал-подумал и вместо этого добавил специальные метаданные, в которых и будут указываться переводы. Это соотносится с общей идеем, что мы создаём ОС на русском языке, а английского в ней не более, чем для того, чтобы она не перестала работать. Был в один момент дрейф в сторону двухъязычности, но теперь с этим покончено. Избавиться от английских названий сразу не получится, т.к. команды могут вызываться по динамически формируемым именам, которые никаким способом, кроме полного тестирования, найти нельзя. Полное тестирование нам недоступно. Поэтому в течение длительного времени у всех внешних (интерфейсных) имён останутся английские переводы, к-рые будут загружаться из вот такого XML файла на достаточно раннем этапе загрузки.

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

https://gitlab.com/budden/jaos/-/commit ... e66eff35e1

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

Re: дневник Яос

Сообщение БудДен » 05.08.20 16:26

Параллельно идёт работа над переводом описания языка, пока что оно выглядит вот так:

https://gitlab.com/budden/jaos/-/blob/c ... е-языка.md

Это 3/8 общего объёма документа.

Ещё один кусочек находится в конвейере, рассчитываю на этой неделе его допилить.

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

Re: дневник Яос

Сообщение БудДен » 09.08.20 20:53

Последние новости:
  • переведена половина описания языка (пока что с англоязычными ключевыми словами)
  • реализована инфраструктура для динамического перевода имён модулей и команд. Для каждого модуля и для каждой команды можно задать русскую и английскую версию названия. При этом команду можно вызвать как по русскому, так и по английскому названию. Например, можно написать ТестПереводыЭлементовКода.ПокажиБазуДанныхПереводов, а можно написать TestTransCodeElem.ShowTransDb - и будет выполнено одно и то же. Компилятор пока этих переводов не видит (да и не увидит). В файле локализации также указано, какая из версий существует в реальности, а какая является псевдонимом. Такая же структура будет использована для перевода исходных текстов (но эта задача оказалась слишком зубастой - потому и начал с более простой задачи динамиского перевода).
  • в сборку ЯОС включён первый модуль с русскоязычными ключевыми словами (базовые типы пока остались англоязычными).
  • немного попереводил интерфейс, и теперь заглавная страница ИСР почти полностью русскоязычная.
На картинке показан модуль с русскоязычными ключевыми словами и файл настроек локализации модулей и команд.
Вложения
русский-модуль-и-переводы.png
русский-модуль-и-переводы.png (137.44 КБ) 2705 просмотров

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

Re: дневник Яос

Сообщение БудДен » 10.08.20 17:09

Сложный получается клубок с этим переводом... Реализовал возможность импортировать модули по переведённым именам. Но это всё пока что не про то. Попробую теперь научиться переводить имена модулей при импорте.

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

Re: дневник Яос

Сообщение БудДен » 11.08.20 10:05

Научился автоматически переводить имена импортированных модулей по таблице переводов, заданной в XML. Было:

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

MODULE ТестИмпортаСПереводом; 
 
IMPORT KernelLog;

PROCEDURE Do*;
BEGIN KernelLog.String("TestSOT.Do"); KernelLog.Ln END Do;

END ТестИмпортаСПереводом.
Стало:

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

модуль ТестИмпортаСПереводом;
	использует ЛогЯдра;

	проц Do*;
	тело
		ЛогЯдра.String(\"TestSOT.Do"\); 
		ЛогЯдра.Ln()
	кн Do; 
кн ТестИмпортаСПереводом.
Можно сказать, лёд тронулся, в проекте ЯОС закончилась подготовительная работа и началась основная. Правда, способ перевода очень стрёмный - меняется имя идентификатора в уже существующем дереве разбора. Что-то может сломаться. Посмотрим, как дальше пойдёт. Ну и очевиден ещё ряд проблем - уродуются строковые литералы, криво работают автоотступы, комментарии теряются или переезжают. Кроме того, модуль может импортироваться с псевдонимом и этот случай пока что не обрабатывается.

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

Re: дневник Яос

Сообщение БудДен » 11.08.20 14:11

Теперь и пседонимы модулей переводятся. Например,
KL := KernelLog может превратиться в ЛЯ := ЛогЯдра.

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

Re: дневник Яос

Сообщение БудДен » 12.08.20 20:04

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

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

Re: дневник Яос

Сообщение БудДен » 13.08.20 18:32

Ещё немного продвинулся. Теперь из такого исходника

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

MODULE TestImportaSPerevodom; 
 
IMPORT KL := KernelLog;

CONST constant* = 5;
PROCEDURE Do*;
  PROCEDURE subProc(); VAR myVar: ARRAY 5 OF CHAR; 
  BEGIN KL.String(myVar); END subProc;
BEGIN subProc(); END Do;
END TestImportaSPerevodom.
И такого XML файла

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

<PerevodyEhlementovKoda>
  <Module ru="ТестИмпортаСПереводом" en="TestImportaSPerevodom" russianExists="0" dyn="1">
    <Scope ru="Дуй" en="Do" russianExists="0" dyn="0">
      <Scope ru="подПроц" en="subProc" russianExists="0" dyn="0">
        <Scope ru="мояПерем" en="myVar" russianExists="0" dyn="0"/></Scope></Scope>
    <Scope ru="константа" en="constant" russianExists="0" dyn="0"/>
  </Module>
  <Module ru="ЛогЯдра" en="KernelLog" russianExists="0" dyn="1">
    <PopularAlias en="KL" ru="ЛЯ"/></Module></PerevodyEhlementovKoda>
Получается такой исходник:

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

модуль ТестИмпортаСПереводом;
  использует ЛЯ := ЛогЯдра;
конст 
  константа* = 5; 
  проц Дуй*;
    проц подПроц;
    перем мояПерем: ряд 5 из CHAR; 
    тело  ЛЯ.String(мояПерем)  кн подПроц; 
  тело
    подПроц()  кн Дуй; 
кн ТестИмпортаСПереводом.

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

Re: дневник Яос

Сообщение БудДен » 16.08.20 19:37

Переводятся поля записи.

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

Re: дневник Яос

Сообщение БудДен » 16.08.20 22:36

Переводится тип записи в выражении типа "укль на NAME"

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

Re: дневник Яос

Сообщение БудДен » 19.08.20 10:21

Отпуск закончился, делать что-либо некогда. Получил от коллеги очередные 20 страниц перевода языка, читаем: https://gitlab.com/budden/jaos/-/blob/b ... е-языка.md

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

Re: дневник Яос

Сообщение БудДен » 22.08.20 17:22

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

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

Re: дневник Яос

Сообщение БудДен » 23.08.20 23:30

Научился переводить встроенные типы. Вот таблица перевода.

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

CHAR литера8
RANGE отрезок_целых
INTEGER системно_зависимое_целое
LONGINTEGER длинное_системно_зависимое_целое
INTEGERSET INTEGERSET

SIGNED8 цел8 
SIGNED16 цел16 
SIGNED32 цел32 
SIGNED64 цел64 

UNSIGNED8 бцел8 
UNSIGNED16 бцел16 
UNSIGNED32 бцел32 
UNSIGNED64 бцел64 

FLOAT32 вещ32
FLOAT64 вещ64

COMPLEX32 комплексное32 
COMPLEX64 комплексное64 

REAL машинно_зависимое_вещ 
COMPLEX машинно_зависимое_комплексное 
BOOLEAN булево
SET байт_размером_с_адрес
ANY динамически_типизированный_укль
OBJECT существо

SET8 байт 
SET16 байт16 
SET32 байт32 
SET64 байт64 
https://gitlab.com/budden/jaos/-/commit ... 7df32d9a60

А также переименовал "ряд" в "массив" и "объект" в "существо".

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

Re: дневник Яос

Сообщение БудДен » 23.08.20 23:34

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

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

Re: дневник Яос

Сообщение БудДен » 28.08.20 15:14

Последние дни вяло копаюсь с движком перевода - после работы сил почти не остаётся.

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

Re: дневник Яос

Сообщение БудДен » 29.08.20 00:36

Очередные 20 страниц https://gitlab.com/budden/jaos/-/commit ... fb61629763

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

Re: дневник Яос

Сообщение БудДен » 29.08.20 00:37

Удалось немного продвинуться - теперь некоторые типы переводятся. Хотя всё это какое-то блуждание в потёмках... Структура дерева разбора несколько непонятна и вся целиком в голове никак не помещается.

Ответить