Compilador

Páginas: 6 (1346 palabras) Publicado: 9 de febrero de 2010
Bloque 2:Análisis TEMA 2: ANALIZADOR TEMA LÉXICO 2: ANALIZADOR LÉXICO

Compiladores e Intérpretes

1

Índice
1- Definiciones previas 2- Definición del analizador léxico
2.1- Funcionamiento 2.2- Separación Léxico-Sintáctico 2.3- Errores léxicos

3- Construcción manual del analizador léxico
3.1- Implementación mediante diagrama de estados 3.2- Implementación mediante tabla detransiciones 3.4- Gestión de los buffers

4- Generación automática de analizadores léxicos
4.1- Lex 4.2- JFlex

5- Atributos de los tokens 6- Decisiones en el diseño

Compiladores e Intérpretes

2

1

Índice
1- Definiciones previas 2- Definición del analizador léxico
2.1- Funcionamiento 2.2- Separación Léxico-Sintáctico 2.3- Errores léxicos

3- Construcción manual del analizador léxico3.1- Implementación meidante diagrama de estados 3.2- Implementación mediante tabla de transiciones 3.4- Gestión de los buffers

4- Generación automática de analizadores léxicos
4.1- Lex 4.2- JFlex

5- Atributos de los tokens 6- Decisiones en el diseño

Compiladores e Intérpretes

3

Definiciones previas
Token: componente léxico. Símbolos terminales. Lexema: secuencia caracteres. Puedehaber conjunto de lexemas que se refieren al mismo token. Patrón: describen el conjunto de cadenas de entradas asociados a un token.

Compiladores e Intérpretes

4

2

Definiciones previas
Ejemplo:
Componente Léxico T_Const T_If T_Relación T_Id Lexemas Const If = 2)yyin = abre_f(argv[1], "r"); if (argc == 3)yyout = abre_f(argv[2], "w"); if (yyin != NULL) yylex(); if (argc >= 2)yyin =fclose(yyin); if (argc == 3)yyout = fclose(yyout); exit(0); }

Solución

Compiladores e Intérpretes

107

Generación automática de AL: JFLEX
Motivación:
Sintaxis muy parecida a la de Lex Interfaz gráfica para generar el analizador Genera código Java

Compiladores e Intérpretes

108

54

Generación automática de AL: JFLEX
A partir de la especificación JFLEX se crea un fichero .javaque contiene el scanner. En la clase que se crea hay un método llamado yylex que ejecuta el analizador.

Compiladores e Intérpretes

109

Generación automática de AL: JFLEX
La especificación de JFLEX se divide en tres partes igual que LEX:
Código de usuario Opciones y declaraciones Reglas léxicas

Compiladores e Intérpretes

110

55

Generación automática de AL: JFLEX
Código deusuario: el texto que se introduce aquí se copia directamente en la parte de arriba del analizador generado.
Se introducen los imports necesarios.

Compiladores e Intérpretes

111

Generación automática de AL: JFLEX
Opciones y declaraciones: se componen de:
Conjunto de opciones Código que se introducen dentro de la clase del analizador Ambientes Declaraciones de macros

Cada una de lasopciones se pone con %
Compiladores e Intérpretes 112

56

Generación automática de AL: JFLEX
Algunas variables son:
%class Lexer: comunica a Jflex que la clase debe llamarse lexer. %cup: establece la compatibilidad de Jflex con CUP. %line: permite que se puedan contar las líneas. %column: permite que se puedan contar las columnas.
Compiladores e Intérpretes 113

Generación automática deAL: JFLEX
Algunas variables son:
Char: permite contar los caracteres

El código que se encuentra entre %{%} se copia directamente en la clase generada.

Compiladores e Intérpretes

114

57

Generación automática de AL: JFLEX
Opciones y declaraciones:
Declaración de macros
Se usan para hacer las especificaciones léxicas más entendibles. Consisten en un identificador seguido de = yluego una expresión regular

Declaración de ambientes
%state listaAmbientes

Compiladores e Intérpretes

115

Generación automática de AL: JFLEX
Reglas léxicas: esta sección contiene:
Expresiones regulares y acciones El analizador va leyendo la cadena de entrada y activa la expresión que tiene mayor longitud. Se pueden utilizar los ambientes léxicos funcionan como una condición....
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Compiladores
  • Compilador
  • COMPILADORES
  • Compiladores
  • Compiladores
  • Compiladores
  • compiladores
  • Compiladores

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS