OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Вторник, 19 Март, 2024 13:30

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 87 ]  На страницу 1, 2, 3, 4, 5  След.
Автор Сообщение
 Заголовок сообщения: Oberon-07ru
СообщениеДобавлено: Пятница, 02 Декабрь, 2016 14:00 
Аватара пользователя

Зарегистрирован: Воскресенье, 12 Апрель, 2015 18:12
Сообщения: 1134
Откуда: СССР v2.0 rc 1
Предлагаю вниманию участников форума модифицированный вариант компилятора от Антона Кротова. Описание внутри, хотелось бы конструктивных замечаний. И побольше))


Вложения:
Oberon07_0.7z [495.5 КБ]
Скачиваний: 363
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Oberon-07ru
СообщениеДобавлено: Пятница, 02 Декабрь, 2016 14:32 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1447
Откуда: Киев
Наверно, лучше, чтобы какие-то тезисы были озвучены на форуме - какие изменения и зачем.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Oberon-07ru
СообщениеДобавлено: Пятница, 02 Декабрь, 2016 14:48 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1447
Откуда: Киев
Первое, что бросается в глаза - это кодировка. На мой взгляд, не стоило использовать какую-либо, кроме Utf-8, а досовскую и подавно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Oberon-07ru
СообщениеДобавлено: Пятница, 02 Декабрь, 2016 14:51 
Аватара пользователя

Зарегистрирован: Воскресенье, 12 Апрель, 2015 18:12
Сообщения: 1134
Откуда: СССР v2.0 rc 1
Не возьмусь прям так сходу более-менее красиво дать комментарии, но тем не менее.

На текущий момент практически не существует в РФ (СНГ) полноценных языков программирования, не перегруженных стрёмной семантикой и синтаксисом. Ещё больше языков на выходе кодогенератора которых -- получается нечто стрёмное и непредсказуемое.

Уже много было сказано, что при переводе с английского на русский тратится от 5 до 30% ресурсов мозга на попытку осмыслить а что же это значит? Паронджанов, Ткачёв об этом тут как-то упоминали. И многие представители профильных организаций минпрома СССР были бы, мягко говоря, сильно удивлены узнав, что в РФ ПО разрабатывается не на русском языке.
Как косвенное следствие такого положения вещей -- я не могу назвать даже малоуспешную операционную систему выполненную в РФ. Языковой-семантический барьер!! Напротив, Запад демонстрирует нам Windows, Linux, Unix, даже "Колибри" имеет ноги из скандинавского любительского проекта. Стыдно!!

Оберон интересен тем, что прост. Создать кодогенератор -- это вполне посильная задача, опыт Антона Кротова, Александра Ширяева, парочки человек из-за бугра какбы_намекаэ.
Прикрутить к исходному лексическому анализатору -- я в этом особых проблем не вижу. Создать мета-операционное окружение для такого языка также не должно быть невыполнимой задачей.

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

Кодировка -- это дешёвое решение нормального вывода в консоль русского текста. Времени всегда мало, пришлось выбирать меньшее из двух зол. В рамках ЯП с полноценной поддержкой русского языка -- английский является злом)) С UTF-8 задача сильно усложняется. Лично мнение: реализация расширенного набора литералов в форме UTF-8 крайне неудобна при обработке строк. В крайней случае уникод.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Oberon-07ru
СообщениеДобавлено: Пятница, 02 Декабрь, 2016 15:25 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1447
Откуда: Киев
Поддержка русского в лексическом анализе при чтении нормализованного Utf-8 проста, а большего и не требуется. Просто вырастает количество символов в слове, не более.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Oberon-07ru
СообщениеДобавлено: Пятница, 02 Декабрь, 2016 15:30 
Аватара пользователя

Зарегистрирован: Воскресенье, 12 Апрель, 2015 18:12
Сообщения: 1134
Откуда: СССР v2.0 rc 1
Ответ не верный. В UTF-8 есть несколько видов пробелов, табуляций и всяких разделителей. Ширина литеры может плавать от 1 до 6 байт/
Пруф: "UTF-8 (от англ. Unicode Transformation Format, 8-bit — «формат преобразования Юникода, 8-битный») — одна из общепринятых и стандартизированных кодировок текста, которая позволяет хранить символы Юникода, используя переменное количество байт (от 1 до 6)." https://ru.wikipedia.org/wiki/UTF-8
Таким образом лексический анализатор пришлось бы усложнить на десятки процентов. Это существенно. Речь шла о быстром решении.
Впрочем, компилятор переваривает UTF-8 с исходным текстом на английском языке и русскими комментариями...

Алгоритмы с многобайтовыми кодировками сложны. Тут куда легче использовать кодировку принятую в Веб. Через амперсанд и специализированное описание. Либо, как частное решение -- вводить типизацию для текста в виде управляющих тэгов (метаинформации):
Код:
МОДУЛЬ Тест
(* -*- code:cp1251  -*- *)

...
...
...

