SlideShare una empresa de Scribd logo
4
Lo más leído
6
Lo más leído
8
Lo más leído
Usando FlexM. Rico, 2011
Flex en Windows (1/4)Usa MinGW (http://www.mingw.org/)Descarga e instala mingwgetinst (mingw-get-inst-20110211.exe)
Flex en Windows (2/4)Tras la instalación, ejecuta la aplicación MinGW Shell
Flex en Windows (3/4)Comprueba que están instalados:gccflexVim
Flex en Windows (4/4)¿Dónde están los archivos?Si MinGW está instalado en C:/MinGWEl directorio home se encuentra en C:\MinGW\msys\1.0\homeFlex genera un ejecutable Windows (.exe) que se puede ejecutar independientemente de MinGWComo un .exe cualquiera.
Usando flex. Ejemplo simple (1/2)simple.flex%%usernameprintf( "%s", "mariano" );simple.textEsto es una pruebaLinea 2.Linea 3 con un username y alguna cosa mas.Ultima linea.
Usando flex. Ejemplo simple (2/2)Lee simple.flex y genera el código C del parser en el fichero lex.yy.cCrea el parser compilando el fichero lex.yy.cc y linkando con la librería de flex (-L indica la ubicación de la librería de flex)El parser lee de stdin el texto a parsear, por eso se usa la pipa <Este parser sustituye username por mariano
Ejemplo simple2 (1/2)/* Esto es un comentario */%{/* Necesario para la funcionatof */#include <math.h>%}DIGITO    [0-9]ID        [a-z][a-z0-9]*%%{DIGITO}+  {printf("Entero: %s (%d)\n", yytext, atoi(yytext));           }{DIGITO}+"."{DIGITO}* {printf("Un decimal: %s (%g)\n", yytext, atof(yytext));           }{ID}       printf("Un identificador: %s\n", yytext);"/*"[^\n]*"*/"    /* fuera comentarios de una linea */[ \t\n]+         /* fuera espacios o retornos o tabuladores */.               printf("Caracter raro: %s\n", yytext);%%main (intargc, char** argv){  ++argv, --argc; /* me salto el nombre del prog */if (argc > 0){yyin = fopen(argv[0], "r");  }else{yyin = stdin;  }yylex();}Sección de definicionessimple2.flexSección de reglasEn lugar de stdin, que lea de un fichero (argumento de flex)Sección de ejecución
Ejemplo simple2 (2/2)Genero el código C del parserGenero el parserContenido del fichero de pruebaResultado de la ejecución
Ejemplo email (1/2)email.flex/* Esto es un comentario */%{/* Necesario para la funcionatof */#include <math.h>%}USER        [a-z][a-z0-9]*HOST        [a-z][a-z0-9]*%%{USER}"@"{HOST} {printf("Un email: %s \n", yytext);           }[ \t\n]+         /* fuera espacios o retornos o tabs*/.               /*printf("Caracter raro: %s", yytext);*/
Ejemplo email (2/2)Genero el código C del parserGenero el parserContenido del fichero de pruebaResultado de la ejecución
Mail mejoradoEl anterior no consideraba los dominios separados por .Sólo contemplaba algo@algo
Contador de palabras y caracterescontador.flex/* Contador tipo wc de Unix */%{intchars = 0;intwords = 0;intlines = 0;%}%%[a-zA-Z]+  { words++; chars += strlen(yytext); }\n         { chars++; lines++; }.          { chars++; }%%main(intargc, char **argv){yylex();printf("%8d%8d%8d\n", lines, words, chars);}
Más en…http://catalog.compilertools.net/

Más contenido relacionado

PDF
Instalacion de Flex, Bison y Mingw
PPTX
macros Lenguaje ensamblador
PDF
Tema 4: Procesamiento paralelo.
PPTX
Desarrollo basado en patrones
PDF
Gestion entrada y salida
PPT
Código intermedio
DOCX
IEEE 830 1998: Software Requirements Specification (Especificación de requisi...
PPTX
Constructores en Java
 
Instalacion de Flex, Bison y Mingw
macros Lenguaje ensamblador
Tema 4: Procesamiento paralelo.
Desarrollo basado en patrones
Gestion entrada y salida
Código intermedio
IEEE 830 1998: Software Requirements Specification (Especificación de requisi...
Constructores en Java
 

La actualidad más candente (20)

PDF
PPTX
Componentes y Librerías - Tópicos avanzados de programación.
PPTX
Modelos de arquitecturas de computadoras
PPTX
Organización y arquitectura de computadores
DOCX
Proceso de arranque de un so
PPTX
Programación Orientada a Objetos - atributos y métodos
PDF
Transacciones
PPTX
Segunda forma normal
DOCX
Dispositvos de entrada y salida
PPSX
Planificación por prioridad
PDF
Mapa conceptual lenguaje c.
PPT
Microprocesadores: Registros Internos
PPTX
Algoritmo del baquero
PPTX
Requerimiento funcional y no funcional
PPTX
Caracteristicas de Java
PPTX
Expresiones regulares
DOCX
Conceptos Unidad 1 Lenguajes Automatas Introducción a la Teoría de Lenguaje...
PPTX
Programación Orientada a Objetos -Unidad 6 archivos
PPT
Compiladores
PPTX
Modos de direccionamiento.
Componentes y Librerías - Tópicos avanzados de programación.
Modelos de arquitecturas de computadoras
Organización y arquitectura de computadores
Proceso de arranque de un so
Programación Orientada a Objetos - atributos y métodos
Transacciones
Segunda forma normal
Dispositvos de entrada y salida
Planificación por prioridad
Mapa conceptual lenguaje c.
Microprocesadores: Registros Internos
Algoritmo del baquero
Requerimiento funcional y no funcional
Caracteristicas de Java
Expresiones regulares
Conceptos Unidad 1 Lenguajes Automatas Introducción a la Teoría de Lenguaje...
Programación Orientada a Objetos -Unidad 6 archivos
Compiladores
Modos de direccionamiento.
Publicidad

Destacado (8)

PDF
Compiladores - Flex y Bison
PDF
Tutorial Flex y Bison
PDF
Compiladores flex bison
PDF
Herramientas flex y bison
PPT
Incorporacion De Una Tabla De Simbolos Compiladores
PPSX
Administrador de Tabla de Símbolos
PPT
TABLA DE SIMBOLOS
PDF
INTRODUCCION A FLEX Y BISON
Compiladores - Flex y Bison
Tutorial Flex y Bison
Compiladores flex bison
Herramientas flex y bison
Incorporacion De Una Tabla De Simbolos Compiladores
Administrador de Tabla de Símbolos
TABLA DE SIMBOLOS
INTRODUCCION A FLEX Y BISON
Publicidad

Similar a Usando flex en Windows (20)

PPTX
CRUD básico con Symfony
PDF
PDF
Symfony2 Formacion y primeros pasos
PDF
Comandos linux
PDF
Clase3_Python-CTIC
PDF
Practica 5
PDF
Comandos linux unix de manipulación de archivos y directorios
PDF
Comando de linux
PDF
Comandos basicos linux
PDF
tutorial0.pdf
PDF
PDF
Realidad Aumentada 01 documentacion tapir
PDF
Programación en c primer programa en c
PDF
Estandar documentacion xml
PDF
Perl4 io
PPT
programacion de sistemas de informacion.ppt
PDF
Manual Bàsic PS Tools
PPTX
Estructura de un programa en c
PPT
Redes
CRUD básico con Symfony
Symfony2 Formacion y primeros pasos
Comandos linux
Clase3_Python-CTIC
Practica 5
Comandos linux unix de manipulación de archivos y directorios
Comando de linux
Comandos basicos linux
tutorial0.pdf
Realidad Aumentada 01 documentacion tapir
Programación en c primer programa en c
Estandar documentacion xml
Perl4 io
programacion de sistemas de informacion.ppt
Manual Bàsic PS Tools
Estructura de un programa en c
Redes

Más de Mariano Rico (12)

PDF
Lexicalizing ontologies with Lemonade Tools
PDF
Linked data con R
PDF
Redes sociales en el ámbito investigador y académico
PDF
Plagio vs. Síntesis
PDF
Redes sociales en el ámbito académico y científico
PDF
Presencia en la web: redes científicas y difusión de publicaciones
PDF
DBpedia del idioma español
PDF
Curso LaTeX. UAM, 2012
PPTX
Curso Herramientas Avanzadas de Apoyo a la Investigación (versión 2011)
PPT
Introducción a LaTeX 2010
PPT
Curso HIAI Versión Julio 2009
PPT
Curso "Herramientas Informáticas de apoyo a la investigación"
Lexicalizing ontologies with Lemonade Tools
Linked data con R
Redes sociales en el ámbito investigador y académico
Plagio vs. Síntesis
Redes sociales en el ámbito académico y científico
Presencia en la web: redes científicas y difusión de publicaciones
DBpedia del idioma español
Curso LaTeX. UAM, 2012
Curso Herramientas Avanzadas de Apoyo a la Investigación (versión 2011)
Introducción a LaTeX 2010
Curso HIAI Versión Julio 2009
Curso "Herramientas Informáticas de apoyo a la investigación"

Último (20)

PDF
Conecta con la Motivacion - Brian Tracy Ccesa007.pdf
PDF
Escuelas Desarmando una mirada subjetiva a la educación
PDF
Integrando la Inteligencia Artificial Generativa (IAG) en el Aula
PDF
Didactica de la Investigacion Educativa SUE Ccesa007.pdf
PDF
GUIA DE: CANVA + INTELIGENCIA ARTIFICIAL
DOCX
V UNIDAD - PRIMER GRADO. del mes de agosto
PDF
Salcedo, J. et al. - Recomendaciones para la utilización del lenguaje inclusi...
PDF
el - LIBRO-PACTO-EDUCATIVO-GLOBAL-OIEC.pdf
PDF
Punto Critico - Brian Tracy Ccesa007.pdf
PDF
Educación Artística y Desarrollo Humano - Howard Gardner Ccesa007.pdf
PDF
COMUNICACION EFECTIVA PARA LA EDUCACION .pdf
PDF
Guia de Tesis y Proyectos de Investigacion FS4 Ccesa007.pdf
DOCX
Tarea De El Colegio Coding For Kids 1 y 2
PDF
biología es un libro sobre casi todo el tema de biología
PDF
TRAUMA_Y_RECUPERACION consecuencias de la violencia JUDITH HERMAN
PDF
DI, TEA, TDAH.pdf guía se secuencias didacticas
PDF
Metodologías Activas con herramientas IAG
DOCX
UNIDAD DE APRENDIZAJE 5 AGOSTO tradiciones
PDF
benveniste-problemas-de-linguistica-general-i-cap-6 (1)_compressed.pdf
PDF
Lección 6 Escuela Sab. A través del mar rojo.pdf
Conecta con la Motivacion - Brian Tracy Ccesa007.pdf
Escuelas Desarmando una mirada subjetiva a la educación
Integrando la Inteligencia Artificial Generativa (IAG) en el Aula
Didactica de la Investigacion Educativa SUE Ccesa007.pdf
GUIA DE: CANVA + INTELIGENCIA ARTIFICIAL
V UNIDAD - PRIMER GRADO. del mes de agosto
Salcedo, J. et al. - Recomendaciones para la utilización del lenguaje inclusi...
el - LIBRO-PACTO-EDUCATIVO-GLOBAL-OIEC.pdf
Punto Critico - Brian Tracy Ccesa007.pdf
Educación Artística y Desarrollo Humano - Howard Gardner Ccesa007.pdf
COMUNICACION EFECTIVA PARA LA EDUCACION .pdf
Guia de Tesis y Proyectos de Investigacion FS4 Ccesa007.pdf
Tarea De El Colegio Coding For Kids 1 y 2
biología es un libro sobre casi todo el tema de biología
TRAUMA_Y_RECUPERACION consecuencias de la violencia JUDITH HERMAN
DI, TEA, TDAH.pdf guía se secuencias didacticas
Metodologías Activas con herramientas IAG
UNIDAD DE APRENDIZAJE 5 AGOSTO tradiciones
benveniste-problemas-de-linguistica-general-i-cap-6 (1)_compressed.pdf
Lección 6 Escuela Sab. A través del mar rojo.pdf

Usando flex en Windows

  • 2. Flex en Windows (1/4)Usa MinGW (http://www.mingw.org/)Descarga e instala mingwgetinst (mingw-get-inst-20110211.exe)
  • 3. Flex en Windows (2/4)Tras la instalación, ejecuta la aplicación MinGW Shell
  • 4. Flex en Windows (3/4)Comprueba que están instalados:gccflexVim
  • 5. Flex en Windows (4/4)¿Dónde están los archivos?Si MinGW está instalado en C:/MinGWEl directorio home se encuentra en C:\MinGW\msys\1.0\homeFlex genera un ejecutable Windows (.exe) que se puede ejecutar independientemente de MinGWComo un .exe cualquiera.
  • 6. Usando flex. Ejemplo simple (1/2)simple.flex%%usernameprintf( "%s", "mariano" );simple.textEsto es una pruebaLinea 2.Linea 3 con un username y alguna cosa mas.Ultima linea.
  • 7. Usando flex. Ejemplo simple (2/2)Lee simple.flex y genera el código C del parser en el fichero lex.yy.cCrea el parser compilando el fichero lex.yy.cc y linkando con la librería de flex (-L indica la ubicación de la librería de flex)El parser lee de stdin el texto a parsear, por eso se usa la pipa <Este parser sustituye username por mariano
  • 8. Ejemplo simple2 (1/2)/* Esto es un comentario */%{/* Necesario para la funcionatof */#include <math.h>%}DIGITO [0-9]ID [a-z][a-z0-9]*%%{DIGITO}+ {printf("Entero: %s (%d)\n", yytext, atoi(yytext)); }{DIGITO}+"."{DIGITO}* {printf("Un decimal: %s (%g)\n", yytext, atof(yytext)); }{ID} printf("Un identificador: %s\n", yytext);"/*"[^\n]*"*/" /* fuera comentarios de una linea */[ \t\n]+ /* fuera espacios o retornos o tabuladores */. printf("Caracter raro: %s\n", yytext);%%main (intargc, char** argv){ ++argv, --argc; /* me salto el nombre del prog */if (argc > 0){yyin = fopen(argv[0], "r"); }else{yyin = stdin; }yylex();}Sección de definicionessimple2.flexSección de reglasEn lugar de stdin, que lea de un fichero (argumento de flex)Sección de ejecución
  • 9. Ejemplo simple2 (2/2)Genero el código C del parserGenero el parserContenido del fichero de pruebaResultado de la ejecución
  • 10. Ejemplo email (1/2)email.flex/* Esto es un comentario */%{/* Necesario para la funcionatof */#include <math.h>%}USER [a-z][a-z0-9]*HOST [a-z][a-z0-9]*%%{USER}"@"{HOST} {printf("Un email: %s \n", yytext); }[ \t\n]+ /* fuera espacios o retornos o tabs*/. /*printf("Caracter raro: %s", yytext);*/
  • 11. Ejemplo email (2/2)Genero el código C del parserGenero el parserContenido del fichero de pruebaResultado de la ejecución
  • 12. Mail mejoradoEl anterior no consideraba los dominios separados por .Sólo contemplaba algo@algo
  • 13. Contador de palabras y caracterescontador.flex/* Contador tipo wc de Unix */%{intchars = 0;intwords = 0;intlines = 0;%}%%[a-zA-Z]+ { words++; chars += strlen(yytext); }\n { chars++; lines++; }. { chars++; }%%main(intargc, char **argv){yylex();printf("%8d%8d%8d\n", lines, words, chars);}