~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ 7427A730FB3813717467BED4492276F5__1701812100 ✰
Заголовок документа оригинал.:
✰ ALGOL 68RS - Wikipedia ✰
Заголовок документа перевод.:
✰ АЛГОЛ 68RS — Википедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/ALGOL_68RS ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/74/f5/7427a730fb3813717467bed4492276f5.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/74/f5/7427a730fb3813717467bed4492276f5__translat.html ✰
Дата и время сохранения документа:
✰ 02.07.2024 03:13:19 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 6 December 2023, at 00:35 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

АЛГОЛ 68RS — Википедия Jump to content

АЛГОЛ 68RS

Из Википедии, бесплатной энциклопедии

АЛГОЛ 68RS
Оригинальный автор(ы) И.Ф. Карри, Джей Ди Моррисон
Разработчики) Королевские сигналы и радарное учреждение
Начальная версия август 1977 года ; 46 лет назад ( 1977-08 )
Стабильная версия
алгол68ток 1.14 / 25 августа 2012 г .; 11 лет назад ( 25 августа 2012 )
Написано в АЛГОЛ 68
Операционная система СМС
Платформа Серия ICL 2900 , Мультики , VAX
Доступно в Английский
Тип Составитель , переводчик
Лицензия Бесплатное ПО , общественное достояние (части)
Веб-сайт Алгол68 .sourceforge .сеть

АЛГОЛ 68RS — второй АЛГОЛА 68, компилятор написанный И. Ф. Карри и Дж. Д. Моррисоном в Королевском институте сигналов и радиолокации (RSRE). [1] В отличие от более раннего ALGOL 68-R , он был разработан как переносимый и реализовал язык пересмотренного отчета.

Версии ALGOL 68RS были написаны для ICL 2900 Series , Multics и VAX под управлением VMS . [2] [3]

Впоследствии части этого компилятора были выпущены в открытый доступ в качестве транслятора с АЛГОЛа 68 на C , как часть общедоступного выпуска языка описания аппаратного обеспечения ELLA , также выпущенного RSRE.

История [ править ]

Хотя компилятор ALGOL 68-R , написанный И. Ф. Карри, Дж. Д. Моррисоном и С. Г. Бондом , имел большой успех, у него были две основные проблемы: он был написан для почти устаревшего компьютера ICL 1900 и в нем реализован выход. актуальная версия языка, поскольку она была выпущена до того, как стал доступен пересмотренный отчет об Алголе 68.

RSRE требовался новый компилятор для различных внутренних проектов, поэтому команда Карри и Моррисона написала новый компилятор, предназначенный для межплатформенной переносимости программного обеспечения между машинами. Компилятор занимался анализом АЛГОЛА 68, создавая промежуточный язык высокого уровня, известный как язык , который затем транслятором компилируется в код машинный потоковый . Компилятору нужно было знать только размеры различных типов объектных машинных данных и доступную кодировку (набор) символов.

Компилятор был написан на ALGOL 68, первоначально загруженный с использованием компилятора ALGOL 68-R.

Команда из двух программистов из вычислительной службы Оксфордского университета написала генератор кода для серии ICL 2900. [4] Мартин Томас из Регионального компьютерного центра Юго-Западных университетов (SWURCC) организовал спонсирование этой системы компанией International Computers Limited (ICL) и ее продажу в качестве официального продукта ICL. [5]

Позже Объединенный компьютерный центр университетов Эйвона , крупный пользователь Multics , попросил команду SWURCC создать Multics-версию АЛГОЛА 68RS. версия для Digital Equipment Corporation (DEC) компьютера VAX Также была написана .

В конце концов команда SWURCC сформировала компанию Praxis , первоначально поддерживающую версию ALGOL 68RS для Multics.

RSRE также использовала компилятор ALGOL 68RS для внутренних проектов, включая машину Flex и язык проектирования аппаратного обеспечения ELLA. Когда было решено сделать ELLA бесплатным, компании Praxis было поручено написать АЛГОЛ 68 в C транслятор под названием ctrans на основе компилятора АЛГОЛ 68RS.

Ограничения в компилируемом языке [ править ]

Как и более ранний компилятор ALGOL 68-R, ALGOL 68RS был однопроходным компилятором , что требовало некоторых ограничений на компилируемый язык.

Декларация перед использованием [ править ]

Программа АЛГОЛ 68:

PROC  четный = (  число INT  )  BOOL  : (число = 0 |  ИСТИНА  | нечетное (  ABS  (число - 1))); 
  PROC  нечетное = (  число INT  )  BOOL  : (число = 0 |  ЛОЖЬ  | четное (  ABS  (число - 1))); 
 

придется переписать так:

PROC  (  INT  )  BOOL  нечетный; 
  PROC  четный = (  число INT  )  BOOL  : (число = 0 |  ИСТИНА  | нечетное (  ABS  (число - 1))); 
  нечетное := (  число INT  )  BOOL  : (число = 0 |  ЛОЖЬ  | четное (  ABS  (число - 1))); 
 

Чтобы разрешить рекурсивное объявление режимов (типов), использовалось специальное объявление режима -заглушки , чтобы сообщить компилятору, что предстоящий символ является режимом, а не оператором:

РЕЖИМ   Б  , 
       A  =  СТРУКТУРА  (  REF   B  b), 
       B  = [1:10]  ССЫЛКА   A  ; 
 

Параллельная обработка [ править ]

Как и в АЛГОЛе 68-R, операторы PAR и режим SEMA со связанными с ним UP , DOWN и LEVEL были опущены.

Расширения Алгола 68 [ править ]

Выпрямление [ править ]

Одна из основных ошибок АЛГОЛа 68 заключается в том, что невозможно написать стандартные процедуры передачи ( ввода/вывода ) в чистом АЛГОЛе 68. Процедура печати принимает, например, массив элементов для печати в любом режиме и с помощью процесса с именем выпрямление преобразует их в простые значения, которые можно распечатать. Например:

STRUCT  (  INT  a,  REAL  b) c := ...; 

  печать (с);   { волшебным образом преобразуется в print ((a  OF  c, b  OF  c));   } 
 

Авторы АЛГОЛА 68RS решили сделать выпрямление частью языка. Режим STRAIGHT напоминает массив , но имеет особую особенность: элементы можно перевести в режим STRAIGHT , если их компоненты можно привести к этому режиму. Например:

STRUCT  (  INT  a,  REAL  b) c; 

  ПРЯМОЙ   СОЮЗ  (  INT  ,  REAL  ) z = c; 
 

Оба поля C могут быть приведены к UNION ( INT , REAL ), поэтому к полю «a OF c» можно получить доступ как к z[1], а к «b OF c» — это z[2].

Стандартную процедуру печати теперь можно объявить так:

MODE   PRINTMODE  =  UNION  (  INT  ,  REAL  ,...  STRAIGHT   PRINTMODE  ); 
  PROC  print = ([]  PRINTMODE  аргументы  ) VOID  : ...; 
 

Эффективная обработка массивов [ править ]

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

Например:

[5:23, -7:7]  INT  a;   { двумерный массив } 
  REF  [,]  INT  b = a [ 6:21, 0:3 ] { фрагмент a } 
  REF  []  INT  c = a [5] {только одна строка a } 
 

Хотя компилятор приложил все усилия для создания оптимального кода для всех случаев, считалось, что добавление некоторых более простых средств позволит в некоторых случаях улучшить код. С этой целью в АЛГОЛ 68RS были включены индексируемые структуры (i-структуры), векторы и оператор FORALL .

Индексируемые структуры [ править ]

АЛГОЛ 68 уже включал структуры фиксированной длины для эффективной обработки символов и битовых данных на словами машинах со , режимы BYTES и BITS . Переменная BYTES содержала одно машинное слово символов, переменная BITS содержала биты одного машинного слова.

АЛГОЛ 68RS обобщил эти идеи. Переменная STRUCT 4 CHAR содержит ровно 4 символа. Размер был частью типажа. В большинстве систем ALGOL 68RS режим BYTES был эквивалентен STRUCT 4 CHAR .

БАЙТЫ   РЕЖИМА  =  СТРУКТУРА  4  СИМВОЛА  ; 
  OP   ELEM  = (  INT  индекс  , BYTES  значение)  CHAR  : значение[индекс]; 
  ... 
  БАЙТЫ  b = «abcd»; 
  ... 
  печать (2  ЭЛЕМ  б); 
 

Компилятор ALGOL 68RS скомпилирует любую строковую константу в соответствующий STRUCT n CHAR .

В контекстах, где требовался вектор или массив, i-структуру можно было расширить до соответствующего типа вектора или массива.

Векторы [ править ]

ВЕКТОР . — это упрощенный массив, имеющий только одно измерение и нижнюю границу, фиксированную на уровне 1

ВЕКТОР  [4]  INT  a;   { аналогично [1:4]  INT  a;   } 
 

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

Заявление FORALL [ править ]

Оператор FORALL позволяет эффективно перемещаться по элементам массива.

[12]  INT  a := ...; 

  ФОРАЛЛ  ха  ИН  а 
  ДЕЛАТЬ  ха := ха * 2 
  ОД 

xa будет ссылкой на каждый элемент a по очереди. FORALL может проходить через несколько массивов параллельно и управляться предложением WHILE :

[12]  INT  а, б; 
  ... 
  ФОРАЛЛ  ха  ИН  а, 
         хб  В  б 
  ПОКА  ха > xb 
  ДЕЛАТЬ 
      е(ха, хб) 
  ОД 

Раздельная компиляция [ править ]

АЛГОЛ 68RS предоставил механизм для создания библиотек , аналогичный отдельным средствам компиляции АЛГОЛ 68-R , и механизм для сборки программ нисходящим способом, аналогичный механизмам АЛГОЛ 68C .

Модули деклараций [ править ]

Библиотеки в ALGOL 68RS написаны с использованием модулей объявлений, которые состоят из последовательности объявлений MODE , переменных, операторов и процедур, за которыми следует список сохранения , который определяет, какие объявления видны другим сегментам.