КОНЕЦ Тест.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Oberon-07ru
СообщениеДобавлено: Пятница, 02 Декабрь, 2016 15:54 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1447
Откуда: Киев
1. Вы не обязаны в лексическом анализаторе поддерживать разные виды пробелов и т.п, можете выдавать сообщение, что символ недопустим.
2. Для лексического анализа не важно однобайтная кодировка или такая многобайтная, как Utf-8, потому что анализатору не важно, сколько символов видит человек, ему важно идентичность используемых цепочек, что в нормализованном Utf-8 легко обеспечить, а больше и не нужно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Oberon-07ru
СообщениеДобавлено: Пятница, 02 Декабрь, 2016 16:05 
Аватара пользователя

Зарегистрирован: Воскресенье, 12 Апрель, 2015 18:12
Сообщения: 1134
Откуда: СССР v2.0 rc 1
Comdiv писал(а):
1. Вы не обязаны в лексическом анализаторе поддерживать разные виды пробелов и т.п, можете выдавать сообщение, что символ недопустим.

Обязан. Человек -- это обезъяна с гранатой. А если ещё и цейтнот -- это обезьяна с атомной боеголовкой.


Comdiv писал(а):
2. Для лексического анализа не важно однобайтная кодировка или такая многобайтная, как Utf-8, потому что анализатору не важно, сколько символов видит человек, ему важно идентичность используемых цепочек, что в нормализованном Utf-8 легко обеспечить, а больше и не нужно.

Ошибочное утверждение. Тип CHAR -- 8 бит. И для лексического анализа критически важно, сколько в символе байт. Правда, действительно, в независимости от того, сколько видит человек.
Нормализовать UTF-8 -- это дополнительный контракт по языку. Я не помню такого требования в описании языка.
Типизация текста вполне справляется с этой задачей.

Для меня фраза "Надёжность -- превыше всего" поднята на щит.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Oberon-07ru
СообщениеДобавлено: Пятница, 02 Декабрь, 2016 16:46 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1447
Откуда: Киев
prospero78 писал(а):
И для лексического анализа критически важно, сколько в символе байт.

Зачем? Давным-давно я делал лексический анализатор с поддержкой русского в кодировке Utf-8 и не было никаких проблем.
В принципе, если Вы ограничиваете транслятор платформой Windows, то можно и не волноваться по этому поводу, но тогда, пожалуйста, напишите об этом в about2.pdf.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Oberon-07ru
СообщениеДобавлено: Пятница, 02 Декабрь, 2016 17:14 
Аватара пользователя

Зарегистрирован: Воскресенье, 12 Апрель, 2015 18:12
Сообщения: 1134
Откуда: СССР v2.0 rc 1
Comdiv писал(а):
Зачем? Давным-давно я делал лексический анализатор с поддержкой русского в кодировке Utf-8 и не было никаких проблем.
В принципе, если Вы ограничиваете транслятор платформой Windows, то можно и не волноваться по этому поводу, но тогда, пожалуйста, напишите об этом в about2.pdf.

)) Прекрасно. Будьте любезны предоставьте Ваш лексический анализатор в публичное пользование вместо предложенного Антоном Кротовым?!))
Не вижу, каким образом кодировка компилятора не позволит ему работать под другими операционными системами? Неужели локаль отменили?))

Если честно, я ожидал замечаний и предложений более по компилятору, чем по кодировке. Пока кодировка -- это даже не задача второй очереди)))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Oberon-07ru
СообщениеДобавлено: Пятница, 02 Декабрь, 2016 18:27 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3774
Валера, это ты хорошо придумал. А для Линукса как собрать компилятор? А как думаешь, сложно этот компилятор на Блэкбокс перенести?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Oberon-07ru
СообщениеДобавлено: Пятница, 02 Декабрь, 2016 18:50 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3774
prospero78 писал(а):
CHAR -- 8 бит.

Важно, что у Вирта в определении языка не сказано сколько бит должен быть тип CHAR ;)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Oberon-07ru
СообщениеДобавлено: Пятница, 02 Декабрь, 2016 18:56 

Зарегистрирован: Вторник, 30 Июнь, 2009 14:58
Сообщения: 1549
Коллеги, UTF-8 можно парсить полностью забив на его содержание.
Просто считать все отрицательные байты видимыми символами и все.
Даже последовательности байт можно не разбирать.
Пишите лексер так, будто это и не UTF-8 вовсе. Все будет прекрасно работать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Oberon-07ru
СообщениеДобавлено: Пятница, 02 Декабрь, 2016 19:00 
Аватара пользователя

Зарегистрирован: Воскресенье, 12 Апрель, 2015 18:12
Сообщения: 1134
Откуда: СССР v2.0 rc 1
Иван Денисов писал(а):
Валера, это ты хорошо придумал. А для Линукса как собрать компилятор? А как думаешь, сложно этот компилятор на Блэкбокс перенести?


1) Перекодировка даже руками через Geany -- делается. Можно и скриптом рискнуть. Пока не актуально, под линь файлы не собираются, надо прикручивать elf-компоновщик. Поэтому... В лучшем случай wine)) Необходимость именно такой кодировки -- это компромис.

