SlideShare una empresa de Scribd logo
1 de 7
Descargar para leer sin conexión
Capítulo 4: Análisis Sintáctico




Teoría de Autómatas y Compiladores [ICI-445]
        Capítulo 4: Análisis Sintáctico

                           Dr. Ricardo Soto
                   [ricardo.soto@ucv.cl]
              [http://www.inf.ucv.cl/∼rsoto]


             Escuela de Ingeniería Informática
        Pontificia Universidad Católica de Valparaíso

                                Marzo, 2010




                        Dr. Ricardo Soto    Teoría de Autómatas y Compiladores   1/7
Capítulo 4: Análisis Sintáctico


1. Introducción

  El analizador sintáctico es la fase que sigue al análisis léxico. En esta fase
  se construye un AST (árbol de sintaxis abstracta) para capturar la jerarquía
  de la entrada.

             Programa
                                         Analizador Léxico
              Fuente
                                       Analizador Sintáctico
                                                                        AST
                                        Analizador Semántico

                                         Generador Código
                                           Intermedio

                                        Optimizador Código
                                           Intermedio

                                         Generador Código                      Programa
                                             Objeto                             Objeto


                                  Dr. Ricardo Soto    Teoría de Autómatas y Compiladores   2/7
Capítulo 4: Análisis Sintáctico


2. Funciones del Analizador Sintáctico



         Construir un AST a partir de los tokens recibidos por el
         análizador léxico.
                                              Token
                     Analizador                             Analizador            AST        Analizador
          Programa    Léxico                                Sintáctico                       Semántico
           Fuente                         Nuevo Token?

         Detección de errores sintácticos

  Nota
  El analizador sintáctico también se conoce como parser.




                                    Dr. Ricardo Soto    Teoría de Autómatas y Compiladores          3/7
Capítulo 4: Análisis Sintáctico


3. Herramientas para implementar analizadores
sintácticos


     Generadores de analizadores sintácticos:
         Yacc
         (http://dinosaur.compilertools.net/)
         Bison
         (http://www.gnu.org/software/bison/)
         PLY (Python Lex-Yacc)
         (http://www.dabeaz.com/ply/)
         ANTLR
         (http://www.antlr.org/)
         ...




                               Dr. Ricardo Soto    Teoría de Autómatas y Compiladores   4/7
Capítulo 4: Análisis Sintáctico


4. Implementación de analizadores sintácticos en
ANTLR

  Definición de tokens y reglas                                                    AST

  tokens {
    PROGRAM
    VAR_DEC
    ASSIGN
    ...
  }
  ...

  program : VAR_RW! var_dec BEGIN_RW! body END_RW!
            {## = #( #[PROGRAM, "PROGRAM"] ,##);};

  var_dec : (type IDENT SEMICOLON!)*
            {## = #( #[VAR_DEC, "VAR_DEC"] ,##);};

  type:       NUMERIC_TYPE|STRING_TYPE;

  assign : IDENT ASSIG expr SEMICOLON!
          {## = #( #[ASSIGN, "ASSIGN"] ,##);};




                                   Dr. Ricardo Soto    Teoría de Autómatas y Compiladores   5/7
Capítulo 4: Análisis Sintáctico


4. Implementación de analizadores sintácticos en
ANTLR

  Definición de tokens y reglas                                                    AST

  tokens {
    PROGRAM
    VAR_DEC
    ASSIGN
    ...
  }
  ...

  program : VAR_RW! var_dec BEGIN_RW! body END_RW!
            {## = #( #[PROGRAM, "PROGRAM"] ,##);};

  var_dec : (type IDENT SEMICOLON!)*
            {## = #( #[VAR_DEC, "VAR_DEC"] ,##);};

  type:       NUMERIC_TYPE|STRING_TYPE;

  assign : IDENT ASSIG expr SEMICOLON!
          {## = #( #[ASSIGN, "ASSIGN"] ,##);};




                                   Dr. Ricardo Soto    Teoría de Autómatas y Compiladores   6/7
Capítulo 4: Análisis Sintáctico


5. Ejercicios
  Implemente el analizador sintáctico del lenguaje MiLe (Micro
  Lenguaje)

  Gramática
  program ::= "var" var_dec "begin" body "end"

  var_dec ::= type ident ";"
  type ::= "numeric" | "string"

  assig ::= ident "=" exp ";"
  body ::= assig | st | print | read
  st ::= for | if

  for ::= "for" for_header "{" body "}"
  for_header ::= "(" assign ";" expr ";" number ")"

  if ::= "if" "(" cond ")" "{" body "}" else?
  else ::= "else" "{" body "}"

  read ::= "read" "(" ident ")" ";"
  print ::= "print" "(" string "," ident ")" ";"




                                 Dr. Ricardo Soto    Teoría de Autómatas y Compiladores   7/7

Más contenido relacionado

Destacado

Herramientas flex y bison
Herramientas flex y bisonHerramientas flex y bison
Herramientas flex y bisonalexisdario
 
Compiladores flex bison
Compiladores flex bisonCompiladores flex bison
Compiladores flex bisonPancho Yepez
 
Instalacion de Flex, Bison y Mingw
Instalacion de Flex, Bison y MingwInstalacion de Flex, Bison y Mingw
Instalacion de Flex, Bison y MingwBayo Chicaiza
 
Trabajo de compiladores completo alexandra
Trabajo de compiladores completo alexandraTrabajo de compiladores completo alexandra
Trabajo de compiladores completo alexandraAlexandraMolinaSanchez
 
Tutorial Flex y Bison
Tutorial Flex y BisonTutorial Flex y Bison
Tutorial Flex y BisonShirlid .n
 
Actividad 2 Analizador léxico, sintáctico y semántico
Actividad 2 Analizador léxico, sintáctico y semántico Actividad 2 Analizador léxico, sintáctico y semántico
Actividad 2 Analizador léxico, sintáctico y semántico maryr_
 
El análisis sintáctico
El análisis sintácticoEl análisis sintáctico
El análisis sintácticoportaldelengua
 

Destacado (10)

Flex bison
Flex bisonFlex bison
Flex bison
 
Herramientas flex y bison
Herramientas flex y bisonHerramientas flex y bison
Herramientas flex y bison
 
Compiladores flex bison
Compiladores flex bisonCompiladores flex bison
Compiladores flex bison
 
Instalacion de Flex, Bison y Mingw
Instalacion de Flex, Bison y MingwInstalacion de Flex, Bison y Mingw
Instalacion de Flex, Bison y Mingw
 
Trabajo de compiladores completo alexandra
Trabajo de compiladores completo alexandraTrabajo de compiladores completo alexandra
Trabajo de compiladores completo alexandra
 
Tutorial Flex y Bison
Tutorial Flex y BisonTutorial Flex y Bison
Tutorial Flex y Bison
 
Analisis sintactico
Analisis sintacticoAnalisis sintactico
Analisis sintactico
 
Actividad 2 Analizador léxico, sintáctico y semántico
Actividad 2 Analizador léxico, sintáctico y semántico Actividad 2 Analizador léxico, sintáctico y semántico
Actividad 2 Analizador léxico, sintáctico y semántico
 
Análisis Sintáctico
Análisis SintácticoAnálisis Sintáctico
Análisis Sintáctico
 
El análisis sintáctico
El análisis sintácticoEl análisis sintáctico
El análisis sintáctico
 

Similar a Cap4 ici445

ANALIZADOR SINTACTICO: INTRODUCION, CONCEPTOS, CARACTERISTICAS
ANALIZADOR SINTACTICO: INTRODUCION, CONCEPTOS, CARACTERISTICAS ANALIZADOR SINTACTICO: INTRODUCION, CONCEPTOS, CARACTERISTICAS
ANALIZADOR SINTACTICO: INTRODUCION, CONCEPTOS, CARACTERISTICAS Infomania pro
 
Compiladores
CompiladoresCompiladores
CompiladoresIsabel
 
Analizador de una matriz utilizando compiladores
Analizador de una matriz utilizando compiladoresAnalizador de una matriz utilizando compiladores
Analizador de una matriz utilizando compiladoresChristian Lara
 
Raúl A Gómez A -> Compilador Cambia de Color a una palabra ingresada
Raúl  A Gómez A -> Compilador Cambia de Color  a una palabra ingresadaRaúl  A Gómez A -> Compilador Cambia de Color  a una palabra ingresada
Raúl A Gómez A -> Compilador Cambia de Color a una palabra ingresadaRaul
 
Cap3 compiladores
Cap3 compiladoresCap3 compiladores
Cap3 compiladoresCJAO
 
Python en biología molecular (UNLUX 2008)
Python en biología molecular (UNLUX 2008)Python en biología molecular (UNLUX 2008)
Python en biología molecular (UNLUX 2008)guestadf0d8
 
Ejercicio compiladores
Ejercicio compiladoresEjercicio compiladores
Ejercicio compiladoresSheyli Patiño
 
Manual de Compiladores Léxico y Sintáctico.pdf
Manual de Compiladores Léxico y Sintáctico.pdfManual de Compiladores Léxico y Sintáctico.pdf
Manual de Compiladores Léxico y Sintáctico.pdfDavidErnestoT
 
Interprete sencillo utilizando irony y c sharp
Interprete sencillo utilizando irony y c sharpInterprete sencillo utilizando irony y c sharp
Interprete sencillo utilizando irony y c sharpAndresDvila
 
Estructura de un compilador 2
Estructura de un compilador 2Estructura de un compilador 2
Estructura de un compilador 2perlallamas
 
Interprete sencillo utilizando ply con python 3
Interprete sencillo utilizando ply con python 3Interprete sencillo utilizando ply con python 3
Interprete sencillo utilizando ply con python 3MAURICIOANDRES39
 
TALLER ANÁLISIS SINTÁCTICO
TALLER ANÁLISIS SINTÁCTICOTALLER ANÁLISIS SINTÁCTICO
TALLER ANÁLISIS SINTÁCTICOJOSSELINEMARIBEL
 

Similar a Cap4 ici445 (20)

investigacion 4.4 y 4.5.pdf
investigacion 4.4 y 4.5.pdfinvestigacion 4.4 y 4.5.pdf
investigacion 4.4 y 4.5.pdf
 
ANALIZADOR SINTACTICO: INTRODUCION, CONCEPTOS, CARACTERISTICAS
ANALIZADOR SINTACTICO: INTRODUCION, CONCEPTOS, CARACTERISTICAS ANALIZADOR SINTACTICO: INTRODUCION, CONCEPTOS, CARACTERISTICAS
ANALIZADOR SINTACTICO: INTRODUCION, CONCEPTOS, CARACTERISTICAS
 
Compiladores
CompiladoresCompiladores
Compiladores
 
investigacion.pdf
investigacion.pdfinvestigacion.pdf
investigacion.pdf
 
Analizador de una matriz utilizando compiladores
Analizador de una matriz utilizando compiladoresAnalizador de una matriz utilizando compiladores
Analizador de una matriz utilizando compiladores
 
Raúl A Gómez A -> Compilador Cambia de Color a una palabra ingresada
Raúl  A Gómez A -> Compilador Cambia de Color  a una palabra ingresadaRaúl  A Gómez A -> Compilador Cambia de Color  a una palabra ingresada
Raúl A Gómez A -> Compilador Cambia de Color a una palabra ingresada
 
Cap3 compiladores
Cap3 compiladoresCap3 compiladores
Cap3 compiladores
 
Python en biología molecular (UNLUX 2008)
Python en biología molecular (UNLUX 2008)Python en biología molecular (UNLUX 2008)
Python en biología molecular (UNLUX 2008)
 
Ejercicio compiladores
Ejercicio compiladoresEjercicio compiladores
Ejercicio compiladores
 
lexico.pptx
lexico.pptxlexico.pptx
lexico.pptx
 
Manual de Compiladores Léxico y Sintáctico.pdf
Manual de Compiladores Léxico y Sintáctico.pdfManual de Compiladores Léxico y Sintáctico.pdf
Manual de Compiladores Léxico y Sintáctico.pdf
 
Interprete sencillo utilizando irony y c sharp
Interprete sencillo utilizando irony y c sharpInterprete sencillo utilizando irony y c sharp
Interprete sencillo utilizando irony y c sharp
 
Analizador lexico
Analizador lexicoAnalizador lexico
Analizador lexico
 
Estructura de un compilador 2
Estructura de un compilador 2Estructura de un compilador 2
Estructura de un compilador 2
 
Compiladores (1) pedro vasques
Compiladores (1) pedro vasquesCompiladores (1) pedro vasques
Compiladores (1) pedro vasques
 
Interprete sencillo utilizando ply con python 3
Interprete sencillo utilizando ply con python 3Interprete sencillo utilizando ply con python 3
Interprete sencillo utilizando ply con python 3
 
Curso prog sist
Curso prog sistCurso prog sist
Curso prog sist
 
Analisis semantico
Analisis semanticoAnalisis semantico
Analisis semantico
 
TALLER ANÁLISIS SINTÁCTICO
TALLER ANÁLISIS SINTÁCTICOTALLER ANÁLISIS SINTÁCTICO
TALLER ANÁLISIS SINTÁCTICO
 
J Flex Cup
J Flex CupJ Flex Cup
J Flex Cup
 

Cap4 ici445

  • 1. Capítulo 4: Análisis Sintáctico Teoría de Autómatas y Compiladores [ICI-445] Capítulo 4: Análisis Sintáctico Dr. Ricardo Soto [ricardo.soto@ucv.cl] [http://www.inf.ucv.cl/∼rsoto] Escuela de Ingeniería Informática Pontificia Universidad Católica de Valparaíso Marzo, 2010 Dr. Ricardo Soto Teoría de Autómatas y Compiladores 1/7
  • 2. Capítulo 4: Análisis Sintáctico 1. Introducción El analizador sintáctico es la fase que sigue al análisis léxico. En esta fase se construye un AST (árbol de sintaxis abstracta) para capturar la jerarquía de la entrada. Programa Analizador Léxico Fuente Analizador Sintáctico AST Analizador Semántico Generador Código Intermedio Optimizador Código Intermedio Generador Código Programa Objeto Objeto Dr. Ricardo Soto Teoría de Autómatas y Compiladores 2/7
  • 3. Capítulo 4: Análisis Sintáctico 2. Funciones del Analizador Sintáctico Construir un AST a partir de los tokens recibidos por el análizador léxico. Token Analizador Analizador AST Analizador Programa Léxico Sintáctico Semántico Fuente Nuevo Token? Detección de errores sintácticos Nota El analizador sintáctico también se conoce como parser. Dr. Ricardo Soto Teoría de Autómatas y Compiladores 3/7
  • 4. Capítulo 4: Análisis Sintáctico 3. Herramientas para implementar analizadores sintácticos Generadores de analizadores sintácticos: Yacc (http://dinosaur.compilertools.net/) Bison (http://www.gnu.org/software/bison/) PLY (Python Lex-Yacc) (http://www.dabeaz.com/ply/) ANTLR (http://www.antlr.org/) ... Dr. Ricardo Soto Teoría de Autómatas y Compiladores 4/7
  • 5. Capítulo 4: Análisis Sintáctico 4. Implementación de analizadores sintácticos en ANTLR Definición de tokens y reglas AST tokens { PROGRAM VAR_DEC ASSIGN ... } ... program : VAR_RW! var_dec BEGIN_RW! body END_RW! {## = #( #[PROGRAM, "PROGRAM"] ,##);}; var_dec : (type IDENT SEMICOLON!)* {## = #( #[VAR_DEC, "VAR_DEC"] ,##);}; type: NUMERIC_TYPE|STRING_TYPE; assign : IDENT ASSIG expr SEMICOLON! {## = #( #[ASSIGN, "ASSIGN"] ,##);}; Dr. Ricardo Soto Teoría de Autómatas y Compiladores 5/7
  • 6. Capítulo 4: Análisis Sintáctico 4. Implementación de analizadores sintácticos en ANTLR Definición de tokens y reglas AST tokens { PROGRAM VAR_DEC ASSIGN ... } ... program : VAR_RW! var_dec BEGIN_RW! body END_RW! {## = #( #[PROGRAM, "PROGRAM"] ,##);}; var_dec : (type IDENT SEMICOLON!)* {## = #( #[VAR_DEC, "VAR_DEC"] ,##);}; type: NUMERIC_TYPE|STRING_TYPE; assign : IDENT ASSIG expr SEMICOLON! {## = #( #[ASSIGN, "ASSIGN"] ,##);}; Dr. Ricardo Soto Teoría de Autómatas y Compiladores 6/7
  • 7. Capítulo 4: Análisis Sintáctico 5. Ejercicios Implemente el analizador sintáctico del lenguaje MiLe (Micro Lenguaje) Gramática program ::= "var" var_dec "begin" body "end" var_dec ::= type ident ";" type ::= "numeric" | "string" assig ::= ident "=" exp ";" body ::= assig | st | print | read st ::= for | if for ::= "for" for_header "{" body "}" for_header ::= "(" assign ";" expr ";" number ")" if ::= "if" "(" cond ")" "{" body "}" else? else ::= "else" "{" body "}" read ::= "read" "(" ident ")" ";" print ::= "print" "(" string "," ident ")" ";" Dr. Ricardo Soto Teoría de Autómatas y Compiladores 7/7