Flex, JFlex e GALS: Ferramentas de Apoio ao Ensino de Compiladores

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

Resumo


Este artigo tem como objetivo analisar ferramentas educacionais para a disciplina de Compiladores, que é considerada complexa, dada à quantidade de técnicas envolvidas. Aliado a esse fator, praticamente inexistem ferramentas completas nesse tema. Visando esse problema, a contribuição desta pesquisa, é uma comparação entre as ferramentas Flex, JFlex e GALS para a fase de Análise Léxica da construção de um compilador. Como considerações finais, esta pesquisa apresentou ferramentas que podem ser utilizadas no ensino de compiladores, proporcionando ao aluno uma interpretação mais vasta em cada etapa da compilação, possibilitando que a disciplina de Compiladores possa ser mais atraente e didática para os discentes.

Referências

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.
Publicado
12/07/2019
BARBOSA, Cinthyan; BONIDIA, Robson; NETO, João. Flex, JFlex e GALS: Ferramentas de Apoio ao Ensino de Compiladores. In: WORKSHOP SOBRE EDUCAÇÃO EM COMPUTAÇÃO (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.