2) Я прикидываю план переноса под ББ. Теоретически, нужно только заменить операции чтения и записи файлов для поддержки английского языка. Если речь идёт о полностью двуязычной поддержке, то надо лезть в компиль КП. Тут я пасую. Залезть могу, но только испорчу (вероятность под 90-95%).

Сегодня немного побеседовал с Ильёй, я согласен и с ним, и с Ф.В., и с Ваней: КП/ББ это оптимальный вариант для практики. Но Оберон подкупает своей простотой. Абстрактных типов не хватает, а вот специфическая привязка процедур к типам в КП... Ну, я бы не расстроился, если бы стиль вызова был чисто процедурным. Я готов пойти на отказ от стиля КП по методам, но не готов отказаться от расширенной типизации КП)))

У Вирта вообще разрядность ни по каким типам не определена, и я этого хода не понимаю. Толи, он разрешает дать привязку под реализацию железа, то ли что?

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

ilovb писал(а):
Пишите лексер так, будто это и не UTF-8 вовсе. Все будет прекрасно работать.

Ох... Примерчик бы для деревенских))

Что же вы так все на кодировку налегли?)))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Oberon-07ru
СообщениеДобавлено: Пятница, 02 Декабрь, 2016 19:05 
Аватара пользователя

Зарегистрирован: Воскресенье, 12 Апрель, 2015 18:12
Сообщения: 1134
Откуда: СССР v2.0 rc 1
В чём проблема UTF-8?

В коде компилятора есть несколько мест, где идёт проверка на допустимые символы. CHAR -- 1 байт. КОНСОЛЬ не понимает другие кодировки, хотя есть способ заменить консоль на другую локаль. Не помню, можно ли сделать это временно. Попробую. Пока ничего не обещаю)))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Oberon-07ru
СообщениеДобавлено: Пятница, 02 Декабрь, 2016 19:07 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1447
Откуда: Киев
prospero78 писал(а):
)) Прекрасно. Будьте любезны предоставьте Ваш лексический анализатор в публичное пользование вместо предложенного Антоном Кротовым?!))

1. Анализатор был сделан в рамках проекта для компании и прав на него у меня нет.
2. Пользы от него всё равно было бы мало, так он был написан на Си и не для Оберона.
3. У меня есть желание сделать подержку русского в моём трансляторе Оберона, но, так как, для меня это не приоритетно, то будет это не скоро, если вообще будет.
4. Иногда достаточно информации, что что-то возможно, чтобы его воплотить.

Цитата:
Не вижу, каким образом кодировка компилятора не позволит ему работать под другими операционными системами? Неужели локаль отменили?))
Где Вы увидели слова "не позволит"?
Как Вы думаете, почему мне бросилась в глаза кодировка? Открываю в редакторе - а там каракули, и сделать так, чтобы с этой кодировкой было удобно работать - непросто.

Цитата:
Если честно, я ожидал замечаний и предложений более по компилятору, чем по кодировке. Пока кодировка -- это даже не задача второй очереди)))
Кодировка стопорит остальное.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Oberon-07ru
СообщениеДобавлено: Пятница, 02 Декабрь, 2016 19:22 
Аватара пользователя

Зарегистрирован: Воскресенье, 12 Апрель, 2015 18:12
Сообщения: 1134
Откуда: СССР v2.0 rc 1
Если ещё один плюс будет в карму кодировки -- ну так и быть. Изволю напрячь мозг)))

https://github.com/prospero78/Oberon07ru


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Oberon-07ru
СообщениеДобавлено: Пятница, 02 Декабрь, 2016 19:24 
Аватара пользователя

Зарегистрирован: Среда, 22 Апрель, 2015 23:51
Сообщения: 248
Откуда: г. Рига, Латвийская ССР
Замечательный материал.
Кодировка должна интересовать нас не в первую очередь. Перед нами кросплатформенный компилятор Оберона-07, написанный сам на себе. Что ещё нужно? Теперь любой может его редактировать и улучшать, вливаться в работу.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Oberon-07ru
СообщениеДобавлено: Пятница, 02 Декабрь, 2016 21:56 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1428
"ДЕК" это наверное декабрь. А вот что такое "ИЛЕСЛ"


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Oberon-07ru
СообщениеДобавлено: Пятница, 02 Декабрь, 2016 22:24 
Аватара пользователя

Зарегистрирован: Воскресенье, 12 Апрель, 2015 18:12
Сообщения: 1134
Откуда: СССР v2.0 rc 1
Trurl писал(а):
"ДЕК" это наверное декабрь. А вот что такое "ИЛЕСЛ"

))) Декабрь -- это ДКБ, а ДЕК -- это антипод ИНК. Кстати, ВОТ ОНО!! Полезли смыслы по Ткачёву!! ИЛЕСЛ -- ИЛИ ЕСЛИ (ELSIF). Кстати, в about2 было всё написано))


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 87 ]  На страницу 1, 2, 3, 4, 5  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB