Your SlideShare is downloading. ×
Analisis Lexico
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Analisis Lexico

1,513

Published on

Se presenta el análisis léxico en el contexto del análisis sintáctico y como el uso de expresiones regulares permite reducir el tamaño de los árboles de análisis sintáctico.

Se presenta el análisis léxico en el contexto del análisis sintáctico y como el uso de expresiones regulares permite reducir el tamaño de los árboles de análisis sintáctico.

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,513
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
42
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Análisis Léxico Arboles de Análisis Sintáctico Leonel Morales Díaz [email_address] Copyright 2008 by Leonel Morales Díaz – Ingeniería Simple. Derechos reservados Disponible en: http://www.ingenieriasimple.com/compiladores
  • 2. Problema
    • Construya un programa While
    • Que calcule la raíz cuadrada
    • De B y la ponga en x
    • Se puede convertir en macro
  • 3. Primer Intento
    • { y := B;
    • w := B;
    • x := 0;
    • While w <> 0 do {
    • x++;
    • v := x*x;
    • w := y – v
    • }}
    • Funciona bien si la raíz es exacta (9, 16, etc.)
    • ¿Raíz de 10?
  • 4. Segundo Intento
    • { y := B;
    • w := B;
    • x := 0;
    • While w <> 0 do {
    • x++;
    • v := x*x;
    • w := y – v
    • };
    • x--}
    • Funciona bien si la raíz NO es exacta (8, 12, etc.)
    • ¿Raíz de 9?
  • 5. Tercer Intento
    • { y := B; w := B;
    • x := 0; v := 0;
    • While w <> 0 do {
    • x++;
    • v := x*x;
    • w := y – v
    • };
    • w := v – y;
    • While w <> 0 do {
    • x--;
    • w := 0;
    • }}
    • ¿Funciona?
    • ¿Raíz de 9? ¿Raíz de 5?
  • 6. Analizar Léxico
    • Arbol de Análisis Sintáctico
      • x++
    Programa Instrucción Variable x ++
  • 7. Analizar Léxico
    • Arboles de Análisis Sintáctico
      • Raíz = símbolo inicial
      • Cada hoja = componente léxico
        • O nil (cadena vacía)
      • Nodo intermedio = un no terminal
      • Si A es nodo:
        • A -> X1 X2 X3...Xn es una producción
        • X1 X2 X3...Xn son hijos de A
  • 8. Analizar Léxico
    • Cadena válida -> árbol sintáctico
    • ¿Si no hay árbol sintáctico?
      • Error Léxico
    • Lenguaje generado por una gramática
      • Conjunto de cadenas
      • Que pueden generarse por árboles sintácticos
    • OJO: Hay gramáticas ambiguas
  • 9. Gramáticas Ambiguas
    • prop -> id := expr
    • | if expr then prop
    • | if expr then prop else prop
    • | while expr do prop
    • | begin props_opc end
    • props_opc -> lista_props | nil
    • lista_props -> lista_props ; prop | prop
  • 10. Volviendo al Problema...
    • { y := B; w := B;
    • x := 0; v := 0;
    • While w <> 0 do {
    • x++;
    • v := x*x;
    • w := y – v
    • };
    • w := v – y;
    • While w <> 0 do {
    • x--;
    • w := 0;
    • }}
    • Hay que sustituír los macros
    • Trabajo del preprocesador
  • 11. Analizar Léxico
    • { y := B; w := B;
    • x := 0; v := 0;
    • While w <> 0 do {
    • x++;
    • v := x*x;
    • w := y – v
    • };
    • w := v – y;
    • While w <> 0 do {
    • x--;
    • w := 0;
    • }}
    Programa { Rutina }
  • 12. Analizar Léxico
    • { While w <> 0 do x++;
    • w++;
    • }
    • { While w <> 0 do x++
    • w++;
    • }
    Programa { Rutina }

×