El proceso de compilación

Post on 07-Jan-2016

27 views 0 download

description

El proceso de compilación. Introducción. Partes del proceso de compilación. Análisis Programa fuente  Representación intermedia Síntesis Representación Intermedia  Programa objeto. Análisis del programa fuente. Análisis lexicográfico (LR – GR) Detecta palabras de los LR  lexemas - PowerPoint PPT Presentation

Transcript of El proceso de compilación

El proceso de compilaciónIntroducción

Partes del proceso de compilación

Análisis Programa fuente Representación intermedia

SíntesisRepresentación Intermedia Programa objeto

Análisis del programa fuenteAnálisis lexicográfico (LR – GR)

Detecta palabras de los LR lexemasCategoriza en Tokens (Categoría Léxica)Recibe Caracteres Entrega TokensAnalizador Léxico Scanner

Análisis sintáctico (LIC – GIC)Recibe Tokens Determina corrección de la

construcciónAnalizador sintáctico Parser

Análisis semánticoSemántica estática – Semántica en Tiempo de

ejecuciónTodo lo que la LIC no puede verificar

Lenguaje Micro de FischerEl único tipo de dato es entero.Los identificadores son declarados implícitamente. Longitud máxima de 32

caracteres.Los identificadores comienzan con una letra y están compuestos de letras y

dígitos.Las constantes son secuencias de dígitos (números enteros).Hay dos tipos de sentencias: Asignación ID := Expresión;

Expresión es infija y se construye con identificadores, constantes y los operadores + y –; los paréntesis están permitidos.

Entrada/Salida leer (lista de IDs); escribir (lista de Expresiones);

Cada sentencia termina con un "punto y coma" (;). El cuerpo de un programa está delimitado por inicio y fin.inicio, fin, leer y escribir son palabras reservadas y deben escribirse en

minúscula.

Definición de los TokensEn el Programa Fuente Nombre del TokenInicio INICIOFin FINLeer LEEREscribir ESCRIBIR:= ASIGNACIÓN( PARENIZQUIERDO) PARENDERECHO, COMA; PUNTOYCOMA+ SUMA- RESTA

Gramática Léxica<token> -> uno de <identificador> <constante>

<palabraReservada> <operadorAditivo> <asignación> <carácterPuntuación>

<identificador> -> <letra> {<letra o dígito>}<constante> -> <dígito> {dígito>}<letra o dígito> -> uno de <letra> <dígito><letra> -> una de a-z A-Z<dígito> -> uno de 0-9<palabraReservada> -> una de inicio fin leer escribir<operadorAditivo> -> uno de + -<asignación> -> :=<carácterPuntuación> -> uno de ( ) , ;

Gramática Sintáctica<programa> -> inicio <listaSentencias> fin<listaSentencias> -> <sentencia> {<sentencia>}<sentencia> -> <identificador> := <expresión> ; |leer ( <listaIdentificadores> ) ; | escribir ( <listaExpresiones>

) ;<listaIdentificadores> -> <identificador> {, <identificador>}<listaExpresiones> -> <expresión> {, <expresión>}<expresión> -> <primaria> {<operadorAditivo>

<primaria>}<primaria> -> <identificador> | <constante> | ( <expresión>

)

EjerciciosDe las gramáticas dadas informe:

el conjunto de noterminales, el conjunto de terminales, el conjunto de metasímbolos

En base a las gramáticas descriptas:escriba un programa en Micro que sea mínimo y

correcto.escriba un programa correcto que utilice todos los

elementos definidos. Informe si := es un operador. Justifique su

respuesta.

Próximos temasAnalizador léxico para Micro

El AFD para implementar el scanner

El parser para MicroEl Análisis Sintáctico Descendente Recursivo

(ASDR)El Árbol de Análisis Sintáctico (AAS)El Procedimiento de Análisis Sintáctico (PAS) El procedimiento Match(t)