дневник Яос
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: дневник Яос
Доперелисовал компилятор, теперь парсер падает. Это, в принципе, более-менее хорошо, не считая того, что я забыл, что в нём последнее менял. Ну ничего, разберёмся. Последнее время стало как-то некогда.
- Лис [Вежливый]
- Сообщения: 359
- Зарегистрирован: 08.10.18 13:32
Re: дневник Яос
Да!Доперелисовал
Re: дневник Яос
Вот теперь точно доперелисовал. Смысл "лисования" состоит в том, что для (почти) каждого модуля Fox* создан параллельный ему Lis*, чтобы был один компилятор в работе и один - на этапе переделки. Правда, перелисованный компилятор пока почти не работает, но зато заложена методическая основа для дальнейшего движения.