дневник Яос
Re: дневник Яос
Ещё немного дизайнерских изысков, и нужно уже с этим завязывать. Следующий этап - это поддержка парсером TFPET (показ структуры кода и переход к определению).
- Вложения
-
- символ-халмоша-2.png (22.42 КБ) 5983 просмотра
Re: дневник Яос
Это начинает становиться интересным.
Re: дневник Яос
Сегодня исправил пару ошибок и приступил к переводу инфраструктуры компилятора Fox на буквы UCS32.
Хоть это и ожидает быть долгим и трудным, возникает ощущение, что проект Яос перевалил за экватор.
Хоть это и ожидает быть долгим и трудным, возникает ощущение, что проект Яос перевалил за экватор.
Re: дневник Яос
Сделал один модуль - StringPool, он совсем простой.
Re: дневник Яос
Использовал немного наёмного труда. Если кто-нибудь хочет дать денег на первую русскоязычную операционную систему XXI века, то этот опыт можно расширить. Как только наберётся два раза по столько, сколько я успел израсходовать (21 евро помножить на два), закажу следующую порцию. Из своих, возможно, пожаблюсь. Я и так вкладываю в это кучу своего времени, в пересчёте на деньги это тысяч 50 в месяц в среднем за последний год.
Re: дневник Яос
Завершил перенос вики по ЯОС и акт. оберону в репозиторий, теперь дока живёт здесь:
https://gitlab.com/budden/jaos/-/blob/я ... авление.md
Если кто-то заметит косяки типа битых ссылок, пишите.
В вики вставил сообщение об устаревании, но нужно либо снести все страницы, чтоб их не было, либо вообще данную вики уничтожить и поставить перенаправление. Там, правда, есть ещё какие-то статьи, не относящиеся к A2.
https://gitlab.com/budden/jaos/-/blob/я ... авление.md
Если кто-то заметит косяки типа битых ссылок, пишите.
В вики вставил сообщение об устаревании, но нужно либо снести все страницы, чтоб их не было, либо вообще данную вики уничтожить и поставить перенаправление. Там, правда, есть ещё какие-то статьи, не относящиеся к A2.
Re: дневник Яос
Проект слегка парализован. Во-первых, работаю. Во-вторых, изучаю ситуацию в США. В лучшем случае, ситуация там деградирует настолько, что защищать РЯ не понадобится.
Re: дневник Яос
В честь дня России и в честь Монка, который проявляет себя как блестящий евангелист русскоязычного программирования (я ему в подмётки не гожусь в этом амплуа), решил немного посидеть, и вот у меня компилируется такой код:
В гитлабе этого ещё нет. Говорить о полной поддержке компилятором русскоязычных идентификаторов рано, т.к. это работает не во везде. Например, нельзя вызвать из одного модуля процедуру другого с кириллическим именем.
Код: Выделить всё
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.Процедурка~
Re: дневник Яос
Дело, оказывается, было не в том, что другой модуль, а в том, что кириллический идентификатор шёл после точки. Наверное, впереди такие сюрпризы ещё есть, но в целом похоже на то, что теперь в Яос можно писать идентификаторы в кириллице. Ключевые слова в кириллице компилятор пока не понимает, займусь теперь этим.
Re: дневник Яос
Научил ЯОС компилировать ключевые слова и идентификаторы в кириллице (см. тему про это)
Более-менее работает. Не пробовал пока модули с русскими именами, т.к. под виндой и файлы с русскими именами не работают. Также команды с кириллицей вызываются только из редактора. Ни в консоли, ни в KernelLog они не работают. Понятно, что есть ещё какие-то ошибки, на которые я не успел натолкнуться. Однако даже в FoxScanner.Mod я вставил одно-два экспортируемых кириллических имени - всё собирается и работает.
Это большой успех. В целом всё равно понятно, куда дальше копать, но можно чуть-чуть остановиться и попланировать. Времени в ближайшие несколько недель на A2 у меня почти не будет, так что есть время осмыслить данную информацию.
Более-менее работает. Не пробовал пока модули с русскими именами, т.к. под виндой и файлы с русскими именами не работают. Также команды с кириллицей вызываются только из редактора. Ни в консоли, ни в KernelLog они не работают. Понятно, что есть ещё какие-то ошибки, на которые я не успел натолкнуться. Однако даже в FoxScanner.Mod я вставил одно-два экспортируемых кириллических имени - всё собирается и работает.
Это большой успех. В целом всё равно понятно, куда дальше копать, но можно чуть-чуть остановиться и попланировать. Времени в ближайшие несколько недель на A2 у меня почти не будет, так что есть время осмыслить данную информацию.
Re: дневник Яос
Выложил машину для VirtualBox, надеюсь, на этот раз в формате ova она будет более пригодна к использованию. Если есть кто-нибудь живой здесь, прошу проверить и отписаться.
Re: дневник Яос
Потихоньку учу Яос под Юиндоюз понимать имена файлов в кириллице, пока что не доучил.
Re: дневник Яос
Вчера практически под грохот танков доделал.
Доделано не всё, например, нельзя из A2 создать в редакторе новый файл с именем в кириллице,
будут проблемы и с директориями. Но, во всяком случае, файлы с именами в кириллице теперь показываются
и можно их редактировать. Ещё немного этим позанимаюсь и будем двигаться дальше.
Доделано не всё, например, нельзя из A2 создать в редакторе новый файл с именем в кириллице,
будут проблемы и с директориями. Но, во всяком случае, файлы с именами в кириллице теперь показываются
и можно их редактировать. Ещё немного этим позанимаюсь и будем двигаться дальше.
Re: дневник Яос
Вроде доделал имена файлов в кириллице и сразу после этого сами собой заработали имена модулей в кириллице. Вот такой код работает:
Код: Выделить всё
модуль ПробаПера;
использует Проба, UCS2;
тип
Эр = набор
эс от_компоновщика "Проба.эс": SIZE кн;
проц Дуй*;
перем эр, эр2: Эр;
тело
эр2.эс := 7100;
TRACE( эр.эс); кн Дуй;
кн ПробаПера.Дуй ~
Re: дневник Яос
Сделал документик с кириллическим кодом. Представляю, что теперь будет: произойдёт пересмотр набора ключевых слов и этот текст перестанет компилироваться. Например, он перестанет компилироваться после переименования SIZE. Фигово. Но ничего, мы же тут делаем прототип.
https://gitlab.com/budden/jaos/-/blob/я ... -записи.md
https://gitlab.com/budden/jaos/-/blob/я ... -записи.md
Re: дневник Яос
Захотелось написать новый модуль на кириллице, и тут стало ясно, что пора сделать яроклаву. Заготовку сделал, она работает, правда, только под Windows.
Когда дойдёт дело до нативной A2, надо не забыть, что там в событие Release не приходит код клавиши.
Когда дойдёт дело до нативной A2, надо не забыть, что там в событие Release не приходит код клавиши.
Re: дневник Яос
Реализовал яроклаву для Win32, при этом на пробел-( и пробел-) навесил кавычки-лапки, хотя
они пока и никак не используются в языке (надеюсь, когда нибудь удастся это сделать).
Исходную яроклаву на js смотрите тут: http://программирование-по-русски.рф/яроклава-js.яргт/
они пока и никак не используются в языке (надеюсь, когда нибудь удастся это сделать).
Исходную яроклаву на js смотрите тут: http://программирование-по-русски.рф/яроклава-js.яргт/
Re: дневник Яос
Сегодня танчики не едут, но я всё же сделал, чтобы Яроклава работала в Яос под Linux.
https://gitlab.com/budden/jaos/-/commit ... baedc83164
Теперь Яроклава не работает только в нативной Яос. Потом...
https://gitlab.com/budden/jaos/-/commit ... baedc83164
Теперь Яроклава не работает только в нативной Яос. Потом...
Re: дневник Яос
Опять проехали танки, поэтому я сделал, чтобы Яроклава работала и в нативной Яос. Теперь она работает везде и для полного счастья не хватает только подсветки латиницы.
Re: дневник Яос
Сделал шрифт с отличающейся латиницей, но там есть конкретная проблема с курсивом - по сути дела он вряд ли будет работать, потому что за 10 лет никто не стал его спонсором. Зато этот шрифт Mono PT поддерживает все языки народов России (вот так и поддерживает, без курсива).
Теперь всё надо переделать, по всей видимости - либо взять другой шрифт с такой же метрикой (кстати, там была нестандартная ширина в 1000, а должна быть степень двойки) и сделать из него курсив, либо просто заменить его на DejaVu, который вроде уже прижился. Хотя у меня ощущение, что этот шрифт поприятнее. Может это я уже от усталости.
То, что работает, выглядит так (найдите три буквы, которые затесались не туда, куда надо - это будет трудно, что и говорит о неуспехе данного предприятия).
В целом эксперимент нужно признать неудачным и сделать всё же режим подчёркивания.
Теперь всё надо переделать, по всей видимости - либо взять другой шрифт с такой же метрикой (кстати, там была нестандартная ширина в 1000, а должна быть степень двойки) и сделать из него курсив, либо просто заменить его на DejaVu, который вроде уже прижился. Хотя у меня ощущение, что этот шрифт поприятнее. Может это я уже от усталости.
То, что работает, выглядит так (найдите три буквы, которые затесались не туда, куда надо - это будет трудно, что и говорит о неуспехе данного предприятия).
В целом эксперимент нужно признать неудачным и сделать всё же режим подчёркивания.
- Вложения
-
- 2020-06-26-005420_1354x768_scrot.png (9.71 КБ) 6069 просмотров
Re: дневник Яос
Надо, во всяком случае, записать видео про то, как я это делал, чтобы потом вспомнить.
Re: дневник Яос
По первой трудно, но когда понятно что они худые 3 в миг находишь.
пробелНажатЛи
ввелиЛиЧтоТоСПробелом
Re: дневник Яос
Это был классный эксперимент, но пока что отличать кириллицу от латиницы мы будем следующим образом:
- Вложения
-
- Подчёркивание-кириллицы.png (122.96 КБ) 6186 просмотров
Re: дневник Яос
На этом цикл работ по поддержке кириллицы при вводе и отображении считается успешно завершённым, хотя, конечно, какие-то хвосты остались.
Например, я натолкнулся на ограничение длины имени команды в 32 буквы (или 16 русских букв, т.к. UTF-8). Прямо сразу и в лоб исправить не получилось.
Приступаем к следующему большому этапу - созданию инструмента для автоперевода.
Например, я натолкнулся на ограничение длины имени команды в 32 буквы (или 16 русских букв, т.к. UTF-8). Прямо сразу и в лоб исправить не получилось.
Приступаем к следующему большому этапу - созданию инструмента для автоперевода.
Re: дневник Яос
Решил записать видео со знаниями про FontForge, по результатам записи и послевечеринки получилась такая вот картинка:
- Вложения
-
- cyrillic_old.png (85.59 КБ) 6173 просмотра
Re: дневник Яос
Сегодня был не лучший день, однако я доделал полный комплект своих русифицирующих задумок, кроме яролита (в котором важнее само соглашение, чем инструмент преобразования).
* яро-раскладка, т.е. ввод латиницы при удерживаемом пробеле
* отключаемый режим подчёркивания всей латиницы на экране
* шрифт, в котором латиница отличается по виду от кириллицы
* форма курсора показывает, какая раскладка клавиатуры включена
Всё таки есть кардинальное отличие между тем, когда ОС в твоём распоряжении,
и той ситуацией, в которой находятся программисты Windows/Linux. Задачи решаются
проще, причём они решаются. Для существующих ОС некоторые из этих задач
просто никак не решались в общем виде.
Релиза пока нет, но, видимо, его нужно уже сделать.
* яро-раскладка, т.е. ввод латиницы при удерживаемом пробеле
* отключаемый режим подчёркивания всей латиницы на экране
* шрифт, в котором латиница отличается по виду от кириллицы
* форма курсора показывает, какая раскладка клавиатуры включена
Всё таки есть кардинальное отличие между тем, когда ОС в твоём распоряжении,
и той ситуацией, в которой находятся программисты Windows/Linux. Задачи решаются
проще, причём они решаются. Для существующих ОС некоторые из этих задач
просто никак не решались в общем виде.
Релиза пока нет, но, видимо, его нужно уже сделать.
Re: дневник Яос
Выкинул шрифты и вернул подчёркивание. Но нужно ещё опробовать сдвиг букв кириллицы и латиницы по высоте. Жаль, что я не знаю, как его сделать, т.к. для немоноширинных шрифтов высота знака является переменной величиной и неясно, как поднять на долю высоты строки - видимо, можно плясать только от размера кегля, но он в момент рисования уже где-то давно потерялся. В принципе это и на подчёркивании плохо сказывается, но думается, для сдвига по высоте будет более заметно.
Пора уже с этим завязывать и возвращаться к теме инструментов для перевода.
Пора уже с этим завязывать и возвращаться к теме инструментов для перевода.
Re: дневник Яос
Сделал в итоге оба варианта - и опускание латиницы, и выделение подчёркиванием отличающихся букв латиницы. Режимы можно переключить,
вызывая команды в меню "Главное меню/текст"
Пересобрал только Win32. Со временем, когда всё устаканится и станет ясно, что всё в порядке, нужно будет пересобрать и остальные сборки.
https://gitlab.com/budden/jaos/-/commit ... 53b22ee0d4
Теперь, собственно, можно с нормальным уровнем комфорта редактировать двухъязычные тексты и при следующей возможности продолжу разработку лексера-парсера линзы для полумашинного перевода кода.
вызывая команды в меню "Главное меню/текст"
Пересобрал только Win32. Со временем, когда всё устаканится и станет ясно, что всё в порядке, нужно будет пересобрать и остальные сборки.
https://gitlab.com/budden/jaos/-/commit ... 53b22ee0d4
Теперь, собственно, можно с нормальным уровнем комфорта редактировать двухъязычные тексты и при следующей возможности продолжу разработку лексера-парсера линзы для полумашинного перевода кода.
Re: дневник Яос
Переделал на подчёркивание всей основной латиницы. Всё же надо ещё как-то выделить и буквы вне кириллицы и латиницы, т.к. они тоже могут совпасть.
Re: дневник Яос
Сделал новый образ вирт. машины, который можно скачать (см. прикреплённую тему в этом форуме) и записал видео о нём
Продолжил работу над лексером-парсером-линзой, пока сделано очень мало, но дело сдвинулось с мёртвой точки - удалось наконец-то отцепиться от этой эргономики и подавить проект создания шрифта :)
Продолжил работу над лексером-парсером-линзой, пока сделано очень мало, но дело сдвинулось с мёртвой точки - удалось наконец-то отцепиться от этой эргономики и подавить проект создания шрифта :)
Re: дневник Яос
Имя команд в кириллицы было всего 16 букв, это было неприемлемо. Расширил до 32. Теперь, нужно опять скорее возвращаться к лексеру-парсеру.
Re: дневник Яос
Чуть-чуть покопал лексер, успех пока не близок и свободного времени достаточно мало. Сделал несколько задач платными https://gitlab.com/budden/jaos/-/issues и даже пытался обратиться к какому-то фрилансеру. Затея проста - просить не большую сумму на что-то непонятное, а собирать маленькую под конкретные задачи. Плюс к тому, обкатать механизм вхождения сторонних людей в тему, под это придётся подготовить достаточный объем обучающих материалов. Впрочем, наплыва желающих что-то делать не наблюдается. Вероятно, сумму нужно умножить на три, чтобы выстроилась очередь желающих, но жаба это не одобряет.
Re: дневник Яос
Продолжил копаться в лексере, исправил часть ошибок, а потом сдуру решил перевести его на UCS32. Теперь, скорее всего, он работает гораздо неправильнее, чем раньше. Но в целом-то он уже готов и можно переходить к изменению парсера.
Re: дневник Яос
Удалось написать (а скорее даже стереть) несколько строчек из лексера-парсера. Там была непонятная обработка знака ESC с кодом 1B, и я её выкинул. Думается, что она была нужна для интерпретатора, хотя точной цитаты из Сергея Дурманова я так и не нашёл. Во всяком случае, в исходниках ЯОС такого знака при пересборке не попалось.
Re: дневник Яос
Сделал первую версию переводилки ключевых слов.
Было:
Стало:
Здесь, конечно, ещё пахать и пахать. Самое неприятное - это "на" вместо "до" в цикле, т.к. в английском это одно слово "то", а в русском - два. Остальное - сохраняется лишь небольшая часть всех комментариев, а также пробелы "нормализуются", в результате чего исходное форматирование документа утрачивается. Чтобы это исправить, нужна довольно массированная переработка всего кода разбора. Я её начал, но до конца далеко.
Было:
Код: Выделить всё
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;
Re: дневник Яос
Всё начиналось невинно - возникли проблемы с тем, что "на" и "до" - это одно и то же слово "to". Кончилось тем, надо продублировать порядка 40 файлов, составляющих компилятор и окружающие его вещи, чтобы получить возможность дорабатывать новую версию компилятора. Менять рабочий компилятор "на живую" не совсем правильно, т.к. нет права на ошибку. В течение некоторого времени это прокатывало, но уже наступил момент, когда это больше не работает. Пока продублировал порядка 7 файлов. В целом это не так уж и сложно...
Re: дневник Яос
Пришлось дублирование переделывать заново, в итоге по компилятору пока двигаюсь назад, хотя надеюсь, что в правильном направлении.
Начали с товарищем https://gitlab.com/budden/jaos/-/blob/8 ... е-языка.md
Поскольку я плачу за эту работу, это возможность помочь проекту материально. Ставка 350 рублей за страницу, всего страниц порядка 80. Пока переведено 10 и ещё не заплатил ничего.
Начали с товарищем https://gitlab.com/budden/jaos/-/blob/8 ... е-языка.md
Поскольку я плачу за эту работу, это возможность помочь проекту материально. Ставка 350 рублей за страницу, всего страниц порядка 80. Пока переведено 10 и ещё не заплатил ничего.
Re: дневник Яос
Доперелисовал компилятор, теперь парсер падает. Это, в принципе, более-менее хорошо, не считая того, что я забыл, что в нём последнее менял. Ну ничего, разберёмся. Последнее время стало как-то некогда.
- Лис [Вежливый]
- Сообщения: 579
- Зарегистрирован: 08.10.18 13:32
Re: дневник Яос
Да!Доперелисовал
Re: дневник Яос
Вот теперь точно доперелисовал. Смысл "лисования" состоит в том, что для (почти) каждого модуля Fox* создан параллельный ему Lis*, чтобы был один компилятор в работе и один - на этапе переделки. Правда, перелисованный компилятор пока почти не работает, но зато заложена методическая основа для дальнейшего движения.
Re: дневник Яос
Не знаю, как там ретроградный Меркурий, но поступательное движение, похоже, скоро сможет продолжаться.
Вот как на данный момент выглядит процесс преобразования ключевых слов. Было:
Стало
(исправлена одна ошибка в парсере. Весь сыр-бор последних пары недель был из-за того, что TO нужно разделить на "НА" и "ДО", пока что этого не сделано, но подготовлена почва).
Можно обратить внимание, что комментарий потерялся. Такого происходить не должно и это является целью ближайшего эээээ времени.
Вот как на данный момент выглядит процесс преобразования ключевых слов. Было:
Код: Выделить всё
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.
Можно обратить внимание, что комментарий потерялся. Такого происходить не должно и это является целью ближайшего эээээ времени.
Re: дневник Яос
https://gitlab.com/budden/jaos/-/commit ... a2394063a2 - новая порция описания языка. Ещё 10 страниц в очереди, ждут вычитку.
Кроме того, перелисованный компилятор собрался и даже немного обогатил синтаксическое дерево инфой о конкретной лексеме (отладка ещё впереди). Когда дерево будет достаточно богатым, можно будет непосредственно приступать к инфраструктуре переводчика. Думаю, это всё же вопрос не недель, а месяцев.
Кроме того, перелисованный компилятор собрался и даже немного обогатил синтаксическое дерево инфой о конкретной лексеме (отладка ещё впереди). Когда дерево будет достаточно богатым, можно будет непосредственно приступать к инфраструктуре переводчика. Думаю, это всё же вопрос не недель, а месяцев.
Re: дневник Яос
Всё же оба компилятора не совсем совместимы - перевёл ключевые слова в каком-то модуле и он не компилируется старым компилятором. В целом достаточно, чтобы перелисованный компилятор компилировал все варианты, а старый - только англоязычный. Правда, это означает, что переход на русские ключевые слова в новых модулях пока откладывается.
Начал создавать инфраструктуру для перевода. При ближайшем рассмотрении в задаче обнаружилось несколько довольно больших подзадач. Дерево грамм. разбора довольно сложное.
Изначально планировал расширить язык, чтобы можно было задавать и английское, и русское название для сущности. Однако подумал-подумал и вместо этого добавил специальные метаданные, в которых и будут указываться переводы. Это соотносится с общей идеем, что мы создаём ОС на русском языке, а английского в ней не более, чем для того, чтобы она не перестала работать. Был в один момент дрейф в сторону двухъязычности, но теперь с этим покончено. Избавиться от английских названий сразу не получится, т.к. команды могут вызываться по динамически формируемым именам, которые никаким способом, кроме полного тестирования, найти нельзя. Полное тестирование нам недоступно. Поэтому в течение длительного времени у всех внешних (интерфейсных) имён останутся английские переводы, к-рые будут загружаться из вот такого XML файла на достаточно раннем этапе загрузки.
При этом существует нижний предел размещения этого модуля. Те модули, которые грузятся до него, должны быть одноязычными хотя бы на момент загрузки - за это придётся некоторое время бороться. Да и вообще, работы ещё много (больше, чем хотелось бы).
https://gitlab.com/budden/jaos/-/commit ... e66eff35e1
Начал создавать инфраструктуру для перевода. При ближайшем рассмотрении в задаче обнаружилось несколько довольно больших подзадач. Дерево грамм. разбора довольно сложное.
Изначально планировал расширить язык, чтобы можно было задавать и английское, и русское название для сущности. Однако подумал-подумал и вместо этого добавил специальные метаданные, в которых и будут указываться переводы. Это соотносится с общей идеем, что мы создаём ОС на русском языке, а английского в ней не более, чем для того, чтобы она не перестала работать. Был в один момент дрейф в сторону двухъязычности, но теперь с этим покончено. Избавиться от английских названий сразу не получится, т.к. команды могут вызываться по динамически формируемым именам, которые никаким способом, кроме полного тестирования, найти нельзя. Полное тестирование нам недоступно. Поэтому в течение длительного времени у всех внешних (интерфейсных) имён останутся английские переводы, к-рые будут загружаться из вот такого XML файла на достаточно раннем этапе загрузки.
При этом существует нижний предел размещения этого модуля. Те модули, которые грузятся до него, должны быть одноязычными хотя бы на момент загрузки - за это придётся некоторое время бороться. Да и вообще, работы ещё много (больше, чем хотелось бы).
https://gitlab.com/budden/jaos/-/commit ... e66eff35e1
Re: дневник Яос
Параллельно идёт работа над переводом описания языка, пока что оно выглядит вот так:
https://gitlab.com/budden/jaos/-/blob/c ... е-языка.md
Это 3/8 общего объёма документа.
Ещё один кусочек находится в конвейере, рассчитываю на этой неделе его допилить.
https://gitlab.com/budden/jaos/-/blob/c ... е-языка.md
Это 3/8 общего объёма документа.
Ещё один кусочек находится в конвейере, рассчитываю на этой неделе его допилить.
Re: дневник Яос
Последние новости:
- переведена половина описания языка (пока что с англоязычными ключевыми словами)
- реализована инфраструктура для динамического перевода имён модулей и команд. Для каждого модуля и для каждой команды можно задать русскую и английскую версию названия. При этом команду можно вызвать как по русскому, так и по английскому названию. Например, можно написать ТестПереводыЭлементовКода.ПокажиБазуДанныхПереводов, а можно написать TestTransCodeElem.ShowTransDb - и будет выполнено одно и то же. Компилятор пока этих переводов не видит (да и не увидит). В файле локализации также указано, какая из версий существует в реальности, а какая является псевдонимом. Такая же структура будет использована для перевода исходных текстов (но эта задача оказалась слишком зубастой - потому и начал с более простой задачи динамиского перевода).
- в сборку ЯОС включён первый модуль с русскоязычными ключевыми словами (базовые типы пока остались англоязычными).
- немного попереводил интерфейс, и теперь заглавная страница ИСР почти полностью русскоязычная.
- Вложения
-
- русский-модуль-и-переводы.png (137.44 КБ) 6137 просмотров
Re: дневник Яос
Сложный получается клубок с этим переводом... Реализовал возможность импортировать модули по переведённым именам. Но это всё пока что не про то. Попробую теперь научиться переводить имена модулей при импорте.
Re: дневник Яос
Научился автоматически переводить имена импортированных модулей по таблице переводов, заданной в XML. Было:
Стало:
Можно сказать, лёд тронулся, в проекте ЯОС закончилась подготовительная работа и началась основная. Правда, способ перевода очень стрёмный - меняется имя идентификатора в уже существующем дереве разбора. Что-то может сломаться. Посмотрим, как дальше пойдёт. Ну и очевиден ещё ряд проблем - уродуются строковые литералы, криво работают автоотступы, комментарии теряются или переезжают. Кроме того, модуль может импортироваться с псевдонимом и этот случай пока что не обрабатывается.
Код: Выделить всё
MODULE ТестИмпортаСПереводом;
IMPORT KernelLog;
PROCEDURE Do*;
BEGIN KernelLog.String("TestSOT.Do"); KernelLog.Ln END Do;
END ТестИмпортаСПереводом.
Код: Выделить всё
модуль ТестИмпортаСПереводом;
использует ЛогЯдра;
проц Do*;
тело
ЛогЯдра.String(\"TestSOT.Do"\);
ЛогЯдра.Ln()
кн Do;
кн ТестИмпортаСПереводом.
Re: дневник Яос
Теперь и пседонимы модулей переводятся. Например,
KL := KernelLog может превратиться в ЛЯ := ЛогЯдра.
KL := KernelLog может превратиться в ЛЯ := ЛогЯдра.
Re: дневник Яос
Научился переводить константы уровня модуля. Похоже, что дальше дело техники в плане создания инфраструктуры перевода. Основная проблема теперь - что качество самой печати синт. дерева в виде исходника несколько хромает - это придётся чинить (или мириться?). В общих чертах представление об этом есть, но это явно будет уже в следующем "спринте".
Re: дневник Яос
Ещё немного продвинулся. Теперь из такого исходника
И такого XML файла
Получается такой исходник:
Код: Выделить всё
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.
Код: Выделить всё
<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(мояПерем) кн подПроц;
тело
подПроц() кн Дуй;
кн ТестИмпортаСПереводом.
Re: дневник Яос
Переводятся поля записи.
Re: дневник Яос
Переводится тип записи в выражении типа "укль на NAME"
Re: дневник Яос
Отпуск закончился, делать что-либо некогда. Получил от коллеги очередные 20 страниц перевода языка, читаем: https://gitlab.com/budden/jaos/-/blob/b ... е-языка.md
Re: дневник Яос
Сегодня хватило сил только на массированное уничтожение кода, не участвующего в сборке. Стёр остатки приложения оберон, старый компилятор и поддержку ARM, к-рую я никогда не проверял. ARM - не российский процессор, поэтому ну его нафиг.
Re: дневник Яос
Научился переводить встроенные типы. Вот таблица перевода.
https://gitlab.com/budden/jaos/-/commit ... 7df32d9a60
А также переименовал "ряд" в "массив" и "объект" в "существо".
Код: Выделить всё
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
А также переименовал "ряд" в "массив" и "объект" в "существо".
Re: дневник Яос
Перевод встроенных типов - весьма черновой. Вероятно, я слишком рано стал использовать русские ключевые слова в боевых исходниках - приходится теперь писать на меняющемся языке. Эта проблема пока не решена и автоматического перевода из старой в новую версию языка нету. Но это нужно было для подъёма морального духа. Теперь дух приподнялся, можно и выкинуть.
Re: дневник Яос
Последние дни вяло копаюсь с движком перевода - после работы сил почти не остаётся.
Re: дневник Яос
Очередные 20 страниц https://gitlab.com/budden/jaos/-/commit ... fb61629763
Re: дневник Яос
Удалось немного продвинуться - теперь некоторые типы переводятся. Хотя всё это какое-то блуждание в потёмках... Структура дерева разбора несколько непонятна и вся целиком в голове никак не помещается.
Re: дневник Яос
И последние 6 страниц: https://gitlab.com/budden/jaos/-/commit ... 380067bc80
Re: дневник Яос
Заблудился в лесу деревьев разбора. Начал рисовать схему на бумажке, но и в ней запутался. Очевидно, назрела доработка модуля отладочной печати...
Re: дневник Яос
Уже и в отладочной печати почти запутался, но вроде выпутываюсь. Завтра посмотрим...
Re: дневник Яос
Отладочную печать осилил, теперь можно задавать способ печати любых записей, а нужно это для удобной печати синтаксических деревьев - без этого я в них разобраться не могу.
Записал видео с описанием проделанной за 2 месяца работы:
https://youtu.be/CkDxtdxPx5g
Записал видео с описанием проделанной за 2 месяца работы:
https://youtu.be/CkDxtdxPx5g
Re: дневник Яос
Вернулся к движку перевода. С помощью отладочной печати быстро исправил ошибку, которую до этого не мог осилить. Теперь буду думать, надо ли выделить перевод в отдельный шаг обработки, или и так сойдёт.
Re: дневник Яос
На выходных выделил перевод в отдельный шаг обработки дерева разбора и он вроде бы работает. Теперь хочу попробовать провязать перевод прямо к входным лексемам. Это рискованно и может не получиться, но если получится - будет очень классно и не придётся переделывать всю печать дерева в виде исходника.
Re: дневник Яос
Собрал систему компилятором Лис, который мало отличается от компилятора Fox, но всё же.
Система запускается и компилятор Лис в ней опять же работает. Дальше пока не смотрел.
Если всё будет ок, заменю компилятор Fox на компилятор Лис и продолжу копать перевод.
До успеха с переводом пока непонятное расстояние.
Система запускается и компилятор Лис в ней опять же работает. Дальше пока не смотрел.
Если всё будет ок, заменю компилятор Fox на компилятор Лис и продолжу копать перевод.
До успеха с переводом пока непонятное расстояние.
Re: дневник Яос
Сделал тестовый режим для того, чтобы проверять, не упущен ли где-то перевод. Он действует дуболомно: если перевод в таблицах не нашёлся, то переводит "тилорей", см. https://www.linux.org.ru/forum/talks/14525807
Можно поржать:
https://gitlab.com/budden/jaos/-/commit ... a691097b05
А в целом уже пора подумать о том, как же переводить. Вероятно, нужно сначала читать файл, генерировать
заготовку переводов (т.е. писать, какие в нём в принципе имена подлежат переводу). Затем пытаться
их перевести из какого-то пополняемого словаря. Допустим, i можно всегда переводить как "ии", или вообще не переводить:
просто "и" занято под ключевое слово., логическое "и", а j - как "j". "Error" можно всегда переводить как "Ошибка" и т.п.
Такой простой словарь наверняка покроет большую долю случаев.
И уже то, что он не осилит, то надо вручную переводить.
Можно поржать:
Код: Выделить всё
(* simple case can be utilized when endString does not contain first character, which is the case for our string convention *)
проц ЦонсумеСтрингУнтил(конст ендСтринг: ряд из литера8; усеЦонтрол: булево);
перем есцапеПос: цел32; ецш: литера8; и: цел32; стартПоситион: Стреамс.Поситион;
конст
Цонтрол = '\';
Делимитер = '"';
проц Аппенд(цш :литера8);
тело
если цш = 370 то
ЕррорС("Unexpected end of text in string"); еррор := правда;
иначе
стрингЮритер.Цшар(цш)
кн;
кн Аппенд;
тело
(* traverse *)
есцапеПос := 0; ецш := ендСтринг[0]; стартПоситион := поситион.старт;
ГетНехтЦшарацтер;
цикл_до
если цш = ецш то
ИНЦ(есцапеПос); ецш := ендСтринг[есцапеПос];
ГетНехтЦшарацтер;
аесли усеЦонтрол и (цш = Цонтрол) то
ГетНехтЦшарацтер;
если (цш = Цонтрол) или (цш = Делимитер) то
Аппенд(цш)
аесли цш = 'n' то
Аппенд(ЦР); Аппенд(ЛФ);
аесли цш = 't' то
Аппенд(ТАБ)
иначе
ЕррорС("Unknown control sequence")
кн;
ГетНехтЦшарацтер
аесли есцапеПос = 0 то (* frequent case *)
Аппенд(цш); ГетНехтЦшарацтер;
иначе
(* account for "forgotten" characters *)
цикл_для и := 0 до есцапеПос-1 делай
Аппенд(ендСтринг[и]);
кн;
(* restart *)
ецш := ендСтринг[0]; есцапеПос := 0;
кн;
кн_цикла_до_если (цш = ЕОТ) или (ецш = 370) или еррор;
если цш = ЕОТ то поситион.старт := стартПоситион; ЕррорС("Unexpected end of text in string") кн;
кн ЦонсумеСтрингУнтил;
А в целом уже пора подумать о том, как же переводить. Вероятно, нужно сначала читать файл, генерировать
заготовку переводов (т.е. писать, какие в нём в принципе имена подлежат переводу). Затем пытаться
их перевести из какого-то пополняемого словаря. Допустим, i можно всегда переводить как "ии", или вообще не переводить:
просто "и" занято под ключевое слово., логическое "и", а j - как "j". "Error" можно всегда переводить как "Ошибка" и т.п.
Такой простой словарь наверняка покроет большую долю случаев.
И уже то, что он не осилит, то надо вручную переводить.
Re: дневник Яос
Потихоньку продвигаюсь в переводе атрибутов (UNTRACED и т.п). Один перевёл. Но зато на одном модуле теперь стала компиляция падать, причём вроде место было про другое.
Поскольку меня угораздило сделать одно изменение, которое утащили из ЯОС в A2, и с ним возникли проблемы у них, мне теперь придётся и на это время тратить. Однако разработчики A2 хорошо помогают, придётся поработать на них. Вероятно, где-то неделю потрачу (календарную).
Поскольку меня угораздило сделать одно изменение, которое утащили из ЯОС в A2, и с ним возникли проблемы у них, мне теперь придётся и на это время тратить. Однако разработчики A2 хорошо помогают, придётся поработать на них. Вероятно, где-то неделю потрачу (календарную).
Re: дневник Яос
Ещё немного продвинулся с движком перевода.
Re: дневник Яос
Вроде переводятся флаги (такие, как ACTIVE и т.п.).
https://gitlab.com/budden/jaos/-/commit ... d63ea4a745
Пока не вижу, что ещё не поддерживается движком перевода из конструкций языка. К сожалению, на этом движок перевода ещё далеко не окончен. Нужно, во-первых, обрабатывать блоки препроцессора. Это довольно муторно (и вообще не вполне понятно, как). Во-вторых, тестировать. В-третьих, генерировать заготовку для словаря на этапе разбора из существующего синт. дерева. В-четвёртых, сделать контекстно-независимый словарь по умолчанию, чтобы существовало разумное умолчание для общеупотребимых однозначных слов, таких, как Module. Вероятно, такие слова можно сразу переводить и внутри комментариев и строковых литералов.
https://gitlab.com/budden/jaos/-/commit ... d63ea4a745
Пока не вижу, что ещё не поддерживается движком перевода из конструкций языка. К сожалению, на этом движок перевода ещё далеко не окончен. Нужно, во-первых, обрабатывать блоки препроцессора. Это довольно муторно (и вообще не вполне понятно, как). Во-вторых, тестировать. В-третьих, генерировать заготовку для словаря на этапе разбора из существующего синт. дерева. В-четвёртых, сделать контекстно-независимый словарь по умолчанию, чтобы существовало разумное умолчание для общеупотребимых однозначных слов, таких, как Module. Вероятно, такие слова можно сразу переводить и внутри комментариев и строковых литералов.
Re: дневник Яос
Кое-что ещё по мелочи поправил, теперь оказывается, что никто не научил лексер и парсер понимать русские переводы флагов. Что ж, это задача простая. Менее приятно, что с русскими ключевыми словами ошибки синтаксиса опять стали мазать мимо цели. А я уже забыл, как это было сделано. Но ничего, это мы исправим.
Re: дневник Яос
Вроде сделал флаги, поменял опции компилятора. Вскрылось, что странно ведёт себя ORD для перечислений, нужно исправлять.
Также напрашивается, что при нажатии буква-пробел происходил бы переход в режим ввода русских букв.
Также напрашивается, что при нажатии буква-пробел происходил бы переход в режим ввода русских букв.
Re: дневник Яос
Перечисление - это и есть счётный тип, ENUM. Во:
https://gitlab.com/budden/jaos/-/blob/и ... речисление
Там просто баг в компиляторе.
https://gitlab.com/budden/jaos/-/blob/и ... речисление
Там просто баг в компиляторе.
Re: дневник Яос
Ох, нелёгкая это работа, из болота тащить бегемота... По ходу дела в языке обнаружилось порядка 20 различных флагов-модификаторов, из серии тех, что в Си были бы cdecl, extern и проч. Т.е. язык совсем не такой уж простой. Среди них есть и вкусняшки для системного программирования, и просто нечто, чего я не понимаю.
Но их все нужно как-то обработать для русификации, и я два раза пошёл по неверному пути. Сейчас оно снова скомпилировалось, если я третий раз не ошибся с выбором пути, то с большинством флагом должно быть покончено.
Остались ещё не локализованными встроенные функции, но вроде движок для этого есть.
Но их все нужно как-то обработать для русификации, и я два раза пошёл по неверному пути. Сейчас оно снова скомпилировалось, если я третий раз не ошибся с выбором пути, то с большинством флагом должно быть покончено.
Остались ещё не локализованными встроенные функции, но вроде движок для этого есть.
Re: дневник Яос
Вроде заработал (снова) перевод флагов. Встроенные функции не начинал, но решил заняться сценарием перевода всех исходников. Тут тоже работы немало. Пока получается так, что перевод нельзя сделать помодульно, а нужно переводить сразу целиком. Это не слишком хорошо. От этого можно избавиться, усложнив реализацию динамической двухъязычности. Тогда переводить станет проще, но пользоваться полупереведёнными исходниками - сложнее. Пока надеюсь без этого обойтись.
Re: дневник Яос
Процесс перевода всех исходников по структуре - такой же, как сборка всех платформ. Поэтому копаюсь в ЦИ (CI), которое есть на официальном сайте A2 и которое даёт данные для вот этой страницы http://builds.cas.inf.ethz.ch/
Кое-что удалось сделать, но до полного успеха пока далеко. Под полным успехом понимаю способность сгенерировать такую же страницу (или хотя бы вывести такие же данные в любой форме) для ЯОС.
Заодно задумался о возврате ARM.
Кое-что удалось сделать, но до полного успеха пока далеко. Под полным успехом понимаю способность сгенерировать такую же страницу (или хотя бы вывести такие же данные в любой форме) для ЯОС.
Заодно задумался о возврате ARM.
Re: дневник Яос
ARM вернул в репозиторий, он плюс-минус собирается. Вопрос - как тестировать.
Re: дневник Яос
Заказал для тестирования плату, на которой А2 вроде бы несложно запускается, а также списался с людьми, которые это делали.
Немного покопался в системе сборки. В A2 есть автосборка скриптом и автотесты. Нужно всё это задействовать и починить для ЯОС.
Немного покопался в системе сборки. В A2 есть автосборка скриптом и автотесты. Нужно всё это задействовать и починить для ЯОС.
Re: дневник Яос
Упёрся в кириллицу в консоли, которая уже давно нормально печатается, но всё ещё криво читается.
Re: дневник Яос
НЕ ЗАБЫТЬ!!!! Описать AOSPATH - можно забывать, т.к. завёл задачу https://gitlab.com/budden/jaos/-/issues/51
Re: дневник Яос
Задачи по "девопсу" - самые занудные. Потихоньку автоматизирую сборку и тесты, см. соседнюю тему http://вече.программирование-по-русски. ... ?f=5&t=300
На данный момент написал скрипт, который запускает тесты от A2. Приятно, что все тесты проходят в ЯОС. Правда, пока реализовано только для Windows и нет выдачи кода возврата (прошли/не прошли/тестовый стенд упал). Но не факт, что это и нужно. Главное, чтобы их можно было запускать хотя бы руками.
На данный момент написал скрипт, который запускает тесты от A2. Приятно, что все тесты проходят в ЯОС. Правда, пока реализовано только для Windows и нет выдачи кода возврата (прошли/не прошли/тестовый стенд упал). Но не факт, что это и нужно. Главное, чтобы их можно было запускать хотя бы руками.
Re: дневник Яос
Вчерне разобрался с тестами - написал скрипт, к-рый их запускает автоматически и показывает результат в консоли. Заодно сделал полностью автоматическую пересборку - она не так удобна как ручная, но нам она нужна для перевода кода, поскольку перевод - это пересборка.
Re: дневник Яос
Потихоньку ползу в направлении перевода всех конфигураций сразу. Сделал команду сборки релиза с помощью компилятора Lis. Неприятное открытие сегодняшнего дня состоит в том, что компилятор Лис в 7 раз медленнее компилятора Fox, так что ЯОС собирается им целых 15 минут. Вероятно, поиск переводов не слишком-то быстр.
Re: дневник Яос
Сделал шаг в развитии компилятора - заменил содержимое компилятора Fox содержимым компилятора Lis. Шаг в общем-то формальный, но всплыл ряд несовместимостей, вроде их залатал, но с тестированием у нас понятно как, поэтому что-то могло и отвалиться. Будущее покажет.
Теперь можно продолжить доделывание SET64 в 32-разрядных платформах, где они, по сути, недоделаны.
http://вече.программирование-по-русски. ... =302#p1804
Это откроет дорогу (точнее, уберёт один камень с дороги, а сколько их там будет дальше?) к кросс-компиляции 64-разрядных версий из 32-разрядных, да и вообще, тип SET64 должен работать. А если подумать, то должен работать тип SET(n) для любого положительного n. Хотя это на самом деле не SET, а массив битов длины n.
Коммит, где всё собиралось - здесь: https://gitlab.com/budden/jaos/-/commit ... 92270fbae5
Следующий коммит опять всё ломает - буду смотреть, как реализованы множества и пытаться их доделать. С одной стороны, вроде кажется простым, с другой - я до конца не досмотрел, так что может быть там только начало простое.
Теперь можно продолжить доделывание SET64 в 32-разрядных платформах, где они, по сути, недоделаны.
http://вече.программирование-по-русски. ... =302#p1804
Это откроет дорогу (точнее, уберёт один камень с дороги, а сколько их там будет дальше?) к кросс-компиляции 64-разрядных версий из 32-разрядных, да и вообще, тип SET64 должен работать. А если подумать, то должен работать тип SET(n) для любого положительного n. Хотя это на самом деле не SET, а массив битов длины n.
Коммит, где всё собиралось - здесь: https://gitlab.com/budden/jaos/-/commit ... 92270fbae5
Следующий коммит опять всё ломает - буду смотреть, как реализованы множества и пытаться их доделать. С одной стороны, вроде кажется простым, с другой - я до конца не досмотрел, так что может быть там только начало простое.
Re: дневник Яос
Попытка сделать SET была пока мало успешной. Не понимаю, как пользоваться генератором промежуточного кода и похоже, что где-то генерируются множества неправильного размера (а может быть, неправильного содержимого, а не размера?)
Re: дневник Яос
Первоисточник:Лис компилируется фоксом,
тесты проходят, но после перекомпиляции лиса этим лисом (проходящей успешно)
полученный в результате лис уже ничего не компилирует.
https://gitlab.com/budden/jaos/-/commit ... 09b73a5ff7
Re: дневник Яос
Не в добрый час я решил попробовать починить сборку 64-разрядного приложения из 32-разрядного... Уже несколько дней героических усилий, а всего лишь более-менее заработал тип SET64. Сколько ещё грабель впереди... Может, ну его?
Re: дневник Яос
Скоро месяц, как понесла меня нелёгкая расширить список платформ. Карточка с ARM застряла на таможне.
Собрался и запустился Win64? кросскомпилированный из Win32, но работает как-то не очень. И явно ещё не всё правильно в обработке множеств.
Даже не только SET64, а вообще.
Печально, но похоже, что к НГ не будет существенного куска кода, переведённого на РЯ. А планы такие были.
Собрался и запустился Win64? кросскомпилированный из Win32, но работает как-то не очень. И явно ещё не всё правильно в обработке множеств.
Даже не только SET64, а вообще.
Печально, но похоже, что к НГ не будет существенного куска кода, переведённого на РЯ. А планы такие были.
Re: дневник Яос
Win64, собранный из Win32, заработал удовлетворительно (веб-браузер запускается, IDE работает).
Также собрал Linux64 из того же Win32. Он запускается, гуй показывает, веб-браузер работает.
Тесты пока неясно (вот прямо сейчас запускаю, а спать уж пора давненько)... да, прошли уж.
Правда, пришлось немного поколдовать с исходниками, чтобы оно запускалось из командной строки.
Теперь нужно небольшое "дело техники", чтобы запустить автотестирование трёх сборок под Intel - Win32, Win64, Linux64.
Надо бы и для сборки под qemu тоже их научиться запускать... Как нибудь потом...
Также собрал Linux64 из того же Win32. Он запускается, гуй показывает, веб-браузер работает.
Тесты пока неясно (вот прямо сейчас запускаю, а спать уж пора давненько)... да, прошли уж.
Правда, пришлось немного поколдовать с исходниками, чтобы оно запускалось из командной строки.
Теперь нужно небольшое "дело техники", чтобы запустить автотестирование трёх сборок под Intel - Win32, Win64, Linux64.
Надо бы и для сборки под qemu тоже их научиться запускать... Как нибудь потом...
- Лис [Вежливый]
- Сообщения: 579
- Зарегистрирован: 08.10.18 13:32
Re: дневник Яос
«собрал Linux64 ... запускается, гуй показывает, веб-браузер работает»
Но зачем, если таких готовых (уже собранных) дистрибутивов полно?
Может ты не Linux собрал, а какое-то окружение поверх ядра Linux?
Или компилятор "Лис" для работы в Linux64, но тогда непонятно, при чём тут ГУЙ (ГИП?) и веб-браузер.
(твой предыдущий/предшествующий моему пост написан не для землян, твой текст непонятен)
Но зачем, если таких готовых (уже собранных) дистрибутивов полно?
Может ты не Linux собрал, а какое-то окружение поверх ядра Linux?
Или компилятор "Лис" для работы в Linux64, но тогда непонятно, при чём тут ГУЙ (ГИП?) и веб-браузер.
(твой предыдущий/предшествующий моему пост написан не для землян, твой текст непонятен)
Re: дневник Яос
Так я тут всё равно по большей части сам с собой общаюсь, потому и пишу в основном для себя. Я собрал не Linux64, конечно, а ЯОС как приложение под Linux64. ЯОС содержит в себе своё "ядро", гуй, компилятор.
Re: дневник Яос
https://www.youtube.com/watch?v=9e0hJjz64Tw - вот видео, где показано, как A2 может работать в трёх режимах - как приложение под Linux, как приложение под Windows и как настоящая операционная система на "железе" в QEMU. Это - три разных сборки A2. Моё текущее достижение - всего лишь в том, что я починил кросс-компиляцию, чтобы 64-разрядную ЯОС можно было собрать 32-разрядным компилятором. Таковая кросс-компиляция раньше работала, но потом сломалась.
Re: дневник Яос
Перекомпилировал три платформы, тесты запускаются, порядка 20 тестов на двух платформах не проходят. Борюсь за собираемость ОС под железо. Тесты прогонять не буду. По ходу дела избавился от.gitattributes - теперь все файлы будут с юниксовыми концами строк всегда, даже под Win
Re: дневник Яос
При всём уважении к прекрасному языку Оберон, программировать почему-то больше хочется не на нём, а на лиспе. Поэтому я сделал выгрузку лексем в виде s-выражений, где-то тут 2f2cd2c9dcf26bac98aace6bd5ece6c5db8bd2be. Теперь надо написать программку на лиспе, которая будет обрабатывать разные случаи препроцессирования.
Re: дневник Яос
Сделано. Что осталось теперь? Видимо, генерировать заготовки словарей перевода и заполнять их общей лексикой.
Re: дневник Яос
Начал делать генератор заготовки словаря, но похоже, что его придётся полностью переделать.
План дальнейшей деятельности:
План дальнейшей деятельности:
- переделать на LisPrintout
- не добавлять идентификаторы, к-рые уже на русском
- выводить отступы
- завести глобальный словарь общей лексики и брать предложения из него. Заготовкой для него является табличка из темы про подсчёт слов.
Re: дневник Яос
Вроде заготовка для словаря генерируется почти прилично, https://gitlab.com/budden/jaos/-/commit ... 9e8590767a
Правда, объём бедствия ощутимый. В одном только небольшом FoxBasic заготовка словаря содержит порядка 900 слов. Некоторые из них повторяются, но
это не сильно утешает.
Теперь нужно:
Правда, объём бедствия ощутимый. В одном только небольшом FoxBasic заготовка словаря содержит порядка 900 слов. Некоторые из них повторяются, но
это не сильно утешает.
Теперь нужно:
- ✓ обрабатывать случай, когда идентификатор уже переведён. Для этого нужно сначала попытаться определить русскоязычность SyntaxTree.Identifier
- ✓ создать команду, к-рая генерирует заготовки словаря. Пока что переводиться будет малая часть всех модулей, можно и вручную их перечислить. Тем более, что для каждого модуля генератор должен запускаться только один раз.
- ✓ видимо, словари для каждого модуля нужно хранить в отдельных файлах и ещё иметь скрипт, который их склеивает в единый общий словарь
- попробовать, как оно будет выглядеть - сейчас находимся на этом этапе, т.к. в движке перевода нашлись ещё ошибки.
- неясно насчёт общей лексики. Например, есть общие x,y,i. Их, вообще-то можно и оставить в латинице, если это координаты. Но если это объект, то тогда x надо переводить как э.
Re: дневник Яос
Поправил очередные ошибки в движке перевода... День ещё не закончился, однако.