9
1 Sebastián Argüello A60490 semana 3 Autómatas y compiladores CI-1322

1 Sebastián Argüello A60490 semana 3 Autómatas y compiladores CI-1322

Embed Size (px)

Citation preview

Page 1: 1 Sebastián Argüello A60490 semana 3 Autómatas y compiladores CI-1322

1

Sebastián Argüello A60490semana 3

Autómatas y compiladoresCI-1322

Page 2: 1 Sebastián Argüello A60490 semana 3 Autómatas y compiladores CI-1322

El código fuente es divido en secciones y se El código fuente es divido en secciones y se genera una representación interna del genera una representación interna del mismo. mismo.

La gramática libre de contexto representa La gramática libre de contexto representa la forma en que se debe escribir un la forma en que se debe escribir un lenguaje (su sintaxis )lenguaje (su sintaxis )

La semántica describe que lo que el La semántica describe que lo que el programa realizara al ser ejecutado.programa realizara al ser ejecutado.

2

Análisis

Page 3: 1 Sebastián Argüello A60490 semana 3 Autómatas y compiladores CI-1322

Componentes:Componentes:

Terminales: símbolos elementales definidos en la Terminales: símbolos elementales definidos en la gramática.gramática.

No terminales o variables sintácticas: se pueden No terminales o variables sintácticas: se pueden representar a través de otros no terminales o por representar a través de otros no terminales o por conjuntos de hileras de terminales.conjuntos de hileras de terminales.

Producciones: poseen un no terminal, un divisor (una Producciones: poseen un no terminal, un divisor (una flecha) y una secuencia de terminales o no flecha) y una secuencia de terminales o no terminales.terminales.

Se designan algunos los símbolos no terminales Se designan algunos los símbolos no terminales como símbolo de inicio.como símbolo de inicio.

3

Gramática

Page 4: 1 Sebastián Argüello A60490 semana 3 Autómatas y compiladores CI-1322

Muestra los símbolos iníciales de las Muestra los símbolos iníciales de las derivaciones de las gramáticas.derivaciones de las gramáticas.

Propiedades:Propiedades: La raíz tiene como hijos los símbolos de La raíz tiene como hijos los símbolos de

inicio de cada una de sus producciones.inicio de cada una de sus producciones. Cada hoja es un terminal o Cada hoja es un terminal o єє.. Los nodos internos son no terminalesLos nodos internos son no terminales Si un nodo es no terminal, existe una Si un nodo es no terminal, existe una

producción para este hacia sus hijos.producción para este hacia sus hijos.

4

Árbol semántico

Page 5: 1 Sebastián Argüello A60490 semana 3 Autómatas y compiladores CI-1322

El código intermedio se puede representar a El código intermedio se puede representar a través de:través de: Un árbol de sintaxis (representa, jerárquicamente, la Un árbol de sintaxis (representa, jerárquicamente, la

estructura sintáctica del código fuente).estructura sintáctica del código fuente). Una secuencia de instrucciones de tres direcciones. Una secuencia de instrucciones de tres direcciones.

5

Do-while body >

Assign [] v

i + a i

i 1

1: i = i +12: t1 = a [ i ] 3: if t1 < v goto 1

Page 6: 1 Sebastián Argüello A60490 semana 3 Autómatas y compiladores CI-1322

Consiste en reemplazar repetidamente Consiste en reemplazar repetidamente un no terminal por el cuerpo de su un no terminal por el cuerpo de su respectiva producción hasta obtener respectiva producción hasta obtener una hilera conformada por terminales.una hilera conformada por terminales.

La gramática debe de estar bien La gramática debe de estar bien definida para evitar ambigüedad, el definida para evitar ambigüedad, el código fuente debe de interpretarse código fuente debe de interpretarse de una única forma. de una única forma.

6

Derivaciones

Page 7: 1 Sebastián Argüello A60490 semana 3 Autómatas y compiladores CI-1322

Consiste en verificar que el código Consiste en verificar que el código fuente conocida con la gramática fuente conocida con la gramática especificada para un determinado especificada para un determinado lenguaje de programación. lenguaje de programación.

Si una hilera o sección determinada Si una hilera o sección determinada del código fuente no se puede del código fuente no se puede derivar, a partir del símbolo de inicio derivar, a partir del símbolo de inicio de una producción, se reporta el de una producción, se reporta el error de sintaxis de esta.error de sintaxis de esta.

7

Parsing o análisis semántico

Page 8: 1 Sebastián Argüello A60490 semana 3 Autómatas y compiladores CI-1322

Las Las reglas semánticas reglas semánticas sirven para procesar los valores sirven para procesar los valores de los atributos asociados con los símbolos que de los atributos asociados con los símbolos que aparecen en la producción. aparecen en la producción.

El valor de un nodo del árbol de análisis sintáctico se El valor de un nodo del árbol de análisis sintáctico se define a partir del valor de sus hijos y del valor propio del define a partir del valor de sus hijos y del valor propio del nodo. nodo.

8

Atributos sintetizados

Page 9: 1 Sebastián Argüello A60490 semana 3 Autómatas y compiladores CI-1322

Un esquema de traducción sintáctica dirigirá Un esquema de traducción sintáctica dirigirá se produce agregando fragmentos de se produce agregando fragmentos de programa (acciones semánticas) a la programa (acciones semánticas) a la producción de la gramática.producción de la gramática.

A la hora de construir un árbol semántico se A la hora de construir un árbol semántico se utilizan símbolos de referencias, que es el utilizan símbolos de referencias, que es el primero y se busca que sea este solo primero y se busca que sea este solo aparezca una única vez como cabeza de una aparezca una única vez como cabeza de una producción. producción.

Se realizan cotejos entre el código fuente y Se realizan cotejos entre el código fuente y el cuerpo de la producción determinada. el cuerpo de la producción determinada.

9