Articulo de referencia

Diagrama de sintaxis

Los diagramas sintácticos (o diagramas de ferrocarril ) son una forma de representar una gramática libre de contexto . Representan una alternativa gráfica a la forma Backus-Naur...

Los diagramas sintácticos (o diagramas de ferrocarril ) son una forma de representar una gramática libre de contexto . Representan una alternativa gráfica a la forma Backus-Naur , la EBNF , la forma Backus-Naur aumentada y otras gramáticas basadas en texto como metalenguajes . Entre los primeros libros que utilizan diagramas sintácticos se encuentran el "Manual del usuario de Pascal" escrito por Niklaus Wirth [ 1 ] (los diagramas comienzan en la página 47) y el Manual CANDE de Burroughs [ 2 ] . En el campo de la compilación, generalmente se prefieren las representaciones textuales como la BNF o sus variantes. La BNF se basa en texto y la utilizan los desarrolladores de compiladores y generadores de analizadores sintácticos. Los diagramas de ferrocarril son visuales y pueden ser más fáciles de entender para el público general, a veces incorporados al diseño gráfico. La fuente canónica que define el formato de intercambio de datos JSON proporciona otro ejemplo de un uso moderno popular de estos diagramas.

Principio

La representación de una gramática es un conjunto de diagramas sintácticos. Cada diagrama define una etapa "no terminal" en un proceso. Existe un diagrama principal que define el lenguaje de la siguiente manera: para pertenecer al lenguaje, una palabra debe describir una ruta en el diagrama principal.

Cada diagrama tiene un punto de entrada y un punto final. El diagrama describe las posibles rutas entre estos dos puntos pasando por otros no terminales y terminales. Históricamente, los terminales se han representado con cajas redondas y los no terminales con cajas rectangulares, pero no existe un estándar oficial.

Ejemplo

Utilizamos expresiones aritméticas como ejemplo, en diversos formatos gramaticales.

BNF:

< expresión > ::= < término > | < término > "+" <expresión> <término> ::= <factor> | <factor> " * " < término > <factor> :: = <constante> | <variable> | " ( " < expresión > " ) " <variable> :: = " x " | " y" | "z" <constante> ::= <dígito> | <dígito> <constante> <dígito > :: = " 0 " | " 1 " | " 2 " | " 3 " | " 4 " | " 5" | "6" | "7" | "8 " | "9" 

EBNF:

expresión = término , [ "+" , expresión ]; término = factor , [ "*" , término ]; factor = constante | variable | "(" , expresión , ")" ; variable = "x" | "y" | "z" ; constante = dígito , { constante }; dígito = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" ;

ABNF:

expresión = término [ "+" expresión ] término = factor [ "*" término ] factor = constante / variable / "(" expresión ")" variable = "x" / "y" / "z" constante = 1* dígito DÍGITO = "0" / "1" / "2" / "3" / "4" / ​​"5" / "6" / "7" / "8" / "9"

ABNF también admite rangos, por ejemplo , pero no se utiliza aquí para mantener la coherencia con los demás ejemplos.DIGIT=%x30-39

Rojo (lenguaje de programación) Parse Dialecto:

Rojo [ Título: "Analizar dialecto" ] expresión: [ término opt [ "+" expresión ]] término: [ factor opt [ "*" término ]] factor: [ constante | variable | "(" expresión ")" ] variable: [ "x" | "y" | "z" ] constante: [ algún dígito ] dígito: [ "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" ]

Este formato también admite rangos, por ejemplo , pero no se utiliza aquí para mantener la coherencia con los demás ejemplos.digit:charset[#"0"-#"9"]

A continuación se muestra un posible diagrama de sintaxis para las gramáticas de ejemplo. Si bien la sintaxis de las gramáticas basadas en texto difiere, el diagrama de sintaxis para todas ellas puede ser el mismo porque se trata de un metalenguaje .

Diagrama de sintaxis de "Ferrocarril"

Véase también

Referencias

  1. Niklaus Wirth: El lenguaje de programación Pascal. (Julio de 1973)
  2. Burroughs B6700/B7700 Command AND Edit (CANDE): Manual de información

Nota: el primer enlace a veces es bloqueado por el servidor fuera de su dominio, pero está disponible en archive.org . El archivo también se replicó en standardpascal.org .

  • Sitio web JSON que incluye diagramas de sintaxis.
  • Generador de EBNF
  • De EBNF a un archivo PostScript con los diagramas.
  • Analizador y renderizador EBNF
  • Generador de diagramas de sintaxis SQLite para SQL
  • Generador de diagramas ferroviarios en línea
  • Gramáticas de diagramas de sintaxis aumentada (ASD, por sus siglas en inglés)
  • Sitio de demostración de la aplicación de diagramas de sintaxis aumentada (ASD)
  • Representación del diagrama de sintaxis SRFB mediante Function Basis + generación de svg
Obtenido de " https://en.wikipedia.org/w/index.php?title=Syntax_diagram&oldid=1316532313 "