Flex, JFlex and GALS: Compiler Teaching Support Tools

  • Cinthyan Barbosa UEL
  • Robson Bonidia UTFPR
  • João Neto UENP

Abstract


This paper aims at analyzing educational tools for the compilers dis- cipline, which is considered complex, once considered the number of techniques involved. Allied to this factor, there are not practically any comprehensive tools in this area. Focusing on this issue, the contribution of this research is a comparison between the Flex, JFlex, and GALS tools to the lexical analysis phase of the construction of a compiler. As final considerations, this research presented tools that can be used in the compilers teaching, providing the student with a wider interpretation at each stage of the compilation, making it possible for the Compiler discipline to be more attractive and didactic for students.

References

Aho, A. V., Lam, M. S., Sethi, R. e Ullman, J. D. (2008). Compiladores: princı́pios, técnicas e ferramentas, 2.ed. São Paulo: Pearson Addison Wesley. 634p.Alkmim, G. P. e Mello, B. A. (2010). Ferramenta de apoio às fases iniciais do ensino de linguagens formais e compiladores. In XXI Simpósio Brasileiro de Informática na Educação, João Pessoa, 1–4.

Appel, A. W. e Ginsburg, M. (1998). Modern Compiler Implementation in C. Cambridge: University of Cambridge. 544p.

Backes, J. e Dahmer, A. (2006). C-gen–ferramenta de apoio ao estudo de compiladores. In XIV Workshop sobre Educação em Computação, Porto Alegre, 1–8.

Barbosa, M. R., Silva, F. A., Victor, M. A., Feltrim, V. D., Mirisola, L. G., Gonçalves, P. C., Ramos, J. J. e Alves, L. T. (2009). Implementação de compilador e ambiente de programação icônica para a linguagem logo em um ambiente de robótica pedagógica de baixo custo. In Anais do Simpósio Brasileiro de Informática na Educação, 1–10.

Brito Junior, O. O. e Aguiar, Y. P. C. (2018). Taxonomia de critérios para avaliação de software educativo - tacase. In XXIX Simpósio Brasileiro de Informática na Educação, Fortaleza, 298–307.

Cooper, K. e Torczon, L. (2014). Construindo Compiladores. Rio de Janeiro: Elsevier. 656p.

Costa, K. A. P., Silva, L. A. e Brito, T. P. (2008). Auxı́lio no ensino de compiladores: Software simulador como ferramenta de apoio na área de compiladores. In II Simpósio Internacional de Educação – Linguagens Educativas: Perspectivas Interdisciplinares na Atualidade, Bauru.

Debray, S. (2002). Making compiler design relevant for students who will (most likely) never design a compiler. In Proceedings of the 33rd SIGCSE Technical Symposium on Computer Science Education, 341–345, New York, NY, USA. ACM.

Foleiss, J. H., Assunção, G. P., Cruz, E., Gonçalves, R. e Feltrin, V. (2009). Scc: Um com- pilador c como ferramenta de ensino de compiladores. In Workshop sobre Educação em Arquitetura de Computadores, São Paulo, 15–22.

Furtado, O. J. V. (2003). O ensino de linguagens formais vinculado ao ensino de compi- ladores. In XI Workshop de Educação em Computação, Campinas, 1–8

GALS (2019). Gals home page. Disponı́vel em: http://gals.sourceforge.net/. Acessado em 31/03/2019.

Gesser, C. E. (2003). GALS-Gerador de Analisadores Léxicos e Sintáticos. Florianópolis: Departamento de Informática e Estatı́stica da UFSC. 150p.

Henry, T. R. (2005). Teaching compiler construction using a domain specific language. In Proceedings of the 36th SIGCSE Technical Symposium on Computer Science Edu- cation, 7–11, New York, NY, USA. ACM.

JFlex (2018). Jflex home page. Disponı́vel em: http://jflex.de/. Acessado em 31/03/2019.

José Neto, J. (1987). Introdução à Compilação. Rio de Janeiro: LTC. 222p.

Klein, G. (2010). Jflex user’s manual. Disponı́vel em www.jflex.de/.

Kowaltowski, T. (1993). Implementação de Linguagens de Programação. Rio de Janeiro: Guanabara Dois. 189p.

Leite, V. M., de Barbosa, C. R. S. C., de Mattos Senefonte, H. C. e Neto, J. C. (2013). Uma seleção de compiladores educativos: Caracterı́sticas e aplicações. Encontro Regional de Computação e Sistemas de Informação, Manaus, 1–4.

Levine, J. (2009). Flex & Bison: Text Processing Tools. O’Reilly Media, Inc.

Levine, J., Mason, T. e Brown, D. (1992). Lex e Yacc. O’Reilly Media, Inc., 2 edition

Mcgettrick, A., Boyle, R., Ibbett, R., Lloyd, J., Lovegrove, G. e Mander, K. (2005). Grand challenges in computing: Education - a summary. The Computer Journal, 48(1):42– 48.

Oliveira, H. B. (2014). Um compilador, uma linguagem de programação e uma máquina virtual simples para o ensino de lógica de programação, compiladores e arquitetura de computadores. Trabalho de conclusão de curso, Alfenas: Universidade Federal de Alfenas. 81p.

Pinto, T. T. S. (2015). GGLL – Um gerador de analisadores sintáticos para gramáticas gráficas LL(1). Dissertação de Mestrado. Universidade de São Paulo. 103p.

Ricarte, I. (2008). Introdução à compilação. Rio de Janeiro: Elsevier. 264p.

Rojas, S. G. e Mata, M. A. M. (2005). Java a Tope: Traductores Y Compiladores Con Lex/yacc, Jflex/cup Y Javacc. Universidad de Málaga. 305p.

Setzer, V. W. e Melo, I. S. H. (1988). A Construção de um Compilador. Rio de Janeiro: Campus. 175p.

Uliano, K. C. M. (2016). Tecnologia Digital de Informação e Comunicação (TDIC) na educação: Aplicativos e o mundo tecnológico no contexto escolar. Monografia (Especialização) – Universidade Federal de Santa Catarina, Centro de Ciências da Educação. Curso de Especialização em Educação e Cultura Digital. Florianópolis, 50p.
Published
2019-07-12
BARBOSA, Cinthyan; BONIDIA, Robson; NETO, João. Flex, JFlex and GALS: Compiler Teaching Support Tools. In: WORKSHOP ON COMPUTING EDUCATION (WEI), 27. , 2019, Belém. Anais [...]. Porto Alegre: Sociedade Brasileira de Computação, 2019 . p. 176-187. ISSN 2595-6175. DOI: https://doi.org/10.5753/wei.2019.6628.