JLex y Java CUP


JLEX

Jlex no es más que un generador de un analizador léxico  parecido a LEX, el cual toma una cadena como entrada una cadena de caracteres, y lo convierte en una secuencia de tokens.

CUP

Cup es un generador de analizadores sintácticos LALR  en Java el cual recibe de entrada un archivo con la estructura de la gramática y su salida es un parser escrito en Java listo para usarse.

Decidí dividir el tutorial en varias secciones para hacer más fácil el aprendizaje de estas herramientas.

INDEX

Anuncio publicitario

20 Responses to “JLex y Java CUP”

  1. hola amigo para un analizador semantico no puedes hacer un ejemplo

    • Gracias por visitar el blog, para un analizador semántico, depende mucho del conjunto de reglas semánticas que se definieron cuando se diseño el lenguaje, por lo tanto no existe un método exacto para un analizador semántico, mas que todo es que uses tu ingenio a la hora de programar, una tabla de símbolos donde guardas el tipo de datos, el nombre y el contenido puede ser de gran ayuda, esta puede ir siendo creada a la hora de analizar sintancticamente y luego verificar si los datos guardados en cada tupla de la tabla tienen sentido semántico.
      saludos

  2. Hasta el momento me ha servido bastante el Tutorial
    Podrías poner un ejemplo de expresion regular en JLex para una cadena con las comillas incluidas al estilo de java por ejemplo: «hola mundo»

  3. Para reconocer las cadenas al estilo Java declaramos:

    StringCharacter = [^\r\n\»\\]
    LineTerminator = \r|\n|\r\n
    %state STRING
    %%

    {

    \» {yybegin(STRING); string.setLength(0);}
    }
    {
    \» {yybegin(YYINITIAL); return token(Tokens.TK_STRING, string.toString());}
    {StringCharacter}+ {string.append(yytext());}
    /* Secuencias de escape */
    «\\b» {string.append(‘\b’);}
    «\\t» {string.append(‘\t’);}
    «\\n» {string.append(‘\n’);}
    «\\f» {string.append(‘\f’);}
    «\\r» {string.append(‘\r’);}
    «\\\»» {string.append(‘\»‘);}
    «\\'» {string.append(‘\»);}
    «\\\\» {string.append(‘\\’);}
    /* Errores */
    \\. {throw new RuntimeException(«Illegal escape sequence \»»+yytext()+»\»»);}
    {LineTerminator} {throw new RuntimeException(«Unterminated string at end of line»);}
    }

    • que tal gracias por el aporte, fijate que ahorita he estado bastante corto de tiempo, no se si queres ayudar con esta seccion del blog, yo te atribuiria tus creditos y todo, espero tu respuesta

  4. Yo estoy utilizando el JFlex con CUPS para desarrollar un compilador de algebra matricial. Tal vez pueda colaborar en algo.

  5. Vamos a ver si logro integrarlo a java. Gracias

  6. salu2 a todos miren yo soy principiante en esto de jlex y jcup, y si me pudieran dar un ejemplo y explicar como funciona
    se los agradeceria muxo, ademas estuve leyendo para poder instalarlo y no se si lo instale bien, spero q me ayuden

  7. termina tu tutorial vs, jajaja…A final de semestre fijo va a estar terminado, valla si no

  8. hola, sabes yo estoy haciendo un ejemplo de jlex y cup en netbeans, el problema que tengo es que estoy haciendo un applet que permita elegir un archivo cualquiera con el texto que quiero reconocer, pero al ejecutar el applet no se me ejecutan los archivos jlex y cup. Tú tienes un ejemplo de un applet cn jlex y cup??? .

    • Dejame ver si entendi bien: Solo pusiste los archivos .lex y .cup ? o si generaste las clases correspondientes de cada uno de estos archivos?
      porque si generaste las clases solo es de instanciarlas en el main de tu applet

  9. Hola gracias! por el aporte, me gustaria saber cual es el comando para ejecutar jlex y cup en ubuntu ya que para windows es, la direccion luego java java_cup.Main _parser.txt

  10. Ha ya lo solucione, en ubuntu es == copie el proyecto lo pege en el escritorio y escribi en la terminal: cd /home/jose/Escritorio/compilador/src/compilador

    estando ahi escribi: java java_cup.Main _parser.txt

    • Podes instalar las 2 herramientas desde los repositoriso oficiales:
      sudo apt-get jlex cup

      Y configura las variables de entorno y solo tendrias que ejecutar el comando jlex para el scanner o cup para el parser
      saludos

  11. Gracias por esta valiosa info….
    Hay una forma de instalarlo en linux no? Cuál es la diferencia con esta forma, sólo compilada?

  12. Buenas noches estoy trabajando en un compilador, y tengo un gran problema esta usando el jlex, y le paso los errores lexicos a un archivo, el problema en si es que ahora me piden que haga el sintactico pero al mismo tiempo debo pasar los errores lexicos tambien que deberia de hacer en este caso?

Trackbacks

Deja una respuesta

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s

A %d blogueros les gusta esto: