Lenguajes y automatas 2 : Pilas Sematica 1.4

40
1.4 Pila semántica de un analizador sintáctico ANGEL FELIPE SUASTE TUZ LUIS ANTONIO CHAN CHUC MIRIAM C. POOT PECH JUAN ISAI CHUC TUZ IRVING S. CHE CANUL

description

Unidad 1, tema 1.4, pilas semanticas de la materia de lenguajes y automatas 2.Presentacion universitaria

Transcript of Lenguajes y automatas 2 : Pilas Sematica 1.4

Page 1: Lenguajes y automatas 2 : Pilas Sematica 1.4

1.4 Pila semántica de un analizador

sintácticoANGEL FELIPE SUASTE TUZ

LUIS ANTONIO CHAN CHUCMIRIAM C. POOT PECH

JUAN ISAI CHUC TUZIRVING S. CHE CANUL

Page 2: Lenguajes y automatas 2 : Pilas Sematica 1.4

Para recordar…

Page 3: Lenguajes y automatas 2 : Pilas Sematica 1.4

Alfabeto

• Se llama alfabeto a un conjunto finito, no vacío. Los elementos de un alfabeto se llaman símbolos. Un alfabeto se define por enumeración de los símbolos que contiene (Alfonseca, 2006).

Ejemplo:

Page 4: Lenguajes y automatas 2 : Pilas Sematica 1.4

Palabra

• Se llama palabra, formada con los símbolos de un alfabeto, a una secuencia finita de los símbolos de ese alfabeto. Se utilizarán letras minúsculas como x o y para representar las palabras de un alfabeto (Alfonseca, 2006).

Ejemplo:

Page 5: Lenguajes y automatas 2 : Pilas Sematica 1.4

Conjunto de palabras

• El conjunto de todas las palabras que se pueden formar con las letras de un alfabeto se llama lenguaje universal de Σ. De momento se utilizará la notación W(Σ) para representarlo. Es evidente que W(Σ) es un conjunto infinito (Alfonseca, 2006).

Ejemplo:

Page 6: Lenguajes y automatas 2 : Pilas Sematica 1.4

Lenguaje

• Se llama lenguaje sobre el alfabeto a todo subconjunto del lenguaje universal de Σ( Alfonseca, 2006).

Ejemplo:

Page 7: Lenguajes y automatas 2 : Pilas Sematica 1.4

System.out.println("Ahora sí, entremos

en materia");

Page 8: Lenguajes y automatas 2 : Pilas Sematica 1.4

Analizador sintáctico

En teoría, se supone que la salida del analizador sintáctico es alguna representación del árbol sintáctico que reconoce la secuencia de tokens suministrada por el analizador léxico.

Page 9: Lenguajes y automatas 2 : Pilas Sematica 1.4

Analizador sintáctico

Page 10: Lenguajes y automatas 2 : Pilas Sematica 1.4

Funciones

• Acceder a la tabla de símbolos (para hacer parte del trabajo del analizador semántico).• Chequeo de tipos ( del analizador semántico).• Generar código intermedio.• Generar errores cuando se producen.

Page 11: Lenguajes y automatas 2 : Pilas Sematica 1.4

Tipos de errores al compilar

• Léxicos, producidos al escribir mal un identificador, una palabra clave o un operador.• Sintácticos, por una expresión aritmética o paréntesis no

equilibrados.• Semánticos, como un operador aplicado a un operando

incompatible.• Lógicos, puede ser una llamada infinitamente recursiva.

Page 12: Lenguajes y automatas 2 : Pilas Sematica 1.4

Manejo de errores

• Indicar los errores de forma clara y precisa. Aclarar el tipo de error y su localización.• Recuperarse del error, para poder seguir examinando la

entrada.• No ralentizar significativamente la compilación.

Page 13: Lenguajes y automatas 2 : Pilas Sematica 1.4

Gramática

La gramática que acepta el analizador sintáctico es una gramática de contexto libre:Gramática : G (N, T, P, S)N = No terminales.T = Terminales.P = Reglas de Producción.S = Axioma Inicial.

Page 14: Lenguajes y automatas 2 : Pilas Sematica 1.4
Page 15: Lenguajes y automatas 2 : Pilas Sematica 1.4

Ejemplo : Se considera la gramática que reconoce las operaciones aritméticas.EE + T|TT T * F| FF ID|NUM|( E )

Page 16: Lenguajes y automatas 2 : Pilas Sematica 1.4

Donde:

En el que: N = {E, T, F} están a la izquierda de la regla.T = {ID, NUM, ( ,) ,+ ,*}P = Son las tres reglas de producción.S = Axioma inicial. Podría ser cualquiera, en este caso es E.

Page 17: Lenguajes y automatas 2 : Pilas Sematica 1.4

Derivaciones

Derivaciones : La idea central es que se considera una producción como una regla de reescritura, donde el no terminal de la izquierda es sustituido por la cadena del lado derecho de la producción.

Tipos de Derivaciones1. Por la izquierda2. Por la derecha

Page 18: Lenguajes y automatas 2 : Pilas Sematica 1.4

Derivaciones por izquierda e izquierda• Derivación por la izquierda : Derivación donde solo el no

terminal de más a la izquierda de cualquier forma de frase se sustituye en cada paso.• Derivación por la derecha o Derivación canónica: Derivación

donde el no terminal más a la derecha se sustituye en cada paso.

Page 19: Lenguajes y automatas 2 : Pilas Sematica 1.4

Todo tiene más sentido con un ejemplo:Sea la gramáticaSaAAaBbCBbCc

Page 20: Lenguajes y automatas 2 : Pilas Sematica 1.4

Queda:

Izquierda:

SaAaaBbCaabbCaabbc (1234)

Derecha:

SaAaaBbCaaBbcaabbc (3421)

Page 21: Lenguajes y automatas 2 : Pilas Sematica 1.4

Ahora, un poco más de nivel

Sea la gramáticaE E + E| E - E| E * E| E / E| E ^ E| id

• Constrúyase una derivación por la izquierda y por la derecha para la siguiente frase:

id1 * id2 + id3

Page 22: Lenguajes y automatas 2 : Pilas Sematica 1.4

Todo tiene más sentido con un ejemplo:izquierda:E E + E E * E + E id1 * E + E id1 * id2 + E id1 * id2 + id3

derecha:E E + E E + id3 E * E + id3 E * id2 + id3 id1 * id2 + id3

Page 23: Lenguajes y automatas 2 : Pilas Sematica 1.4

Árbol sintáctico

• Es una representación que se utiliza para describir el proceso de derivación de dicha sentencia.• Como nodos internos del árbol, se sitúan los elementos no

terminales de las reglas de producción que vayamos aplicando, y tantos hijos como símbolos existan en la parte derecha de dichas reglas.

Page 24: Lenguajes y automatas 2 : Pilas Sematica 1.4
Page 25: Lenguajes y automatas 2 : Pilas Sematica 1.4

Sea la gramática anterior.E E + T | TT T * F | FF ( E ) | a | b

Supongamos que hay que reconocer: ( a + b ) * a + b

Si el árbol puede construirse, es que la sentencia es correcta:

Page 26: Lenguajes y automatas 2 : Pilas Sematica 1.4
Page 27: Lenguajes y automatas 2 : Pilas Sematica 1.4
Page 28: Lenguajes y automatas 2 : Pilas Sematica 1.4

Ambigüedad

• Una gramática G es ambigua si existe xÎL(G) con al menos dos árboles de derivación diferentes.• Ej: La gramática S SbS|ScS|a es ambigüa

Page 29: Lenguajes y automatas 2 : Pilas Sematica 1.4

Materializando con JFlap

• JFLAP is software for experimenting with formal languages topics including nondeterministic finite automata, nondeterministic pushdown automata, multi-tape Turing machines, several types of grammars, parsing, and L-systems. In addition to constructing and testing examples for these, JFLAP allows one to experiment with construction proofs from one form to another, such as converting an NFA to a DFA to a minimal state DFA to a regular expression or regular grammar.

Page 30: Lenguajes y automatas 2 : Pilas Sematica 1.4

Empecemos…

Page 31: Lenguajes y automatas 2 : Pilas Sematica 1.4
Page 32: Lenguajes y automatas 2 : Pilas Sematica 1.4
Page 33: Lenguajes y automatas 2 : Pilas Sematica 1.4
Page 34: Lenguajes y automatas 2 : Pilas Sematica 1.4
Page 35: Lenguajes y automatas 2 : Pilas Sematica 1.4
Page 36: Lenguajes y automatas 2 : Pilas Sematica 1.4
Page 37: Lenguajes y automatas 2 : Pilas Sematica 1.4
Page 38: Lenguajes y automatas 2 : Pilas Sematica 1.4

Ejercicios

SaS|cAAbA|cB| ɛBcB|a| ɛ

Construir cadena acbb

Page 39: Lenguajes y automatas 2 : Pilas Sematica 1.4
Page 40: Lenguajes y automatas 2 : Pilas Sematica 1.4

Fuentes consultadas

Traductores, Compiladores e Intérpretes de María del Mar Aguilera Sierra y Sergio Gálvez Rojas