stringtranslate.com

АЛГОЛ В

ALGOL W — это язык программирования . Он основан на предложении Никлауса Вирта и Тони Хоара для ALGOL X в качестве преемника ALGOL 60. ALGOL W — это относительно простое обновление оригинального ALGOL 60, добавляющее строку , битовую строку, комплексное число и ссылку для записи типов данных и передачу параметров по результату , вводя оператор, заменяя его оператором и в целом сужая язык. whileswitchcase

Запись Вирта посчитали слишком незначительным шагом вперед по сравнению с АЛГОЛом 60, и на весьма спорном собрании была выбрана более сложная запись Адриана ван Вейнгаардена , которая позже стала АЛГОЛом 68. Позднее Вирт опубликовал свою версию как вклад в развитие АЛГОЛа . [1] С рядом небольших дополнений это в конечном итоге стало АЛГОЛом W.

Вирт руководил высококачественной реализацией для IBM System/360 в Стэнфордском университете , которая была широко распространена. [2] [3] Реализация была написана на PL360 , языке ассемблера , похожем на ALGOL, разработанном Виртом. Реализация включает в себя влиятельные возможности отладки и профилирования .

ALGOL W послужил основой для языка Pascal , и синтаксис ALGOL W будет сразу знаком любому, кто имеет опыт работы с Pascal. Ключевыми отличиями являются улучшения в обработке записей в Pascal и, как ни странно, потеря способности ALGOL W определять длину массива во время выполнения, что является одной из наиболее часто жалуемых особенностей Pascal.

Синтаксис и семантика

Синтаксис ALGOL W построен на подмножестве набора кодировок символов EBCDIC . В ALGOL 60 зарезервированные слова являются отдельными лексическими элементами, но в ALGOL W они являются только последовательностями символов и не нуждаются в стропинге . Зарезервированные слова и идентификаторы разделяются пробелами. [2] В этом отношении синтаксис ALGOL W напоминает синтаксис Pascal и более поздних языков.

Описание языка ALGOL W [4] определяет ALGOL W в аффиксной грамматике , которая напоминает форму Бэкуса–Наура (BNF). Эта формальная грамматика была предшественником грамматики Ван Вейнгаардена . [1] [5]

Большая часть семантики ALGOL W определена грамматически: [4]

Пример

Это демонстрирует возможности записи типа ALGOL W.

ЗАПИСЬ ЛИЦА ( СТРОКА ( 20 ) ИМЯ ; ЦЕЛОЕ ЧИСЛО ВОЗРАСТ ; ЛОГИЧЕСКИЙ МУЖСКОЙ ; ССЫЛКА ( ЛИЦО ) ОТЕЦ , МАТЬ , МЛАДШИЙ ПОТОМОК , СТАРШИЙ БРАТ ) ;                ССЫЛКА ( ЛИЦО ) ПРОЦЕДУРА МОЛОДОЙ ДЯДЯ ( ЛИЦО ) R ) ; НАЧАЛО ССЫЛКА ( ЛИЦО ) P , M ; P := МОЛОДОЙ ПОТОМОК ( ОТЕЦ ( ОТЕЦ ( R ))) ; ПОКА ( P ¬ = NULL ) И ( ¬ МУЖСКОЙ ( P ) ) ИЛИ ( P = ОТЕЦ ( R )) ДЕЛАТЬ P := СТАРШИЙ ПОТОМОК ( P ) ; M := МОЛОДОЙ ПОТОМОК ( МАТЬ ( МАТЬ ( R ))) ; ПОКА ( M ¬ = NULL ) И ( ¬ МУЖСКОЙ ( M ) ) ДЕЛАТЬ M := СТАРШИЙ ПОТОМОК ( M ) ; ЕСЛИ P = NULL ТО M ИНАЧЕ ЕСЛИ M = NULL ТО P ИНАЧЕ ЕСЛИ ВОЗРАСТ ( P ) < ВОЗРАСТ ( M ) ТОГДА P ИНАЧЕ M КОНЕЦ                                                                    

Ссылки

  1. ^ ab Wirth, Niklaus ; Hoare, CAR (июнь 1966 г.). «Вклад в развитие ALGOL». Communications of the ACM . 9 (6): 413–432. doi : 10.1145/365696.365702 . S2CID  11901135 . Получено 7 октября 2020 г. – через Association for Computing Machinery .
  2. ^ ab Bauer, Henry R.; Becker, Sheldon I.; Graham, Susan L.; Forsythe, George E.; Satterthwaite, Edwin H. (март 1968 г.). Номер технического отчета: CS-TR-68-89. Отделение компьютерных наук (отчет). Стэнфордский университет.(Различные документы по реализации ALGOL W в Стэнфорде в 1972 году; этот отчет включает описание языка ALGOL W.
  3. ^ Сайтс, Ричард. "ALGOL W Reference Manual" (PDF) . i.stanford.edu . Стэнфордский университет . Получено 24 июля 2022 г. .
  4. ^ ab Бауэр, Генри Р.; Беккер, Шелдон И.; Грэм, Сьюзен Л.; Саттертуэйт, Эдвин Х.; Сайтс, Ричард Л. (июнь 1972 г.). Описание языка ALGOL W (PDF) (Отчет).
  5. ^ van Wijngaarden, Adriaan (22 октября 1965 г.). Orthogonal Design and Description of a Formal Language: MR76 (PDF) (Отчет). Амстердам , Нидерланды: Математический центр. Архивировано из оригинала (PDF) 29 октября 2019 г. Получено 7 октября 2020 г. – через Ernst-Abbe-Hochschule Jena , Университет прикладных наук, Германия.

Внешние ссылки