Ada_Ru форум

Обсуждение языка Ада

ALR сборка 3

Оставить новое сообщение

Сообщения

Oleksandr Havva
ALR сборка 3
2004-05-25 06:31:06

hi,

Сабж, собс-но, уже некоторое время в доступе:

http://www.prz.rzeszow.pl/ada/ru/GNAT-3.15p_rpms_RU.html

Не анонсировал, поскольку на сайте присутствуют

несколько мелких ошибок, которые пока не исправлены

(когда подправят - не знаю, хост не под моим управлением),

но тащить и пользовать это дело уже можно.

Отдельное спасибо Г.Сисюку и Ю.Королеву

за содействие в "добыче" хостинга

и за... CD-net (аналог floppy-net) :)

А также, ес-сно, польским коллегам,

собс-но, за хостинг.

Несколько технических замечаний о самой сборке:

1) По тестам ACATS не проходят только несколько тестов

приложения D (Annex D). Проблема обусловлена

обработкой сигналов в "родных" Linux-threads.

2) Компилятор распознает символы кириллицы

в идентификаторах программы. При указании

опции "-gnatir" - в кодировке KOI8-R;

при указании опции "-gnatiu" - в кодировке KOI8-U.

Таким образом, знаменитое "Hello World!!!"

можно организовать по русски:

--------------------------------------

with Ada.Text_IO; use Ada.Text_IO;

procedure Здравствуй_Мир is

begin

Put_Line ("Здравствуй Мир!!!");

end Здравствуй_Мир;

--------------------------------------

и, сохранив это в файле "здравствуй_мир.adb"

собрать это хозяйство в исполняемую программу

командой:

gnatmake -gnatir здравствуй_мир.adb

3) Сборка осуществлялась под RedHat-7.2,

однако предполагаю, что оно будет работать

и на более новых дистрибутивах Linux

(точно знаю, что предыдущая сборка успешно

работала под SuSe-9)

4) GtkAda-1.x.x и GtkAda-2.x.x "живут" совместно

и не "деруться", т.е. можно без проблем

одновременно использовать и старый GVD и GPS.

5) Русифицировать "морду" GPS у меня не получилось :(

(че-то я не допонял как GtkAda2 работает с локализацией).

Alex

On Tue, May 25, 2004 at 09:31:06AM +0300, Oleksandr Havva wrote:

2) Компилятор распознает символы кириллицы

в идентификаторах программы. При указании

 

Простите, а какже ARM?

Например 2.1 (7-9):

7 identifier_letter

upper_case_identifier_letter | lower_case_identifier_letter

8 upper_case_identifier_letter

Any character of Row 00 of ISO 10646 BMP whose name begins `` Latin Capital Letter''.

 

9 lower_case_identifier_letter

Any character of Row 00 of ISO 10646 BMP whose name begins `` Latin Small Letter''.

 

Или русские буквы теперь входят в "Row 00 of ISO 10646 BMP"?

 

--

Maxim Reznik

hi,

Maxim Reznik wrote:

On Tue, May 25, 2004 at 09:31:06AM +0300, Oleksandr Havva wrote:

2) Компилятор распознает символы кириллицы

в идентификаторах программы. При указании

>

Простите, а какже ARM?

Например 2.1 (7-9):

7 identifier_letter

upper_case_identifier_letter | lower_case_identifier_letter

>

8 upper_case_identifier_letter

Any character of Row 00 of ISO 10646 BMP whose name begins ``

Latin Capital Letter''.

>

9 lower_case_identifier_letter

Any character of Row 00 of ISO 10646 BMP whose name begins ``

Latin Small Letter''.

ГЫ-ГЫ...

Дык в том то и фишка, что в этой сборке GNAT

соответствующим образом доработан напильником.

Посему, при указании соответствующих опций

он _правильно_ обрабатывает Up/Low- case для

кириллицы в кодировках KOI8-R/U.

"Чистый" ACT-овский вариант 3.15p правильно обрабатывает

кириллицу _только_ в кодировке ISO-8859-5,

благодаря стараниям Годунко.

Или русские буквы теперь входят в "Row 00 of ISO 10646 BMP"?

