Введение

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

Применение

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