En informática , la sintaxis abstracta de los datos es su estructura descrita como un tipo de dato (posiblemente, pero no necesariamente, un tipo de dato abstracto ), independiente de cualquier representación o codificación particular. [ 1 ] Esto se utiliza particularmente en la representación de texto en lenguajes de programación , [ 2 ] que generalmente se almacenan en una estructura de árbol como un árbol de sintaxis abstracta . La sintaxis abstracta, que solo consiste en la estructura de los datos, se contrapone a la sintaxis concreta , que también incluye información sobre la representación. Por ejemplo, la sintaxis concreta incluye características como paréntesis (para agrupar) o comas (para listas), que no están incluidas en la sintaxis abstracta, ya que son implícitas en la estructura.
Las sintaxis abstractas se clasifican como sintaxis abstracta de primer orden (FOAS), si la estructura es abstracta pero los nombres (identificadores) siguen siendo concretos (y por lo tanto requieren resolución de nombres ), y sintaxis abstracta de orden superior , si los nombres mismos son abstractos. [ 3 ]
Usos
Para su implementación, ya sea para computación o comunicaciones, se debe definir un mapeo de la sintaxis abstracta a representaciones y codificaciones de máquina específicas; estas pueden denominarse " sintaxis concreta " (en la implementación del lenguaje) [ 4 ] o "sintaxis de transferencia" (en comunicaciones).
La representación interna de un programa por parte de un compilador se especifica típicamente mediante una sintaxis abstracta en términos de categorías como "instrucción", "expresión" e "identificador". Esto es independiente de la sintaxis de origen ( sintaxis concreta ) del lenguaje que se está compilando (aunque a menudo será muy similar). Un árbol de análisis sintáctico es similar a un árbol de sintaxis abstracta , pero generalmente también contiene características como paréntesis, que son sintácticamente significativas pero que están implícitas en la estructura del árbol de sintaxis abstracta. [ 5 ]
Los tipos de datos algebraicos son particularmente adecuados para la implementación de sintaxis abstracta. [ 6 ]
Véase también
Referencias
- ↑ Fiore, M.; Plotkin, G .; Turi, D. (1999). "Sintaxis abstracta y vinculación de variables". Actas del 14.º Simposio sobre Lógica en Ciencias de la Computación (Cat. No. PR00158) . págs. 193–202 . doi : 10.1109/LICS.1999.782615 . ISBN 0-7695-0158-3. S2CID 7384052 .
- ↑ "ASTLOG: Un lenguaje para examinar árboles de sintaxis abstracta" . DSL'97: Actas de la Conferencia sobre Lenguajes Específicos de Dominio (DSL), 1997. Asociación USENIX. 15 de octubre de 1997. pág. 18.
- ↑ Pfenning, F. ; Elliott, C. (1988-06-01). "Sintaxis abstracta de orden superior" . ACM SIGPLAN Notices . 23 (7): 199– 208. doi : 10.1145/960116.54010 . ISSN 0362-1340 .
- ↑ Wile, David S. (1997). "Sintaxis abstracta a partir de la sintaxis concreta" . Actas de la 19.ª conferencia internacional sobre ingeniería de software - ICSE '97 . ACM Press. págs. 472–480 . doi : 10.1145/253228.253388 . ISBN 978-0-89791-914-2. S2CID 14351497 .
- ↑ Este artículo se basa en material tomado de Abstract+syntax en el Free On-line Dictionary of Computing antes del 1 de noviembre de 2008 e incorporado bajo los términos de "relicencia" de la GFDL , versión 1.3 o posterior.
- ↑ Corradini, Andrea; Gadducci, Fabio (17 de septiembre de 2002). "Una semántica funtorial para multiálgebras y álgebras parciales, con aplicaciones a la sintaxis" . Theoretical Computer Science . 286 (2): 293–322 . doi : 10.1016/S0304-3975(01)00319-X . ISSN 0304-3975 .
- Diseño de lenguajes de programación
- teoría de lenguajes de programación
- Construcción de compiladores
- Sintaxis
- Análisis sintáctico