А они разве туда не входили??? 8-( )

Вообще, согласно RM-95, поддержка каких-либо

национальных кодировок - опциональна.

Обязательной является только поддержка Latin-1.

ISO-8859-5, KOI8-R/U - это _национальные_ восьмибитные кодировки. Вот, собс-но, эта опциональность и добавлена к GNAT,

т.е. хотите - юзайте, хотите - нет.

Я уже не один раз сталкивался с французскими/немецкими/???

идентификаторами в исходных текстах. Вот мне и прикольно - как

будут зрить забугряные товарисчи на исходники в которых

идентификаторы в кириллице ...ежели конечно кто-нить

догадается такие поделки в public выкладывать :)

Препятствия ведь теперь нет, KOI8 - это фактически родная

кодировка для "русского" Linux.

Alex

On Thu, May 27, 2004 at 06:35:02PM +0300, Oleksandr Havva wrote:

Или русские буквы теперь входят в "Row 00 of ISO 10646 BMP"?

 

А они разве туда не входили??? 8-( )

 

Вообще, согласно RM-95, поддержка каких-либо

национальных кодировок - опциональна.

Обязательной является только поддержка Latin-1.

 

Я думал "Row 00 of ISO 10646 BMP" это и есть Latin-1.

Что-то не так проче, видимо.

Чтож теперь идти юникод стандарт читать?

 

--

Maxim Reznik

On Thu, May 27, 2004 at 06:52:00PM +0300, Maxim Reznik wrote:

On Thu, May 27, 2004 at 06:35:02PM +0300, Oleksandr Havva wrote:

Или русские буквы теперь входят в "Row 00 of ISO 10646 BMP"?

 

А они разве туда не входили??? 8-( )

 

Вообще, согласно RM-95, поддержка каких-либо

национальных кодировок - опциональна.

Обязательной является только поддержка Latin-1.

 

Я думал "Row 00 of ISO 10646 BMP" это и есть Latin-1.

 

Вот в глосарии http://www.unicode.org/glossary/ что пишут:

 

Row. A range of 256 contiguous Unicode code points, where

the first code point is an integer multiple of 256. Two

code points are in the same row if they share all but the

last two hexadecimal digits.

 

Это разве не значит что Row 00 - это коды от

U+0000 до U+00FF - т.е. Latin-1?

 

А кирилицы в Latin-1 нет, (наверное???)

 

--

Максим

hi,

Maxim Reznik wrote:

On Thu, May 27, 2004 at 06:35:02PM +0300, Oleksandr Havva wrote:

Или русские буквы теперь входят в "Row 00 of ISO 10646 BMP"?

>

А они разве туда не входили??? 8-( )

>

Вообще, согласно RM-95, поддержка каких-либо

национальных кодировок - опциональна.

Обязательной является только поддержка Latin-1.

>

Я думал "Row 00 of ISO 10646 BMP" это и есть Latin-1.

Что-то не так проче, видимо.

oops...

таки да, "Row 00 of ISO 10646 BMP" это - Latin-1.

Это то, что _должно_ поддерживаться Ада-системой

в обязательном порядке. Остальные кодировки - опциональны,

т.е. их присутствие/отсутствие - не есть нарушение Ада-стандарта.

Я подразумевал, что кириллица входит в "ISO 10646 BMP"

("Row 00 of", так сказать, "мимо ушей" пропустил - sorry).

Alex

Oleksandr Havva wrote:

 

таки да, "Row 00 of ISO 10646 BMP" это - Latin-1.

Это то, что _должно_ поддерживаться Ада-системой

в обязательном порядке. Остальные кодировки - опциональны,

т.е. их присутствие/отсутствие - не есть нарушение Ада-стандарта.

 

Только при явном указании в документации и смене семантики некоторых пакетов ;-) В результате в текущем GNAT-е _отсутствует_ реальная положенная поддержка кириллицы.

 

Кстати, я когда-то делал примочку для GNAT-а, реализующую (частично) AI-285, в части Wide_Wide_Character/Wide_Wide_String. Может кто желает продолжить дело и прицепить её к GCC/GNAT? В принципе есть идеи и реализации остальных примочек.

 

 

