Analizador léxico

Solo disponible en BuenasTareas
  • Páginas : 8 (1880 palabras )
  • Descarga(s) : 0
  • Publicado : 8 de octubre de 2010
Leer documento completo
Vista previa del texto
Análisis Léxico

Procesadores de Lenguaje (v1.7)

1

Análisis Léxico
Funciones Ignorar caracteres no relevantes Agrupar resto de los caracteres Rechazar agrupaciones inválidas y clasificar las válidas Ejemplo Entrada: 22 números (caracteres)
Incremento (29) 87 72 73 76 69 32 69 68 65 68 49 43 43 32 Igual (61) 61 61 32 Num (33) 53 52 43 Mas (6) Num (33) 50 32 Final (0)

While (25)Identificador (10)

Salida: 8 números (tokens)

25

10

29

61

33

6

33

0

2

Análisis Léxico
Definiciones Lexema Agrupación de caracteres que constituyen los símbolos con los que se forman las sentencias del lenguaje 12 386 CONT i

Token Conjunto de lexemas que puede ser tratado como una unidad sintáctica NUM NUM IDENT IDENT

Criterio ¿Delimitadores? [ ] { }¿Operadores? + - * / Patrón Regla que permite determinar qué lexemas pertenecen a un token Token: IDENTIFICADOR ¿En qué lenguaje se expresan los patrones? lexema: a32

3

Metalenguajes

Conceptos Básicos

4

Metalenguajes
Definición de Patrones En lenguaje natural O demasiado poco detallado a = .5; O demasiado extenso “An identifier is a sequence of letters and digits; the first character mustbe a letter. The underscore _ counts as a letter. Upper- and lowercase letters are different. If the input stream has been parsed into tokens up to a given character, the next token is taken to include the longest string of characters that could possibly constitute a token. Blanks, tabs, newlines, and comments are ignored except as they serve to separate tokens. Some white space is required toseparate otherwise adjacent identifiers, keywords, and constants.” Metalenguajes Descripción formal Precisión Concisión Ventajas Facilitan Comprensión Facilitan Implementación

5

Metalenguajes
Por fase en la que se utilizan Léxicos Autómatas Finitos Expresiones Regulares Sintácticos Diagramas Sintácticos BNF EBNF Semánticos Gramáticas Atribuidas Generación del Código Code Functions

6 Metalenguajes Léxicos

Conceptos Básicos

7

Metalenguajes Léxicos
Autómatas Finitos Paso 1. Definir cada token con un autómata

¿ .5 ?

8

Metalenguajes Léxicos
Expresiones Regulares Operadores Concatenación Cierre: ‘*’ Cierre Positivo: ‘+’ Alternativa: ‘|’ Agrupación: ( ) Ejemplos (0|1|2|3|4|5|6|7|8|9)+ (0|1|2|3|4|5|6|7|8|9)*.(0|1|2|3|4|5|6|7|8|9)+ while ¿ .5 ?
9

pa pa* pa+ p|a(pa)+

Interfaz del Léxico

Procesadores de Lenguaje

10

Construcción Analizador Léxico
Pasos para obtener Analizador Léxico Determinar los tokens Definir un patrón para cada uno Implementar los patrones Manual Herramientas

patrones

Lexico.java

patrones

Herramienta (JFlex)

Lexico.java

11

Funcionalidad Requerida
Independientemente de cómo esté implementadoEliminar espacios y comentarios Control de número de línea Interfaz de Salida Interfaz de Entrada

12

Interfaz de Salida
No se procesa todo el fichero de una vez yylex Valores a devolver ¿Qué valores hay que devolver? ¿De qué tipo es cada uno? Representación ¿Cómo los devuelve el léxico? Protocolo de Acceso

13

Interfaz de Salida
Representación de Tokens Se acuerda representación medianteconstantes public interface static final static final static final static final static final static final } Tokens { int IDENT = 1; int IF = 2; int CTE = 3; int REAL = 4; int IGUAL = 5; int PTOYCOMA = 6;

El 0 se reserva

14

Interfaz de Salida
Representación de Tokens Los tokens de un solo carácter utilizan su código ASCII public interface Tokens { static final int IDENT = 257; staticfinal int IF = 258; static final int CTE = 259; static final int REAL = 260; static final int IGUAL = ‘=’; static final int PTOYCOMA = ‘;’; } Facilita la lectura del sintáctico

// Redundante // Redundante

asigna: IDENT IGUAL PARABRIR expr PARCERRAR PTOYCOMA asigna: IDENT ‘=’ ‘(’ expr ‘)’ ‘;’ Numeración comienza en 256 No se definen como Tokens
15

Interfaz de Salida
Representación del...
tracking img