90 likes | 234 Views
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 )
E N D
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 ) La semántica describe que lo que el programa realizara al ser ejecutado.
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.
Á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.
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.
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.
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.
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.
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.