You are on page 1of 9

Lenguajes Compiladores e Interpretes

Jose Barboza Jiemenez 201117197 March 2, 2014


Otros elementos alrededor de un compilador. Preprocesador: Se encarga de unicar el programa fuente para poder realizar las fases de un compilador. Carga bibliotecas. Carga subclases, superclases, etc. Carga y enlace (del Sistema Operativo): Resuelve direcciones de memoria. Da acceso a la parte de asignacion de memoria y recursos sicos. IDE: Son utilizados por programadores y tienen funciones adicionales relacionados a la est etica o a la interacci on con el manejo de errores. ejemplo: pos=inicial+velocidad*60 Analizador L exico id1=id2+id3*60

Analizador Sint actico

Figure 1: Arbol 1 Analizador Sem antico

Figure 2: Arbol 2

Generador de C odigo Intermedio tmp1=real(60) tmp2= id3*tmp1 tmp3=id2+tmp2 id1=tmp3

Optimizaci on de C odigo tmp1=id3*real(60) id1=id2+tmp1 Generacion de Codigo movf id3,r2 mulf 60,0,r2 movf id2,r1 addf r2,r1 movf r1,id1 Consideraciones de dise no de un compilador Lenguaje fuente: Tama no del lenguaje. Cambio del lenguaje mientras se construye el compilador, moduliza componentes que ayudan a afrontar el cambio. Lenguaje objeto: Si es nuevo debe asegurarse que sea correcto. Rendimiento: Debe ser r apido. Claridad de c odigo. Localizaci on de errores. Mantenimiento. Transportabilidad. Redestincion: puede cambiar el c odigo objeto generado. Relocalizaci on: puede ejecutar f acilmente en m aquinas diferentes.

Lenguaje de programaci on: Es un dise no formal para expresar procesos que pueden ser ejecutados por una m aquina. Manipula el comportamiento de la m aquina. Taxonom a de lenguajes Abstracci on: Primera generaci on: Binario. Segunda generaci on: Lenguajes simb olicos. Tercera generaci on: Alto nivel, tienen estructuras independientes de la m aquina (C, C++, Java). Cuarta generaci on: Construcci on de aplicaciones con piezas prefabricadas. Quinta generaci on: De uso espec co, el programador conoce el problema y el lenguaje puede ayudar a resolverlo a partir de reglas. Gram atica: Una gram atica describe de forma natural la estructura jer arquica de la construcci on de lenguajes de programaci on. Son las reglas y principios que producen correctamente las combinaciones de oraciones en el lenguaje. ejemplo: Modelo Espa nol Oraci on= Sujeto Predicado Sujeto= Determinante Nombre Predicado= Verbo Complemento Determinante= el Nombre= ni no hombre anciano Verbo= duerme r e come Complemento= pl acidamente intranquilo el ni no duerme intranquilo

Figure 3: Arbol 3

Figure 4: Arbol 4 el hombre r e

Jerarqu a de Chomsky

Figure 5: Tabla 1

Figure 6: Agrupacion de la Jerarqu a

Gram aticas Regulares Es una secuencia de caracteres que forma un patr on de b usqueda. Operaciones: +=Aparece m as de una vez. ?+Aparece m aximo una vez. =Aparece cero o m as veces. []= Agrupaci on. = or. -= rangos, ejemplo A-Z, 0-9. E= vacio Otras variantes: S= Fin. Potencias.

Reglas de expresiones regulares

Figure 7: Tabla 2 Gram aticas Libres de Contexto Conjunto de componentes l exicos denominados S mbolos Terminales. Denotados en min uscula. Se pueden visualizar como hojas de un a rbol sint actico. En las gram aticas libres de contexto, solo se encuentra en la derecha de la producci on. Conjunto de componentes l exicos denominados No Terminales. Producciones conformadas de No Terminales y Terminales. Se denotan con may uscula. Tienen dos partes, el nombre (No Terminales) y la parte derecha que indica la sustituci on y puede tener terminales y no terminales. Denici on de un no terminal como s mbolo inicial.

Ejemplo: Lista= Lista + D gito Lista - D gito D gito D gito= [0-9] 6+8-9

Figure 8: Arbol 5 Propiedades de la Gram atica Cuando se dise na una gram atica se busca que no sea ambigua. Se dice que una gram atica es ambigua cuando se pueden construir al menos dos arboles sint acticos para una misma entrada ejemplo: Op= Op+Op

Figure 9: Arbol generado 1

Figure 10: Arbol generado 2

Otro ejemplo se muestra en la representaci on de los IF anidados: If Cond = if (Exp)thenSentenciaelseSentencia|if (Exp)thenSentencia Exp= Exp+T ermino Exp-T ermino T ermino Sentencia = Exp; Sentencia |print(hola); Sentencia |IfC ond T ermino= [0 9] if(1+2)3+4; if (3+4)6+7; else 8+9

Figure 11: Arbol generado 1

Figure 12: Arbol generado 2