Computacion

Páginas: 15 (3669 palabras) Publicado: 13 de noviembre de 2012
Construcción de un analizador léxico para ASPLE con Lex/Flex
Índice (i) • • • •
Funciones del analizador léxico/morfológico Construcción de un analizador léxico/morfológico Funcionamiento básico de Lex/Flex El fichero de especificación Lex/Flex
• • • • Estructura del fichero La sección de definiciones La sección de reglas La sección de funciones de usuario
Marina de la Cruz AlfonsoOrtega

•Primer ejemplo
• El fichero de especificación • Creación del ejecutable • Realización de pruebas

• Segundo ejemplo
• • • • Diseño del fichero de especificación El fichero de especificación Creación del ejecutable y realización de pruebas Modificación del diseño
1 Prácticas de compiladores 2004-2005

Construcción de un analizador léxico para ASPLE con Lex/Flex
Índice (ii) • Los patronesde Lex/Flex
• Descripción • Metacaracteres • Cómo se identifican los patrones en la entrada • Enunciado • Realización de pruebas • Identificación • Patrones o expresiones regulares • Construcción • El orden de las reglas
Marina de la Cruz AlfonsoOrtega

• Tercer ejemplo

• Los tokens del lenguaje ASPLE

• Fichero de especificación Lex/Flex para el lenguaje ASPLE • • • • •
Gestión de losespacios en blanco Control de la posición de los tokens en el fichero de entrada Gestión de los comentarios Gestión de errores Ficheros de entrada/salida de Lex/Flex
2 Prácticas de compiladores 2004-2005

Funciones del analizador léxico/morfológico
• El analizador léxico/morfológico de un compilador es el responsable de identificar

en el fichero del programa fuente los “tokens” del lenguajeparticular para el que ha sido construido el analizador.

Fichero del programa fuente

Analizador léxico

tokens

• Además de identificar los tokens también se encarga de otras tareas como:
• eliminar espacios en blanco (blancos, tabuladores y saltos de línea) • eliminar comentarios • detectar errores morfológicos (símbolo no permitido, identificador demasiado largo, etc)
3 Prácticas decompiladores 2004-2005

Construcción de un analizador léxico/morfológico
• Un analizador morfológico se puede desarrollar con distintos métodos:
• con un autómata finito • con un programa a medida • utilizando una herramienta específica como Lex/Flex

• Independientemente del método seleccionado, para construir el analizador
morfológico, hay que definir los requisitos que debe cumplir elanalizador:
• los tokens que tiene que reconocer: • identificadores • palabras reservadas • constantes (numéricas, booleanas, literales, etc) • símbolos simples (+, -, *. /, etc) • símbolos múltiples (+=, >=, etc) • el formato de los comentarios • los errores morfológicos que debe detectar

4 Prácticas de compiladores 2004-2005

Funcionamiento básico de Lex/Flex
• Lex/Flex es una herramientapara construir analizadores léxicos. • Lex/Flex recibe como entrada un conjunto de descripciones de tokens, y genera la
función C yylex() que es un analizador léxico que reconoce dichos tokens.

• Los tokens se describen mediante patrones que son extensiones de las
expresiones regulares. • Al conjunto de las descripciones de tokens se le llama especificación lex/flex.
Especificación Lex/FlexLex/Flex

lex.yy.c Fichero del programa fuente
Prácticas de compiladores 2004-2005

yylex()

tokens
5

El fichero de especificación Lex/Flex (I)
Estructura del fichero • La estructura del fichero de especificación Lex/Flex se compone de tres
secciones separadas por líneas que contienen el separador %%.
sección de definiciones
%{ /* delimitadores de código C */ %}

%%

secciónde reglas
%%

sección de funciones de usuario

6 Prácticas de compiladores 2004-2005

El fichero de especificación Lex/Flex (II)
La sección de definiciones (i) • La sección de definiciones contiene la siguiente información
• Código C encerrado entre líneas con los caracteres %{ y %} que se copia literalmente en el fichero de salida lex.yy.c antes de la definición de la función yylex()....
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Computacion
  • Computacion
  • Computacion
  • Computacion
  • Computacion
  • Computacion
  • Computacion
  • Computacion

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS