OberonCore https://forum.oberoncore.ru/ |
|
Несерьёзный bag в компиляторе BB https://forum.oberoncore.ru/viewtopic.php?f=1&t=1195 |
Страница 1 из 1 |
Автор: | igor [ Воскресенье, 12 Октябрь, 2008 12:28 ] |
Заголовок сообщения: | Несерьёзный bag в компиляторе BB |
Привет всем! Давно с интересом слежу за обсуждениями в данном сообществе. Приверженцем швейцарской школы программирования я стал задолго до того, как познакомился с ней ![]() Код: CONST s1 = 'q'; (* LEN(s1) приводит к ошибке! *) s2 = 'q' + 0X; (* LEN(s2) не приводит к ошибке *) С точки зрения языка обявления констант s1 и s2 равнозначны. Но компилятор в BB, к сожалению, считает иначе ![]() В случае объявления литерной цепочки длины 0, 2 или более, указанная "особенность" не проявляется. |
Автор: | PGR [ Воскресенье, 12 Октябрь, 2008 12:53 ] |
Заголовок сообщения: | Re: Несерьёзный bag в компиляторе BB |
В BlackBox 1.6 это уже исправлено. |
Автор: | AVC [ Воскресенье, 12 Октябрь, 2008 16:03 ] |
Заголовок сообщения: | Re: Несерьёзный bag в компиляторе BB |
Игорь Лоскутов писал(а): Это мой первый пост на данном форуме. Добро пожаловать! ![]() |
Автор: | igor [ Воскресенье, 12 Октябрь, 2008 16:18 ] |
Заголовок сообщения: | Re: Несерьёзный bag в компиляторе BB |
AVC писал(а): Игорь Лоскутов писал(а): Это мой первый пост на данном форуме. Добро пожаловать! ![]() Спасибо! Всегда приятно поговорить с умными людьми ![]() |
Автор: | А.П. [ Понедельник, 13 Октябрь, 2008 05:31 ] |
Заголовок сообщения: | Re: Несерьёзный bag в компиляторе BB |
Здравствуйте, Игорь! Предлагаю познакомиться при личной встрече. Например, на ф-те информатики ТГУ в четверг или в субботу (у меня 3-я пара "Практикум на ЭВМ" 12:25-14:00, ауд.103-б). Я думаю, общие интересы в области прог-я на КП/ББ у нас есть. |
Автор: | Александр Ильин [ Понедельник, 13 Октябрь, 2008 06:28 ] |
Заголовок сообщения: | Re: Несерьёзный bag в компиляторе BB |
Игорь Лоскутов писал(а): Привет всем! Давно с интересом слежу за обсуждениями в данном сообществе. Приверженцем швейцарской школы программирования я стал задолго до того, как познакомился с ней :) . Это мой первый пост на данном форуме. Привет! Рад видеть ещё одного томича : ) Поддерживаю предложение А.П. о встрече, чаю попить никогда не помешает.Игорь Лоскутов писал(а): Код: CONST s1 = 'q'; (* LEN(s1) приводит к ошибке! *) s2 = 'q' + 0X; (* LEN(s2) не приводит к ошибке *) С точки зрения языка обявления констант s1 и s2 равнозначны. Но компилятор в BB, к сожалению, считает иначе :( |
Автор: | igor [ Понедельник, 13 Октябрь, 2008 10:11 ] |
Заголовок сообщения: | Re: Несерьёзный bag в компиляторе BB |
А.П. писал(а): Предлагаю познакомиться при личной встрече Александр Ильин писал(а): Поддерживаю предложение А.П. о встрече Предложение принимается. Вокруг так много людей, а поговорить о наболевшем практически не с кем ![]() Oberon-community имеет широкую географию. Приятно было увидеть сразу несколько томичей. Ещё приятнее пополнить эти ряды. Александр Ильин писал(а): Я так понимаю, что в первом случае константа имеет тип CHAR, а во втором случае ARRAY OF CHAR. Значение LEN(CHAR) не определено в описании языка, так что по-хорошему компилятор должен выдавать ошибку. Вы правы, Александр, в первом случае константа имеет тип CHAR. Но от себя добавлю, что должна была бы иметь тип ARRAY OF CHAR, точнее тип цепочек литер. Строки в КП - хороший пример того, как тип переменной может не совпадть с типом значения, хранящегося в этой переменной. И насчёт переменных, здесь я не оговорился, потому что строковые константы в КП всегда реализованы как "переменные только для чтения" и никогда не размещаются компилятором непосредственно в коде (immediate data), в отличие от констант других типов. В пользу того, что это всё-таки ошибка говорит тот факт, что в v1.6 она исправлена, как справедливо заметил PGR. Я кажется понял механизм того, как возникла эта ошибка. Разработчики, помятуя о том, что Цитата: Цепочка длины 1 может использоваться всюду, где разрешена литерная константа, и наоборот. привели цепочки длины один в соответствие с литерной константой. А нужно было наоборот: привести литерные константы в соответствие с литерными цепочками длины 1. А это, как мы видим, не одно и то же. |
Автор: | igor [ Вторник, 29 Сентябрь, 2009 18:28 ] |
Заголовок сообщения: | Re: Несерьёзный bag в компиляторе BB |
Продолжаем искать баги в компиляторе ![]() Аттрибуты ABSTRACT, LIMITED, EMPTY и EXTENSIBLE помечены в сообщении как ключевые слова, но реализованы в Блэкбокс как предопределённые идентификаторы (см. DevCPT, секция инициализации). |
Автор: | Борис Рюмшин [ Вторник, 29 Сентябрь, 2009 19:41 ] |
Заголовок сообщения: | Re: Несерьёзный bag в компиляторе BB |
Это фича. ![]() Так просто быстрее компилятор расширить видимо было. |
Автор: | Info21 [ Вторник, 29 Сентябрь, 2009 19:53 ] |
Заголовок сообщения: | Re: Несерьёзный bag в компиляторе BB |
igor писал(а): Аттрибуты ABSTRACT, LIMITED, EMPTY и EXTENSIBLE помечены в сообщении как ключевые слова, но реализованы в Блэкбокс как предопределённые идентификаторы (см. DevCPT, секция инициализации). Кстати, где это проявляется? в сообщениях компилятора? и как Вы обнаружили -- простым рассматриванием?
|
Автор: | igor [ Вторник, 29 Сентябрь, 2009 19:56 ] |
Заголовок сообщения: | Re: Несерьёзный bag в компиляторе BB |
Но знать об этой фичи никому не помешает ![]() |
Автор: | igor [ Вторник, 29 Сентябрь, 2009 20:02 ] |
Заголовок сообщения: | Re: Несерьёзный bag в компиляторе BB |
Info21 писал(а): Кстати, где это проявляется? в сообщениях компилятора? и как Вы обнаружили -- простым рассматриванием? Обнаружил случайно, просматривая исходники компилятора.Проявляется, например, так. Следующий код компилятор проглатывает не поморщившись: Код: TYPE EMPTY = INTEGER; А должен выдавать ошибку!
|
Автор: | Info21 [ Вторник, 29 Сентябрь, 2009 20:16 ] |
Заголовок сообщения: | Re: Несерьёзный bag в компиляторе BB |
igor писал(а): Info21 писал(а): ... простым рассматриванием? Обнаружил случайно, просматривая исходники компилятора.Я спросил для статистики: все настоящие открытия деляются случайно в процессе пристального рассматривания. igor писал(а): А должен выдавать ошибку! Помнится, студент зачем-то использовал какие-то из all-cap слов в качестве идентификаторов, и там лезли странные ошибки. Но пристально рассмотреть никто не догадался.Эффект Вавилова-Черенкова тоже видели две (кажется) группы в мире до Черенкова, но отмахнулись типа мало ли, мусор. И только Черенков оказался занудой и стал проверять. И получил Нобеля ![]() |
Автор: | igor [ Вторник, 29 Сентябрь, 2009 20:25 ] |
Заголовок сообщения: | Re: Несерьёзный bag в компиляторе BB |
Ну, на Нобеля я не претендую ![]() Кстати, помнится я читал статью Никлауса Вирта, в которой он сетовал, что поздно понял, что FALSE и TRUE следовало бы сделать ключевыми словами. Даже пример приводил, приводящий к абсурду. Вот ссылочку сейчас дать затрудняюсь, но думаю, что все её читали. |
Автор: | Info21 [ Вторник, 29 Сентябрь, 2009 21:41 ] |
Заголовок сообщения: | Re: Несерьёзный bag в компиляторе BB |
igor писал(а): Ну, на Нобеля я не претендую Тут дело не в претензии, а в хороших привычках. А дальше уж как повезет ![]() ![]() |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |