Diagrama de sintaxis

format_list_bulleted Contenido keyboard_arrow_down
ImprimirCitar
Los diagramas sintácticos (o diagramas de ferrocarril) son una forma de representar una gramática independiente del contexto. Representan una alternativa gráfica a la forma Backus-Naur, la EBNF, la forma Backus-Naur aumentada y otras gramáticas textuales como metalenguajes. Entre los primeros libros que utilizan diagramas sintácticos se incluyen el "Manual del usuario de Pascal" escrito por Niklaus Wirth (los diagramas comienzan en la página 47) y el Manual CANDE de Burroughs. En el ámbito de la compilación, se suelen preferir las representaciones textuales como la BNF o sus variantes. La BNF está basada en texto y es utilizada por 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 de diagramas de sintaxis

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 una ruta en el diagrama principal.Cada diagrama tiene un punto de entrada y un punto final. El diagrama describe 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

Usamos expresiones aritméticas como ejemplo, en varios formatos gramaticales.BNF:
c)expresión ::= c)mandato Silencio c)mandato "+" c)expresiónc)mandato ::= c)factor Silencio c)factor "* c)mandatoc)factor ::= c)constante Silencio c)variable Silencio c)expresión ")"
c)variable ::= "x" "y" en la vida "z"
c)constante ::= c)dígito Silencio c)dígito c)constantec)dígito ::= "0" Silencio "1" TENIDO "2" TENIDO "3" TENIDO "4" TENIDO "5" TENIDO "6" ANTE "7" ANTE "8" ANTE "9"
EBNF:
expresión = mandato , [ "+" , expresión ];mandato = factor , [ "* , mandato ];factor = constante Silencio variable Silencio "( , expresión , ")";variable = "x" Silencio "y" Silencio "z"; constante = dígito , {} dígito };dígito = "0" Silencio "1" Silencio "2" Silencio "3" Silencio "4" Silencio "5" Silencio "6" Silencio "7" Silencio "8" Silencio "9";
ABNF:
expresión = mandato ["+" expresión]mandato = factor ["* mandato]factor = constante / variable / "( expresión ")"variable = "x" / "y" / "z"constante = 1*dígitoDIGIT = "0" / "1" / "2" / "3" / "4" / "5" / "6" / "7" / "8" / "9"
ABNF también admite rangos, p. ej., DIGIT = %x30-39, pero no se utiliza aquí por coherencia con los demás ejemplos.Dialecto de análisis de Red (lenguaje de programación):
Rojo [Título: "Diálogo grueso"]expresión: [mandato opt ["+" expresión]]término: [factor opt ["* mandato]]factor: [constante Silencio variable Silencio "( expresión ")"]variable: ["x" Silencio "y" Silencio "z"]constante: [algunos dígito]dígito: ["0" Silencio "1" Silencio "2" Silencio "3" Silencio "4" Silencio "5" Silencio "6" Silencio "7" Silencio "8" Silencio "9"]
Este formato también admite rangos, p. ej., dígito: conjunto de caracteres [#"0" - #"9"], pero no se utiliza aquí por coherencia con los demás ejemplos.A continuación se muestra un posible diagrama sintáctico para las gramáticas de ejemplo. Si bien la sintaxis de las gramáticas textuales difiere, el diagrama sintáctico para todas ellas puede ser el mismo, ya que se trata de un metalenguaje.

"Railroad" syntax diagram

Véase también

  • Red de transición recuperativa
  • Forma extendida de Backus–Naur (EBNF)

Referencias

  1. ^ Niklaus Wirth: The Programming Language Pascal. (Julio 1973)
  2. ^ Burroughs B6700/B7700 Command AND Edit (CANDE) Idioma: Manual de información
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 de JSON incluyendo diagramas de sintaxis
  • Generador de EBNF
  • Desde EBNF a un archivo postscript con los diagramas
  • EBNF Parser & Renderer
  • Generador de diagrama de sintaxis SQLite para SQL
  • Generador de Diagramas en Línea de Ferrocarril
  • Gramáticas de Diagrama de Sintaxis Aumentada (ASD)
  • (ASD) Sitio de demostración de la aplicación de Diagramas Sintéticos Aumentados
  • Representación de diagrama de sintaxis SRFB por función Basis + generación de svg
Más resultados...
Tamaño del texto:
undoredo
format_boldformat_italicformat_underlinedstrikethrough_ssuperscriptsubscriptlink
save