Diagrama de sintaxis

Descripción visual de la gramática libre de contexto

Los diagramas de sintaxis (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 , EBNF , la forma Backus–Naur aumentada y otras gramáticas basadas en texto como metalenguajes . Los primeros libros que utilizan diagramas de sintaxis incluyen el "Manual de 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, las representaciones textuales como BNF o sus variantes suelen ser las preferidas. BNF está basado en texto y lo utilizan los escritores de compiladores y los generadores de analizadores sintácticos. Los diagramas de ferrocarril son visuales y pueden ser más fáciles de entender para los legos, 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 de los diagramas sintácticos

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

Cada diagrama tiene un punto de entrada y un punto final. El diagrama describe posibles caminos 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 varios 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"

Número de serie EBNF:

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

ANF:

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í por coherencia con los demás ejemplos.DIGIT = %x30-39

Rojo (lenguaje de programación) Analizar 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í por 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 Manual de información en lenguaje Command AND Edit (CANDE)

Nota: el primer enlace a veces está bloqueado por el servidor fuera de su dominio, pero está disponible en archive.org. El archivo también se reflejó 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 de ferrocarriles en línea
  • Gramáticas de diagramas de sintaxis aumentada (ASD)
  • Sitio de demostración de la aplicación de diagrama de sintaxis aumentada (ASD)
  • Representación del diagrama de sintaxis SRFB por base de función + generación de svg
Obtenido de "https://es.wikipedia.org/w/index.php?title=Diagrama_de_sintaxis&oldid=1193243767"