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