stringtranslate.com

Абстрактный синтаксис

В информатике абстрактный синтаксис данных — это его структура, описываемая как тип данных (возможно, но не обязательно, абстрактный тип данных ), независимый от какого-либо конкретного представления или кодирования. [1] Это особенно используется в представлении текста в компьютерных языках , [2] которые обычно хранятся в древовидной структуре как абстрактное синтаксическое дерево . Абстрактный синтаксис, который состоит только из структуры данных, противопоставляется конкретному синтаксису , который также включает информацию о представлении. Например, конкретный синтаксис включает такие функции, как скобки (для группировки) или запятые (для списков), которые не включены в абстрактный синтаксис, поскольку они подразумеваются в структуре.

Абстрактные синтаксисы классифицируются как абстрактный синтаксис первого порядка (FOAS), если структура абстрактна, но имена (идентификаторы) по-прежнему конкретны (и, следовательно, требуют разрешения имен ), и абстрактный синтаксис более высокого порядка , если сами имена абстрактны. [3]

Использует

Для реализации либо вычислений, либо коммуникаций необходимо определить отображение абстрактного синтаксиса в конкретные машинные представления и кодировки; их можно назвать « конкретным синтаксисом » (в языковой реализации) [4] или «синтаксисом передачи» (в коммуникациях).

Внутреннее представление компилятором программы обычно определяется абстрактным синтаксисом в терминах таких категорий, как «оператор», «выражение» и «идентификатор». Это не зависит от исходного синтаксиса ( конкретного синтаксиса ) компилируемого языка (хотя часто будет очень похоже). Дерево разбора похоже на абстрактное синтаксическое дерево , но обычно оно также содержит такие функции, как скобки, которые синтаксически значимы, но неявно присутствуют в структуре абстрактного синтаксического дерева.

Алгебраические типы данных особенно хорошо подходят для реализации абстрактного синтаксиса. [5]

Смотрите также

Ссылки

  1. ^ Fiore, M.; Plotkin, G .; Turi, D. (1999). «Абстрактный синтаксис и связывание переменных». Труды. 14-й симпозиум по логике в информатике (кат. № PR00158) . стр. 193–202. doi :10.1109/LICS.1999.782615. ISBN 0-7695-0158-3. S2CID  7384052 . Получено 2023-11-02 .
  2. ^ "ASTLOG: Язык для исследования абстрактных синтаксических деревьев". DSL'97: Труды конференции по предметно-ориентированным языкам на конференции по предметно-ориентированным языкам (DSL), 1997. Ассоциация USENIX. 15 октября 1997 г. стр. 18.
  3. ^ Пфеннинг, Ф.; Эллиотт, К. (1988-06-01). «Абстрактный синтаксис высшего порядка». ACM SIGPLAN Notices . 23 (7): 199–208. doi : 10.1145/960116.54010 . ISSN  0362-1340.
  4. ^ Wile, David S. (1997). «Абстрактный синтаксис из конкретного синтаксиса». Труды 19-й международной конференции по программной инженерии - ICSE '97 . ACM Press. стр. 472–480. doi :10.1145/253228.253388. ISBN 978-0-89791-914-2. S2CID  14351497.
  5. ^ Коррадини, Андреа; Гаддуччи, Фабио (2002-09-17). «Функториальная семантика для мультиалгебр и частичных алгебр с приложениями к синтаксису». Теоретическая информатика . 286 (2): 293–322. doi : 10.1016/S0304-3975(01)00319-X . ISSN  0304-3975.