дневник Яос

Операционная система, написанная на языке Оберон и проект её перевода на русский язык. Только технические вопросы.
БудДен
Сообщения: 882
Зарегистрирован: 07.10.18 14:01

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

БудДен
Сообщения: 882
Зарегистрирован: 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; 
Здесь, конечно, ещё пахать и пахать. Самое неприятное - это "на" вместо "до" в цикле, т.к. в английском это одно слово "то", а в русском - два. Остальное - сохраняется лишь небольшая часть всех комментариев, а также пробелы "нормализуются", в результате чего исходное форматирование документа утрачивается. Чтобы это исправить, нужна довольно массированная переработка всего кода разбора. Я её начал, но до конца далеко.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ответить