-- Vadim Godunko

hi,

Vadim Godunko wrote:

Oleksandr Havva wrote:

>

таки да, "Row 00 of ISO 10646 BMP" это - Latin-1.

Это то, что _должно_ поддерживаться Ада-системой

в обязательном порядке. Остальные кодировки - опциональны,

т.е. их присутствие/отсутствие - не есть нарушение Ада-стандарта. >

Только при явном указании в документации и смене семантики некоторых пакетов ;-) В результате в текущем GNAT-е _отсутствует_ реальная положенная поддержка кириллицы.

exactly!

Ada.Characters._???_, Ada.Characters.Handling, Ada.Strings.Maps,... etc.

Однако, я этого до конца не делал, ты, кажись, тоже достижениями на эту тему не хвастался. Фактически, мы только "подпилили"

в правильном месте исходники gnat1.

Кстати, я когда-то делал примочку для GNAT-а, реализующую (частично) AI-285, в части Wide_Wide_Character/Wide_Wide_String. Может кто желает продолжить дело и прицепить её к GCC/GNAT? В принципе есть идеи и реализации остальных примочек.

э-э-э... Склероз, млин :(

Ты со мной этими патчиками делился или это чего-то новое?

Ежели делился, то оно уже в ALR-3. По поддержке кириллицы

я помню только "довески" для ASIS.

Alex

Oleksandr Havva wrote:

 

Кстати, я когда-то делал примочку для GNAT-а, реализующую (частично)

AI-285, в части Wide_Wide_Character/Wide_Wide_String. Может кто желает

продолжить дело и прицепить её к GCC/GNAT? В принципе есть идеи и

реализации остальных примочек.

 

Ты со мной этими патчиками делился или это чего-то новое?

Должен был-бы. Но точно не помню. Проверить это дело достаточно просто, попробуй скомпилить модуль такого вида:

 

package A is

 

B : Wide_Wide_Character;

 

end A;

 

если скомпилится - то усё уже интегрировано. А вот если нет... :(

 

Ежели делился, то оно уже в ALR-3. По поддержке кириллицы

я помню только "довески" для ASIS.

 

И они попали в текущую сборку?

 

Кстати, по поводу этой доработки вопрос к представителю корпоративных интересов. Какова его судьба? Ведь TN оно имеет, может его уже интегрировали? И в связи с тем, что на SourceForge появился GNAT-ASIS (ASIS для GCC/GNAT-3.x) может стоит его туда отправить?

 

 

-- Vadim Godunko

Maxim Reznik wrote:

On Thu, May 27, 2004 at 07:50:25PM +0300, Oleksandr Havva wrote:

 

Я думал "Row 00 of ISO 10646 BMP" это и есть Latin-1.

Что-то не так проче, видимо.

 

oops...

 

таки да, "Row 00 of ISO 10646 BMP" это - Latin-1.

Это то, что _должно_ поддерживаться Ада-системой

в обязательном порядке. Остальные кодировки - опциональны,

т.е. их присутствие/отсутствие - не есть нарушение Ада-стандарта.

 

 

 

Кодировки - кодировками, но символами идентификатора могут

быть ТОЛЬКО символы из Latin-1. Так написанно в ARM.

Хоть ASCII, хоть EBCDIC, даже KOI8-U,

но руских букв в идентификаторах не может быть.

 

Если, к примеру, компилятор понимает KOI8-R, то

ты можешь гордо писать руские буквы в коментариях

и в Wide_String литералах, и все! Заставив компилятор понимать ВСЕ буквы из

ISO-8859-5 и KOI8-R вы просто сломали его,

он тепрь не компилятор Ады :-)

Я так понимаю.

 

Нет, не так. 2.1 (16), 2.3 (6).

 

 

-- Vadim Godunko

On Thu, May 27, 2004 at 07:50:25PM +0300, Oleksandr Havva wrote:

 

Я думал "Row 00 of ISO 10646 BMP" это и есть Latin-1.

Что-то не так проче, видимо.

 

oops...

 

таки да, "Row 00 of ISO 10646 BMP" это - Latin-1.

Это то, что _должно_ поддерживаться Ада-системой

в обязательном порядке. Остальные кодировки - опциональны,

т.е. их присутствие/отсутствие - не есть нарушение Ада-стандарта.

 

Кодировки - кодировками, но символами идентификатора могут

быть ТОЛЬКО символы из Latin-1. Так написанно в ARM.

Хоть ASCII, хоть EBCDIC, даже KOI8-U,

но руских букв в идентификаторах не может быть.

 

Если, к примеру, компилятор понимает KOI8-R, то

ты можешь гордо писать руские буквы в коментариях

и в Wide_String литералах, и все!

Заставив компилятор понимать ВСЕ буквы из

ISO-8859-5 и KOI8-R вы просто сломали его,

он тепрь не компилятор Ады :-)

