Jlex

Páginas: 6 (1259 palabras) Publicado: 5 de noviembre de 2012
UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA
Escuela Técnica Superior de Ingeniería Informática
Procesadores de Lenguajes

Práctica de Procesadores de
Lenguajes
Análisis Léxico con JLex

Javier Vélez Reyes
jvelez@lsi.uned.es

Javier Vélez Reyes jvelez@lsi.uned.es

Objetivos
Funcionamiento del generador de escáneres JLex
Instalación
Introducción
Utilización

Especificación deescáneres en JLex
Especificación de código de ayuda
Especificación de patrones
Especificación de acciones

Integración con el generador de parsers Cup

1

Javier Vélez Reyes jvelez@lsi.uned.es

Índice
Instalación
Introducción
Especificación
Código de Usuario
Directivas JLex
Reglas patrón-acción

Javier Vélez Reyes jvelez@lsi.uned.es

Instalación
Instalación de Java
DescargarJDK de la página Web de Sun
Instalar JDK
Crear una variable de entorno CLASSPATH
Crear una variable de entorno JAVA_HOME a /bin

Instalación de JLex
Descargar de http://garoe.lsi.uned.es/procleng/practica
Crear directorio de trabajo /pdl
Crear directorio para JLex /pdl/JLex
Copia en /pdl/JLex el fichero Main.java de JLex
Compila Main.java javac Main.java

2

Javier Vélez Reyesjvelez@lsi.uned.es

Introducción
Pasos
Especificar scanner.lex en JLex
Lanzar JLex a ejecución con scanner.lex
java –classpath %classpath%;dir Main scanner.lex

Renombrar a Yylex.java (opcional si se configura JLex)
Compilar Yylex.java a Yylex.class
Interpretar Yylex.class
Scanner.lex

JLex

Yylex.
java

Javac

Yylex.
class

Java

Javier Vélez Reyes jvelez@lsi.uned.esIntroducción
Utilización
Fichero fuente de entrada source.c
Llamada a yylex()
Obtener secuencia de tokens

Scanner
Source.c

Basado en
especificaciones JLex

TOKEN TOKEN …

3

Javier Vélez Reyes jvelez@lsi.uned.es

Introducción
Funcionamiento
Scanner.lex

Scanner.lex.java

Javier Vélez Reyes jvelez@lsi.uned.es

Especificación
Tres partes separadas por
Código de Usuario%%

Scanner.lex

Código de ayuda
Se copia al inicio
Import, package, helper class

Directivas JLex
Macros
Ordenes a JLex
Configurar comportamiento

Reglas patrón-acción
Determinar el DT del scanner
Determinar acciones a tomar
Determinar patrones
Gestionar estados

4

Javier Vélez Reyes jvelez@lsi.uned.es

Código de Usuario
Código de usuario
Código de ayuda utilizado dentrode las acciones
Se copia al inicio del programa
No se recomienda definir la clase Token
Suelen aparecer
Importación de clases
Declaración de paquetes
Clases de ayuda
Definición de la clase Token

dentro del fichero jlex. Para mayor claridad es
preferible implementarlo en un fichero aparte
e importarlo desde aquí con una cláusula
import.
Para la practica, sin embargo, se recomiendautilizar la clase Symbol de la herramienta Cup

Javier Vélez Reyes jvelez@lsi.uned.es

Directivas JLex
Código Interno a Clase de Analizador
El código entre %{ y %} se copia al inicio de YyLex

5

Javier Vélez Reyes jvelez@lsi.uned.es

Directivas JLex
Init
El código entre %init{ y %} se copia al constructor

Javier Vélez Reyes jvelez@lsi.uned.es

Directivas JLex
Initthrow%initthrow{ excepción, excepción,… %} define
excepciones que se lanzan en constructor

6

Javier Vélez Reyes jvelez@lsi.uned.es

Directivas JLex
Yylex y Excepciones
%yylexthrow{ excepción , … %} define excepciones
lanzadas por la función yylex()

Javier Vélez Reyes jvelez@lsi.uned.es

Directivas JLex
End of file y excepciones
%eof{ … %} se ejecuta tras encontrar EOF
%eofval{ … %}especifica el valor devuelto al EOF
%eofthrow{ excepción , … %} lanza al encontrar EOF

7

Javier Vélez Reyes jvelez@lsi.uned.es

Directivas JLex
Definiciones de macros
Nombre = definición define una macro
La macro sirve para dulcificar la sintaxis en las reglas
Debe estar definida en una sola línea
Una macro puede usar otra nombre = …{nombre}…

Javier Vélez Reyes jvelez@lsi.uned.es...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Jlex
  • JLex y javaCUP
  • Manual De Jlex Y Cup (Implementación)
  • Instalacion Jlex Y Cup Debian
  • Jlex Tutorial
  • Manual jlex y cup
  • Pasos De Intalacion Jlex Y Cup Con Netbeans

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS