Sintaxe abstrata - Abstract syntax

Na ciência da computação , a sintaxe abstrata dos dados é sua estrutura descrita como um tipo de dados (possivelmente, mas não necessariamente, um tipo de dados abstrato ), independente de qualquer representação ou codificação particular. Isso é particularmente usado na representação de texto em linguagens de computador , que geralmente são armazenadas em uma estrutura de árvore como uma árvore de sintaxe abstrata . A sintaxe abstrata, que consiste apenas na estrutura de dados, é contrastada com a sintaxe concreta , que também inclui informações sobre a representação. Por exemplo, a sintaxe concreta inclui recursos como parênteses (para agrupamento) ou vírgulas (para listas) que não estão incluídos na sintaxe abstrata, pois estão implícitos na estrutura.

As sintaxes abstratas são classificadas como sintaxe abstrata de primeira ordem (FOAS), se a estrutura é abstrata, mas os nomes (identificadores) ainda são concretos (e, portanto, requerem resolução de nome ), e sintaxe abstrata de ordem superior , se os próprios nomes são abstratos.

Usos

Para ser implementado para computação ou comunicação, um mapeamento da sintaxe abstrata para representações e codificações de máquina específicas deve ser definido; eles podem ser chamados de " sintaxe concreta " (na implementação da linguagem) ou "sintaxe de transferência" (nas comunicações).

A representação interna de um programa do compilador será normalmente especificada por uma sintaxe abstrata em termos de categorias como "instrução", "expressão" e "identificador". Isso é independente da sintaxe de origem (sintaxe concreta ) da linguagem que está sendo compilada (embora muitas vezes seja muito semelhante). Uma árvore de análise é semelhante a uma árvore de sintaxe abstrata, mas normalmente também contém recursos como parênteses que são sintaticamente significativos, mas que estão implícitos na estrutura da árvore de sintaxe abstrata.

Os tipos de dados algébricos são particularmente adequados para a implementação de sintaxe abstrata.

Veja também

Referências

  • Este artigo é baseado em material retirado do Dicionário Online Gratuito de Computação anterior a 1 de novembro de 2008 e incorporado sob os termos de "relicenciamento" do GFDL , versão 1.3 ou posterior.