Затем пользователь библиотеки добавляет USE- заголовок, который указывает компилятору сделать символы одной или нескольких библиотек объявлений доступными для программы.

Например, графическая библиотека может быть записана как:

 DECS графическая библиотека 
  ИСПОЛЬЗУЙТЕ  какую-нибудь другую библиотеку 

  =   ГРАФИКА РЕЖИМА  СТРУКТУРА  (  ...); 
  ИДЕНТ   ГРАФ РЕЖИМА  =  .   ГРАФИКА  ; 
  Новый график PROC  = ( ... )  ГРАФИК  : ...; 
  График рисования PROC  = (  GRAPH  g)  VOID  : ...; 
     ... 

  СОХРАНИТЬ   ГРАФИК  , новый график, нарисовать график 
  ЗАКАНЧИВАТЬ 

А пользовательская программа для использования этой библиотеки будет выглядеть так:

ПРОГРАММА  myprog 
  ИСПОЛЬЗОВАТЬ  графическую библиотеку 
  НАЧАТЬ 
     ГРАФИК  g = новый график (...); 
      ... 
      нарисовать график (г); 
      ... 
  КОНЕЧНАЯ 
 ОТДЕЛКА 

Вложенные модули [ править ]

Для поддержки нисходящего стиля программирования в ALGOL 68RS предусмотрены возможности HERE и CONTEXT .

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

ПРОГРАММНЫЙ  (pass1, pass2) компилятор 
  BEGIN 
    STRING  источник := ...; 
     ДЕРЕВО  парсетри; 
  ... 
     ЗДЕСЬ  pass1 (источник, дерево синтаксических анализаторов); 
  ... 
     ИНСТРУКЦИЯ  инст; 
     ЗДЕСЬ  pass2 (parsetree, insts); 
  ... 
  КОНЕЧНАЯ 
 ОТДЕЛКА 

Код, который будет выполняться в контексте тегов HERE , будет записан так:

ПРОГРАММА  pass1 реализация 
  КОНТЕКСТ  pass1  IN-  компилятор 
  НАЧИНАТЬ 
    ... {код, использующий «источник» и «дерево синтаксического анализа» } 
  КОНЕЧНАЯ 
 ОТДЕЛКА 

HERE аналогичен ALGOL 68C ENVIRON , а CONTEXT эквивалентен ALGOL 68C USING .

Код и доступ инопланетян [ править ]

АЛГОЛ 68RS был предназначен для использования в системном программировании низкого уровня . Чтобы сделать это возможным, были включены средства доступа к машинному коду и объектам, не относящимся к ALGOL 68RS.

Код был вставлен с помощью конструкции CODE :

SOMEMODE   CODE  (  item1  ,  item2  , ...) «...  код  ...»
 

Где элементы s — это значения ALGOL 68RS, которые должны быть доступны для вставки кода, а SOMEMODE — возвращаемый режим. Режим можно опустить, если код не возвращает значения.

Доступ к объектам, отличным от ALGOL68, был доступен с помощью вставки ALIEN :

SOMEMODE   name  =  ALIEN  "  внешнее-имя  "
 

Любой простой объект АЛГОЛа 68RS можно преобразовать в ВЕКТОР символов с помощью оператора SPELL :

STRUCT  (  INT  a,  REAL  b) c = ...; 

  print (("внутренний повтор = ",  SPELL  c, новая строка)); 
 

Простой объект — это объект , который не содержит массивов или векторов .

Наличие [ править ]

Транслятор АЛГОЛ 68 в C, написанный Praxis для системы ELLA, содержит большую часть компилятора АЛГОЛ 68RS. Заметным исключением является код для обработки FORMAT .

По состоянию на сентябрь 2020 г. Алгол 68RS доступен на SourceForge . [6]

Ссылки [ править ]

  1. ^ Бонд, Южная Каролина ; Вудворд, премьер-министр (август 1977 г.). «Введение в портативный компилятор ALGOL 68 RS» . Техническое примечание (802). Архивировано из оригинала 14 декабря 2012 года.
  2. ^ Вудворд, Премьер-министр ; Бонд, СГ (1983). Руководство по Алголу 68 для пользователей систем RS . Эдвард Арнольд (Издательство) Ltd. ISBN  978-0-7131-3490-2 .
  3. ^ Линдси, Швейцария (август 1998 г.). «Обзор жизнеспособных реализаций Алгола 68» . Бюллетень Алгола (52): 5–8. ISSN   0084-6198 .
  4. ^ «История сайта Multitics: Avon» .
  5. ^ Линдси, Швейцария (декабрь 1980 г.). «Реализации ALGOL 68: компилятор ICL 2900» . Бюллетень Алгола (46): 7–8. ISSN   0084-6198 .
  6. ^ ван дер Веер, Марсель; НевиллДНЗ. «Реализации ALGOL 68 с открытым исходным кодом» . СоурсФордж . Проверено 18 сентября 2020 г.
Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: 7427A730FB3813717467BED4492276F5__1701812100
URL1:https://en.wikipedia.org/wiki/ALGOL_68RS
Заголовок, (Title) документа по адресу, URL1:
ALGOL 68RS - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)