Я так понимаю.

 

--

Максим Резник

Maxim Reznik wrote:

 

Кодировки - кодировками, но символами идентификатора могут

быть ТОЛЬКО символы из Latin-1. Так написанно в ARM.

Хоть ASCII, хоть EBCDIC, даже KOI8-U,

но руских букв в идентификаторах не может быть.

 

До выхода в свет Ada 0Y. Если AI-285 в неё войдёт (а на это указывают все признаки), то Ada (как и Java и C++) будет использовать семантику (слегка переделанную в части подчеркиваний) идентификаторов, определенную Unicode.

 

 

-- Vadim Godunko

On Fri, May 28, 2004 at 04:25:28PM +0400, Vadim Godunko wrote:

он тепрь не компилятор Ады :-)

Я так понимаю.

 

Нет, не так. 2.1 (16), 2.3 (6).

 

О! Вадим, Спасибо!

Теперь вижу - был не прав.

 

 

--

Vadim Godunko

 

--

Максим Резник

hi,

Vadim Godunko wrote:

Ты со мной этими патчиками делился или это чего-то новое?

Должен был-бы. Но точно не помню. Проверить это дело достаточно просто, попробуй скомпилить модуль такого вида:

>

package A is

>

B : Wide_Wide_Character;

>

end A;

>

если скомпилится - то усё уже интегрировано. А вот если нет... :(

А вот и "нет такой буквы в этом слове" ((С) известно чей) :(

Ежели делился, то оно уже в ALR-3. По поддержке кириллицы

я помню только "довески" для ASIS.

>

И они попали в текущую сборку?

Ну дык... ес-сно! По мере поступления "воткнуты" в систему сборки и... я уже толком не помню чего и в каких файлах они меняли.

А ты че, думал что я их под подушкой спрячу? ;)

Alex

Vadim Godunko wrote:

Maxim Reznik wrote:

Кодировки - кодировками, но символами идентификатора могут

быть ТОЛЬКО символы из Latin-1. Так написанно в ARM.

Хоть ASCII, хоть EBCDIC, даже KOI8-U,

но руских букв в идентификаторах не может быть.

Серьезно?

В любом языке программирования есть понятие

ключевых (зарезервированных) слов, которые,

так уж сложилось, - английские, а вот идентификаторы -

это всего лишь группа алфавитно-цифровых символов,

где символы кириллицы и латиницы абсолютно равноправны.

Это с точки зрения идеологии языков программирования.

Другое дело, что мы уже привыкли к тому, что

кириллица в идентификаторах не поддерживается

по определению (надеюсь понятно почему).

>

Если, к примеру, компилятор понимает KOI8-R, то

ты можешь гордо писать руские буквы в коментариях

Комментарии _любой_ компилятор тупо игнорирует,

пока не обнаружится соответствующий признак

завершения комментария :)

и в Wide_String литералах, и все!

Заставив компилятор понимать ВСЕ буквы из

ISO-8859-5 и KOI8-R

и еще KOI8-U, чтоб уж совсем навредничать :)

вы просто сломали его,

Нет, мы обеспечили его дополнительной функциональностью!

>

он тепрь не компилятор Ады :-)

Я так понимаю.

>

Нет, не так. 2.1 (16), 2.3 (6).

>

--

Vadim Godunko

Вот тебе , собс-но, и ответ :)

Alex

Новое сообщение:
Страницы: 1

Чтобы оставить новое сообщение необходимо Зарегистрироваться и Войти