J Flex Cup

8,190 views
7,947 views

Published on

Conferencia sobre JFlex y CUP por Julio Santizo

Published in: Education, Sports, News & Politics
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
8,190
On SlideShare
0
From Embeds
0
Number of Embeds
58
Actions
Shares
0
Downloads
232
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

J Flex Cup

  1. 1. INTRODUCCIÓN A JFLEX Y JAVA CUP Julio Rene Santizo Ochoa
  2. 2. Fases del compilador
  3. 3. Scanner Expresiones regulares Parser Gramatica Lexema Produccion
  4. 4. Análisis descendente LL1 Análisis ascendente SLR LR1 LALR
  5. 5. Que es JFlex? Es una herramienta que genera analizadores lexicos, escritos en Java.
  6. 6. Que es JFlex? Definicion del AL JFlex Analizador Lexico
  7. 7. Que es Java CUP Es una herramienta para la construcción de analizadores sintácticos que genera parsers escritos en java. Los parsers que se obtienen utilizan el método de análisis ascendente LALR
  8. 8. Que es Java CUP Definicion del AS CUP Analizador Sintactico
  9. 9. Como se usan? Se les da un archivo de entrada, con las especificaciones del analizador que queremos generar, estas herramientas se encargan de generarlos y luego podemos utilizar los analizadores generados, en cualquier proyecto de Java.
  10. 10. Como se usan? Para utilizarlos, debemos tenerlos dentro del classpath, invocarlos y luego utilizar las clases generadas como querramos.
  11. 11. Que es el CLASSPATH? The Classpath is an argument set on the command-line, or through an environment variable, that tells the Java Virtual Machine where to look for user-defined classes and packages in Java programs.
  12. 12. Que es una variable de entorno? export CLASSPATH = echo $CLASSPATH
  13. 13. EJEMPLO #1
  14. 14. Integracion con eclipse Agregar external tool jflex Agregar external tool java_cup Agregar biblioteca java_cup.runtime Configurar builders
  15. 15. EJEMPLO #2
  16. 16. Archivos .jflex CODIGO DE USUARIO %% OPCIONES Y MACROS %% REGLAS Y ACCIONES
  17. 17. Codigo de usuario Este codigo, se copia literalmente a la clase del scanner generado. Si esta seccion termina con un comentario de documentacion de la clase para javadoc, se coloca este comentario, de lo contrario se genera un comentario automatico.
  18. 18. Opciones y macros Todas las opciones empiezan con % %class %public %apiprivate %{ ... %}
  19. 19. Opciones y macros %init{ ... %init} %cup %ignorecase %char %line %column MACRO = exp regular
  20. 20. Estados %states <STRING> { expr1 { action1 } expr2 { action2 } }
  21. 21. Reglas y acciones '[:jletter:]' '[:jletterdigit:]' '[:letter:]' '[:digit:]' '[:uppercase:]' '[:lowercase:]' '.'
  22. 22. Reglas y acciones [a-zA-Z] [abc] [^a]
  23. 23. Reglas y acciones * unary postfix operators ('*', '+', '?', {n}, {n,m}) * unary prefix operators ('!', '~') * concatenation (RegExp::= RegExp Regexp) * union (RegExp::= RegExp '|' RegExp)
  24. 24. Funciones en las acciones yytext() Devuelve el lexema reconocido. yylength() Devuelve el la longitud del lexema. yycharat( int n ) Devuelve el enésimo carácter del lexema reconocido. yychar yyline yycolumn
  25. 25. Archivos .cup Package e imports Codigo de usuario Lista de simbolos Precedencia y asociacion Gramatica
  26. 26. Bibliografia http://jflex.de/manual.html http://www2.cs.tum.edu/projects/cup/manual.html LIBRO DEL DRAGON
  27. 27. Material http://www.coecys.com/archivos/MaterialJlexyCup.zip

×