Está en la página 1de 9

ACT.

4: INVESTIGACIÓN
Diagrama de Sintaxis.

INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO


ING. SISTEMAS COMPUTACIONALES

MENDOZA VAZQUEZ JUAN IGNACIO


IS18110811

AUTOMATAS 1
UNIDAD 5
DOCENTE: JUAN CARLOS GONZALEZ CORDOBA

IRAPUATO, GTO.

27/04/2022
INTRODUCCION

En este documento se abarcará la información obtenida de la investigación sobre


los diagramas de sintaxis.

Concepto de analizador sintáctico: Es la fase del analizador que se encarga de


chequear la secuencia de tokens que representa al texto de entrada, en base a una
gramática dada. En caso de que el programa de entrada sea válido, suministra el
árbol sintáctico que lo reconoce en base a una representación computacional. Este
árbol es el punto de partida de la fase posterior de la etapa de análisis: el analizador
semántico. Pero esto es la teoría; en la práctica, el analizador sintáctico dirige el
proceso de compilación, de manera que el resto de fases evolucionan a medida que
el sintáctico va reconociendo la secuencia de entrada por lo que, a menudo, el árbol
ni siquiera se genera realmente. En la práctica, el analizador sintáctico también:
Incorpora acciones semánticas en las que colocar el resto de fases del compilador
(excepto el analizador léxico): desde el análisis semántico hasta la generación de
código. Informa de la naturaleza de los errores sintácticos que encuentra e intenta
recuperarse de ellos para continuar la compilación. Controla el flujo de tokens
reconocidos por parte del analizador léxico. En definitiva, realiza casi todas las
operaciones de la compilación, dando lugar a un método de trabajo denominado
compilación dirigida por sintaxis

Los diagramas de sintaxis son un medio de representación gráfica que se utiliza en


el contexto de las gramáticas formales . Constituyen una alternativa a una
representación en forma de Backus-Naur . Su principal interés es de naturaleza
pedagógica, ya que permiten una percepción a menudo más intuitiva de la noción
de gramática que las representaciones textuales, que se adaptan mejor
a las herramientas de análisis sintáctico utilizadas para la construcción
de compiladores .

Todo lenguaje de programación obedece a unas reglas que describen la estructura


sintáctica de los programas bien formados que acepta. En Pascal, por ejemplo, un
programa se compone de bloques; un bloque, de sentencias; una sentencia, de
expresiones; una expresión, de componentes léxicos; y así sucesivamente hasta
llegar a los caracteres básicos. Se puede describir la sintaxis de las construcciones
de los lenguajes de programación por medio de gramáticas de contexto libre o
utilizando notación BNF (Backus-Naur Form).

Las gramáticas formales ofrecen ventajas significativas a los diseñadores de


lenguajes y a los desarrolladores de compiladores:

• Las gramáticas son especificaciones sintácticas y precisas de lenguajes de


programación.

• A partir de una gramática se puede generar automáticamente un analizador


sintáctico.

• El proceso de generación automática anterior puede llevar a descubrir


ambigüedades.

• Una gramática proporciona una estructura a un lenguaje de programación, siendo


más fácil generar código y detectar errores.

• Es más fácil ampliar/modificar el lenguaje si está descrito con una gramática.

La mayor parte del presente tema está dedicada a los métodos de análisis sintáctico
de uso típico en compiladores. Comenzaremos con los conceptos básicos y las
técnicas adecuadas para la aplicación manual. A continuación, trataremos la gestión
y recuperación de errores sintácticos. Estudiaremos los métodos formales de
análisis mediante autómatas con pila y, por último, profundizaremos en el
funcionamiento de meta compiladores que generan automáticamente el analizador
sintáctico de un lenguaje.
CONTENIDO

Los diagramas sintácticos, de sintaxis o diagramas del ferrocarril son una forma de
representar una gramática libre de contexto. Representan una alternativa gráfica
para la Forma de Backus-Naur (BNF, por sus siglas en inglés) o la Forma Extendida
de Backus-Naur (EBNF).

Constan de una serie de cajas o símbolos geométricos conectados por arcos


dirigidos. Veamos las reglas que rigen la construcción de cada grafo:

1. Cada símbolo terminal se representa por su nombre encerrado en un círculo o


en una caja de bordes circulares.

Terminal: Un símbolo es terminal cuando tiene entidad propia y se describe por sí


mismo.

2. Cada símbolo no terminal se representa por su nombre encerrado en un


rectángulo.

No Terminal: Un símbolo es no terminal cuando requiere una explicación mediante


una regla o producción.
3. Para las producciones que tengan varias alternativas, el grafo resultante será
del tipo:

4. Para las producciones que contengan una serie concatenada de símbolos


terminales y/o no terminales, bastara simplemente con conectar simplemente a
continuación del otro grafo de cada símbolo.

5. Para las producciones que tengan cero, una o más repeticiones de un símbolo
la representación será:

Veamos la sintaxis de SENTENCIA CONDICIONAL, usando diagramas sintácticos


en vez de BNF.
Con los grafos o diagramas sintácticos somos capaces de representar la sintaxis de
un lenguaje y podemos utilizarlos en lugar del conjunto de producciones en BNF.
Es más, los diagramas sintácticos son mucho más claros y concisos, facilitando la
comprensión del lenguaje, dada su mejor asimilación. Tiene un inconveniente, y es
la dificultad de representación.

Ejemplo: Diagrama sintáctico para expresiones aritméticas.


Ejemplo

Un ejemplo clásico de gramática es el de las expresiones aritméticas. Primero


demos una gramática simple en BNF:

<expression> ::= <terme> | <terme> "+" <expression>

<terme> ::= <facteur> | <facteur> "*" <terme>

<facteur> ::= <constante> | <variable> | "(" <expression> ")"

<variable> ::= "x" | "y" | "z"

<constante> ::= <chiffre> | <chiffre> <constante>

<chiffre> ::= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"

Esta gramática también se puede expresar en EBNF :

expression = terme, {"+" terme};

terme = facteur, {"*" facteur};

facteur = constante | variable | "(" , expression, ")";

variable = "x" | "y" | "z";

constante = chiffre, {chiffre};

chiffre = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9";
Un conjunto de diagramas de sintaxis equivalentes:
CONCLUSION

Se puede concluir que los diagramas de sintaxis son un medio de representación


gráfica que se utiliza en el contexto de las gramáticas formales. Su principal interés
es de naturaleza pedagógica, ya que permiten una percepción a menudo más
intuitiva de la noción de gramática que las representaciones textuales, que se
adaptan mejor a las herramientas de análisis sintáctico utilizadas para la
construcción de compiladores.

Las gramáticas independientes del contexto describen un concepto fundamental


para la implementación de compiladores y otros procesadores de lenguajes de
programación.

BIBLIOGRAFIAS

• Balcells, J., Romeral, J. L., & Martínez, J. L. R. (1997). Autómatas


programables (Vol. 1089). Marcombo.
• García, P., Pérez, T., Ruiz, J., Segarra, E., Sempere, J. M., & de Parga, M.
V. (2001). Teoría de autómatas y lenguajes formales (pp. 32-44). Alfaomega.
• http://lenguajesyautomatas1unidad6-4.blogspot.com/2016/06/diagramas-de-
sintaxis.html
• Lovello, J. M. C. (1998). Conceptos básicos de procesadores de lenguaje.
Servitec.
• Martínez, A. R. Teoría, diseño e implementación de compiladores de
lenguajes. Grupo Editorial RA-MA.
• Rojas, S. G., Fernández, D. T., Plaza, A. G., & León, A. L. C. GENERACIÓN
COMPLETA DE COMPILADORES MEDIANTE DIAGRAMAS DE SINTAXIS
EXTENDIDOS.

También podría gustarte