Вы находитесь на странице: 1из 35

Teora de Lenguajes y Compiladores

Facultad de Ingeniera
Escuela Profesional Ingeniera de Sistemas / Informtica
Teora de Lenguajes y Compiladores 2012 - II

Ing. CIP William Joel Marn Rodriguez wmarin@unjfsc.edu.pe

Teora de Lenguajes y Compiladores

Unidad II:
Sesin: 09, 10

Analizador Sintctico

semana 09, 10

Teora de Lenguajes y Compiladores

Nivel 5 Nivel 4
Nivel 3 Nivel 2 Nivel 1
3

Lenguajes de alto nivel, sus compiladores y ambientes de desarrollo.

Programacin: Ensambladores, Macroensambladores.

Nivel de sistema operativo: lo que el usuario percibe como la computadora. Nivel de microprogramacin: lenguaje de mquina (0,1). Microcdigo ejecutado sobre el hardware.

Nivel de lgica digital: compuertas,flip-flops, etc. El hardware de la mquina.

Nivel 0

Nivel de dispositivo: transistores / fsica del estado slido.

Teora de Lenguajes y Compiladores

FASES DE COMPILACION
ESTRUCTURAS DE DATOS COMPARTIDAS

Analizador lexicogrfico

Programa fuente

explorador scanner

Analizador sintctico o Parser

Analizador

semntico

Generador de cdigo intermedio

Optimizacin de de cdigo intermedio

Generador de cdigo objeto

Optimizacin de de cdigo objeto

Cdigo objeto

MANEJADOR DE ERRORES

FRONT-END
4

BACK-END

Teora de Lenguajes y Compiladores


C = A+B o Desplazamiento = distancia + longitud _ 3

SCANNER
ANALISIS LEXICOGRAFICO TOKENS
Identificador signo de igual identificador id1 = id2 + id3 signo de ms identificador

PARSER
ANALISIS SINTACTICO

ARBOL DE PARSE
= + id1 28/02/2013 id2 id3 5

Teora de Lenguajes y Compiladores


ANALISIS SEMANTICO SI LA FRASE ES COHERENTE... PROBABLE CONVERSION DE TIPOS
= + id1 id2 id3

GENERACION DE CODIGO INTERMEDIO

CUARTETOS

(+,A,B,X1) (=,-, X1,C)

CORRIDA VIRTUAL MAQUINA VIRTUAL

28/02/2013

GENERACION DE CODIGO OBJETO

Teora de Lenguajes y Compiladores


0001 Load AC A 0002 Add B

0003 Store AC X1 0004 Load AC X1 0005 Store AC C

OPTIMIZACION DE CODIGO OBJETO

0001 Load AC A 0002 Add B

0003 Store AC C

.Obj .Exe
28/02/2013

SISTEMA OPERATIVO

CORRIDA REAL

Teora de Lenguajes y Compiladores

Estructura de Programas
Sintaxis Cmo se escribe el programa Una manera til de representar la sintaxis es el uso de gramticas libres de contexto, desarrolladas por el linguista Noam Chomsky. El Backus Naur Form o BNF nombrado por John Backus y Peter Naur, es equivalente.

Aspectos de un programa
Declaraciones - Informacion para el compilador var A: integer; typedef struct { int A; float B } C; Control Cambios al estado de la mquina if (A<B) { ... } while (C>D) { ... } La estructura se define frecuentemente usando gramtica BNF. Usado por primera vez en 1958 en la definicin de Algol.
8

Teora de Lenguajes y Compiladores

Teora de Lenguajes y Compiladores

10

Teora de Lenguajes y Compiladores

11

Teora de Lenguajes y Compiladores

12

Teora de Lenguajes y Compiladores

Por qu hacer anlisis sintctico?


Podemos proveer una definicin precisa y fcil de entender Una gramtica apropiada imparte estructura a un lenguaje de programacin Podemos construir automticamente un parser que determine si el programa es sintcticamente correcto

Ayuda en el proceso de traduccin


Fcil modificar/aadir al lenguaje

13

Teora de Lenguajes y Compiladores


Anatoma de un Compilador Programa (character stream) Analizador Lxico (Scanner) Token Stream Analizador Sintctico (Parser)

Arbol de Parseo Generador de Cdigo Intermedio


Optimizador de Cdigo Representacin Intermedia Optimizada Generador de Cdigo
14

Cdigo en Assembler

Teora de Lenguajes y Compiladores

15

Teora de Lenguajes y Compiladores


Entrada y Salida de un Parser Entrada: - (123.3 + 23.6) Analizador Sintctico (Parser) Token Stream
minus_op left_paren_op num(123.3) plus_op num(23.6) right_paren_op

Arbol de Parseo

(
123.3

)
23.6

16

Teora de Lenguajes y Compiladores

17

Teora de Lenguajes y Compiladores

18

Teora de Lenguajes y Compiladores


Definicin de la Sintaxis
Tenemos que proveer una definicin precisa y fcil de entender de la sintaxis del lenguaje de programacin Podemos usar expresiones regulares? Podemos usar un lenguaje regular para definir un lenguaje de programacin?

19

Teora de Lenguajes y Compiladores

20

Teora de Lenguajes y Compiladores

21

Teora de Lenguajes y Compiladores

Analizador Sintctico (Parser) Toma la tabla de smbolos y mediante el uso de una gramtica, recupera la estructura sintctica de la oracin. Utilizando la siguiente gramtica para analizar la oracin en el ejemplo: <exp> = <const> <exp> = <ident> <exp> = <ident> : = <exp> <exp> = <exp> * <exp> <exp> = <exp> + <exp>
22

Teora de Lenguajes y Compiladores


El analizador genera el rbol sintctico (parsing tree):
<exp> <exp> <exp> <exp> <ident> <ident>

<exp> <ident>

<exp> <const>

id1

:=

id2

id3

60

23

Teora de Lenguajes y Compiladores


Agrupa los tokens del programa fuente en frases gramaticales que el compilador usar en las siguientes etapas. La estructura jerrquica de un programa es representada por reglas que constituyen una gramtica. Las reglas se representan por medio de producciones. Cada produccin define un smbolo no terminal en funcin de smbolos terminales o tokens, y otros smbolos no terminales. Existe una produccin que define al no terminal programa.
Usualmente, la estructura gramatical que el Anlisis Sintctico detecta en el cdigo fuente es representada por un rbol de parsing. El rbol de parsing demuestra como la secuencia de tokens de entrada puede ser derivada a partir de las reglas de una gramtica.

24

Teora de Lenguajes y Compiladores

Generacin de Cdigo rbol Sintctico


Es una representacin comprimida del rbol de parsing.

Tasa := Base + Recargo / 100 ID := ID + ID / CTE :=

ID

ID

ID
25

CTE

Teora de Lenguajes y Compiladores

26

Teora de Lenguajes y Compiladores

27

Teora de Lenguajes y Compiladores

28

Teora de Lenguajes y Compiladores

29

Teora de Lenguajes y Compiladores

30

Teora de Lenguajes y Compiladores

31

Teora de Lenguajes y Compiladores

32

Teora de Lenguajes y Compiladores

33

Teora de Lenguajes y Compiladores

34

Teora de Lenguajes y Compiladores

Facultad de Ingeniera
Escuela Profesional Ingeniera de Sistemas / Informtica
Teora de Lenguajes y Compiladores 2012 - II

Ing. CIP William Joel Marn Rodriguez wmarin@unjfsc.edu.pe

Вам также может понравиться