Абстрактный синтаксис
Эта статья нуждается в дополнительных цитатах для проверки . ( ноябрь 2023 г. ) |
В информатике абстрактный синтаксис данных — это их структура, описываемая как тип данных (возможно, но не обязательно, абстрактный тип данных ), не зависящий от какого-либо конкретного представления или кодировки. [1] Это особенно используется при представлении текста на компьютерных языках . [2] которые обычно хранятся в древовидной структуре в виде абстрактного синтаксического дерева . Абстрактный синтаксис, который состоит только из структуры данных, противопоставляется конкретному синтаксису , который также включает информацию о представлении. Например, конкретный синтаксис включает такие функции, как круглые скобки (для группировки) или запятые (для списков), которые не включены в абстрактный синтаксис, поскольку они неявно присутствуют в структуре.
Абстрактные синтаксисы классифицируются как абстрактный синтаксис первого порядка (FOAS), если структура абстрактна, но имена (идентификаторы) все еще конкретны (и, следовательно, требуют разрешения имен ), и абстрактный синтаксис более высокого порядка , если сами имена абстрактны. [3]
Использование
[ редактировать ]Для реализации как для вычислений, так и для связи необходимо определить отображение абстрактного синтаксиса на конкретные машинные представления и кодировки; их можно назвать « конкретным синтаксисом » (в языковой реализации). [4] или «синтаксис передачи» (в средствах связи).
. Внутреннее представление программы компилятором обычно задается абстрактным синтаксисом в терминах таких категорий, как «оператор», «выражение» и «идентификатор» Это не зависит от исходного синтаксиса ( конкретного синтаксиса ) компилируемого языка (хотя зачастую он очень похож). Дерево синтаксического анализа похоже на абстрактное синтаксическое дерево , но обычно оно также содержит такие функции, как круглые скобки, которые синтаксически значимы, но неявно присутствуют в структуре абстрактного синтаксического дерева.
Алгебраические типы данных особенно хорошо подходят для реализации абстрактного синтаксиса. [5]
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Фиоре, М.; Плоткин, Г. ; Тури, Д. (1999). «Абстрактный синтаксис и привязка переменных» . Слушания. 14-й симпозиум по логике в информатике (кат. № PR00158) . стр. 193–202. дои : 10.1109/LICS.1999.782615 . ISBN 0-7695-0158-3 . S2CID 7384052 . Проверено 2 ноября 2023 г.
- ^ «ASTLOG: язык для изучения абстрактных синтаксических деревьев» . DSL'97: Материалы конференции по предметно-специфичным языкам на конференции по предметно-специфичным языкам (DSL), 1997 . Ассоциация ЮСЕНИКС. 15 октября 1997 г. с. 18.
- ^ Пфеннинг, Ф .; Эллиотт, К. (1 июня 1988 г.). «Абстрактный синтаксис высшего порядка» . Уведомления ACM SIGPLAN . 23 (7): 199–208. дои : 10.1145/960116.54010 . ISSN 0362-1340 .
- ^ Уайл, Дэвид С. (1997). «Абстрактный синтаксис из конкретного синтаксиса» . Материалы 19-й международной конференции по программной инженерии - ICSE '97 . АКМ Пресс. стр. 472–480. дои : 10.1145/253228.253388 . ISBN 978-0-89791-914-2 . S2CID 14351497 .
- ^ Коррадини, Андреа; Гаддуччи, Фабио (17 сентября 2002 г.). «Функториальная семантика мультиалгебр и частичных алгебр с приложениями к синтаксису» . Теоретическая информатика . 286 (2): 293–322. дои : 10.1016/S0304-3975(01)00319-X . ISSN 0304-3975 .