1 / 9

Autómatas y compiladores CI-1322

Sebastián Argüello A60490 semana 3. Autómatas y compiladores CI-1322. Análisis. El código fuente es divido en secciones y se genera una representación interna del mismo. La gramática libre de contexto representa la forma en que se debe escribir un lenguaje (su sintaxis )

Download Presentation

Autómatas y compiladores CI-1322

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. Análisis El código fuente es divido en secciones y se genera una representación interna del mismo. La gramática libre de contexto representa la forma en que se debe escribir un lenguaje (su sintaxis ) La semántica describe que lo que el programa realizara al ser ejecutado.

  3. Gramática • Componentes: • Terminales: símbolos elementales definidos en la gramática. • No terminales o variables sintácticas: se pueden representar a través de otros no terminales o por conjuntos de hileras de terminales. • Producciones: poseen un no terminal, un divisor (una flecha) y una secuencia de terminales o no terminales. • Se designan algunos los símbolos no terminales como símbolo de inicio.

  4. Árbol semántico • Muestra los símbolos iníciales de las derivaciones de las gramáticas. • Propiedades: • La raíz tiene como hijos los símbolos de inicio de cada una de sus producciones. • Cada hoja es un terminal o є. • Los nodos internos son no terminales • Si un nodo es no terminal, existe una producción para este hacia sus hijos.

  5. Generación de código intermedio. Do-while body > Assign [] v i + a i i 1 1: i = i +12: t1 = a [ i ] 3: if t1 < v goto 1 El código intermedio se puede representar a través de: • Un árbol de sintaxis (representa, jerárquicamente, la estructura sintáctica del código fuente). • Una secuencia de instrucciones de tres direcciones.

  6. Derivaciones Consiste en reemplazar repetidamente un no terminal por el cuerpo de su respectiva producción hasta obtener una hilera conformada por terminales. La gramática debe de estar bien definida para evitar ambigüedad, el código fuente debe de interpretarse de una única forma.

  7. Parsing o análisis semántico Consiste en verificar que el código fuente conocida con la gramática especificada para un determinado lenguaje de programación. Si una hilera o sección determinada del código fuente no se puede derivar, a partir del símbolo de inicio de una producción, se reporta el error de sintaxis de esta.

  8. Atributos sintetizados • Las reglas semánticas sirven para procesar los valores de los atributos asociados con los símbolos que aparecen en la producción. • 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 nodo.

  9. Un esquema de traducción sintáctica dirigirá se produce agregando fragmentos de programa (acciones semánticas) a la producción de la gramática. A la hora de construir un árbol semántico se utilizan símbolos de referencias, que es el primero y se busca que sea este solo aparezca una única vez como cabeza de una producción. Se realizan cotejos entre el código fuente y el cuerpo de la producción determinada.

More Related