PDF de programación - Análisis sintáctico I / Gramáticas

Imágen de pdf Análisis sintáctico I / Gramáticas

Análisis sintáctico I / Gramáticasgráfica de visualizaciones

Publicado el 25 de Diciembre del 2019
892 visualizaciones desde el 25 de Diciembre del 2019
800,4 KB
25 paginas
Creado hace 11a (21/11/2012)
ANÁLISIS SINTÁCTICO I

GRAMÁTICAS





ANÁLISIS SINTÁCTICO I

GRAMÁTICAS

© Todos los derechos de propiedad intelectual de esta obra pertenecen en exclusiva a la Universidad
Europea de Madrid, S.L.U. Queda terminantemente prohibida la reproducción, puesta a disposición del
público y en general cualquier otra forma de explotación de toda o parte de la misma.

La utilización no autorizada de esta obra, así como los perjuicios ocasionados en los derechos de
propiedad intelectual e industrial de la Universidad Europea de Madrid, S.L.U., darán lugar al ejercicio
de las acciones que legalmente le correspondan y, en su caso, a las responsabilidades que de dicho
ejercicio se deriven.

2





Índice

Presentación

Introducción

Gramáticas independientes del contexto

Árboles de derivación

¿Qué es una derivación?

¿Qué es un árbol de derivación?

Ejemplo de árbol de derivación

Limpieza de gramáticas

Símbolos superfluos

Símbolos inaccesibles

Orden de limpieza de gramáticas

Ambigüedades

Eliminar la recursividad a izquierdas

Eliminar varias alternativas que comienzan igual

Gramáticas ambiguas

Precedencia y asociatividad

El problema del else ambiguo

Resumen

ANÁLISIS SINTÁCTICO I

GRAMÁTICAS

4

5

7

9

9

9

11

15

15

15

16

18

18

18

20

21

23

25

3
© Univ ersidad Europea de Madrid. Todos los derechos reserv ados.





Presentación

ANÁLISIS SINTÁCTICO I

GRAMÁTICAS

El objetivo de este tema es aprender a diseñar gramáticas a partir de un conjunto de reglas
que estas deben cumplir. Para ello, vamos a ampliar algunos conceptos necesarios para las
gramáticas tipo 2 de la jerarquía de Chomsky, a la vez que se revisan conceptos sobre

ambigüedades vistos anteriormente.

También es importante aprender a validar una sentencia para saber si pertenece a una
gramática determinada o no, además de aprender a reconocer cuándo una gramática no está
limpia y qué orden hay que seguir para limpiarla.

Los objetivos a conseguir en este tema son:

Entender la motivación de las Gramáticas Independientes del Contexto (GIC).

Conocer el funcionamiento de los árboles de derivación.

Cómo limpiar una gramática.

Cuál es el orden de limpieza de gramáticas.

Identificar las ambigüedades y las gramáticas ambiguas.

Conocer los conceptos de precedencia y asociatividad.

El problema del else ambiguo.

4
© Univ ersidad Europea de Madrid. Todos los derechos reserv ados.





Introducción

ANÁLISIS SINTÁCTICO I

GRAMÁTICAS

Es importante dominar conceptos como qué es una gramática, cómo se especifica de una
manera formal, qué es el lenguaje generado por una gramática, los tipos de gramáticas
que existen (jerarquía de Chomsky) para construir los conceptos que veremos en este tema.
También necesitamos conceptos como el de token o componentes léxico junto con el de las

expresiones regulares (gramáticas tipo 3 de la jerarquía de Chomsky).

La manera formal de describir una gramática es mediante cuatro términos: el

alfabeto de los símbolos terminales (∑T), el alfabeto de los símbolos no terminales

(∑N), el axioma o símbolo inicial de la gramática (S) y un conjunto de producciones

(P).

Se denota mediante G = {∑T, ∑N, S, P} , y su forma de representarla es mediante la notación
denominada Forma de Backus-Naur (notación BNF), como vemos en la siguiente producción E

→ E + E, donde el único símbolo terminal es +, el no terminal es E, que a su vez es el axioma de

la gramática.

La independencia de una gramática respecto del contexto

También es importante validar que esa gramática es capaz de reconocer sentencias del lenguaje
que se ha definido previamente, y para ello utilizamos unas estructuras denominadas árboles de
derivación o árboles sintácticos.

Por todo lo anterior, las gramáticas nos proporcionan las siguientes ventajas (Aho et al, 1986):

1. Proporcionan una especificación sintáctica precisa y fácil de entender de un lenguaje

de programación.

2. A partir de algunas clases de gramáticas, se puede construir automáticamente un
analizador sintáctico eficiente que determine si un programa fuente está sintácticamente
bien formado o no.

3. Imparte una estructura a un lenguaje de programación útil para la traducción de

programas fuente a código objeto correcto y para la detección de errores.

4. Se pueden añadir mejoras al lenguaje fácilmente.

5
© Univ ersidad Europea de Madrid. Todos los derechos reserv ados.





ANÁLISIS SINTÁCTICO I

GRAMÁTICAS

En detalle

La independencia de una gramática respecto del contexto

Principalmente, debemos ser capaces de construir una gramática a partir de la

especificación de un lenguaje y, una vez obtenida, comprobar que no tiene errores ni

ambigüedades y dejarla preparada para su utilización por un analizador sintáctico.

Para ello, debemos saber distinguir cuándo una gramática es independiente del
contexto (gramáticas tipo 2 de la jerarquía de Chomsky) y cuándo no lo es.

6
© Univ ersidad Europea de Madrid. Todos los derechos reserv ados.





ANÁLISIS SINTÁCTICO I

GRAMÁTICAS

Gramáticas independientes del contexto

Una gramática independiente del contexto (GIC) es una especificación para la estructura

sintáctica de un lenguaje de programación (Louden, 2004). Dependiendo del autor, también se
las denomina gramáticas libres de contexto.

¿Por qué se llaman independientes del contexto?

Un ejemplo de gramática tipo 1 es el siguiente: aBc → aJc, donde para transformar B en J,
tienen que tener a su izquierda a y a su derecha c, por tanto tienen que tener una parte común,

es decir, importa el contexto puesto que dependen de él.

En las GIC, la parte izquierda de las producciones solo pueden tener un símbolo no terminal y

para transformar una palabra en otra, el símbolo no terminal que se sustituye no depende de lo
que haya a su izquierda o a su derecha. Un ejemplo de producción puede ser: A → Bc.

Otro ejemplo de producción podría ser A→ Bc | aBd. A las producciones de la gramática
también se les denomina reglas gramaticales.

Notación BNF

Veamos otro ejemplo mas concreto. Una declaración de variables está formada por

el tipo de la variable y las variables, que pueden ser una variable o varias (una lista

de identificadores), es decir uno o varios identificadores. Los tipos de las variables

pueden ser enteros (int), reales (real) o de tipo caracter (char).

¿Cómo lo especificamos en esta notación?

La declaración la sustituimos por el no terminal D, las variables por el no terminal V y los tipos

posibles por el no terminal T. Los tipos posibles serán int, real o char.

Resultado

7
© Univ ersidad Europea de Madrid. Todos los derechos reserv ados.





ANÁLISIS SINTÁCTICO I

GRAMÁTICAS

En detalle

¿Por qué se llaman independientes del contexto?

Son las gramáticas tipo 2 de la jerarquía de Chomsky y se denominan independientes del

contexto, en contraposición con las de tipo 1, que se denominan dependientes del contexto

o sensibles al contexto.

Algunos autores a las gramáticas de tipo 1 las denominan gramáticas de contexto libre, que

es justo lo contrario de lo que significan.

Ejemplo

Notación BNF

Para especificar esta última producción hemos utilizado la notación BNF, en la que el

primer símbolo es un no terminal (A) que es el nombre de la estructura o producción, el

segundo símbolo es el metasímbolo "→" y este símbolo viene seguido por una cadena de

símbolos que pueden ser:

No terminales (en este caso B, puesto que establecimos un convenio por el que las

letras mayúsculas representaban no terminales).

Símbolos terminales (o símbolos del alfabeto y se representan mediante letras

minúsculas, en esta producción c).

El metasímbolo "|", indicando que hay otra alternativa.

En detalle

Resultado

D → T V.

T → int | real | char.

V → id; | id, V.

Nota1: El punto y coma ";" y la coma "," son terminales, al igual que int o id.

Nota 2: Es importante entender el concepto de recursividad que encierra la producción V
→ id, V. La recursividad es una característica esencial de las GIC y nos permite expresar
el concepto de un identificador seguido de uno o más identificadores. Este concepto de

recursividad no lo hubiéramos podido expresar con una expresión regular.

8
© Univ ersidad Europea de Madrid. Todos los derechos reserv ados.





Árboles de derivación

ANÁLISIS SINTÁCTICO I

GRAMÁTICAS

Ahora necesitamos validar que una sentencia pertenece a esta gramática y para ello necesitamos

una herramienta denominada árbol de derivación o árbol de análisis sintáctico.
¿Qué es una derivación?
Se representa por x ==> y y es la aplicación de una regla de producción a→b a una cadena x
para convertirla en otra cadena o palabra y.

En el ejemplo anterior, partiendo de D → T V, si aplicamos la producción T → int, se deriva
directamente D → int V.

Es importante entender que decimos directamente porque es lo que se obtiene a partir de la

aplicación directa de la producción T → int.

Cuando lo que se aplica es una secuencia de producciones a una cadena se representa por x
==>* y, queriendo indicar que llegamos a otra cadena en más de un paso. En el ejemplo anterior,
D → T V ==>* int a, b, c;, y realizamos, por tanto, derivaciones en más de un paso para
obtener la cadena final.

Derivaciones por la izquierda y la derecha

¿Qué es un árbol de derivación?
Es una representación utilizada para describir el proceso de derivación de una sentencia, donde

se cumple lo siguiente:

La raíz del árbol es el símbolo inicial de la gramática.

Los nodos intermedios del árbol son los no terminales de las producciones que se utilizan.

Estos nodos intermedios tendrán tantos hijos como elementos tenga el lado derecho de la

producción.

Los nodos hoja serán los terminales.
  • Links de descarga
http://lwp-l.com/pdf17086

Comentarios de: Análisis sintáctico I / Gramáticas (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad