João Mares

Estando actualmente no terceiro ano de LEIC no IST, interssa-se preferencialmente por arquitectura de computadores e computação gráfica.

FLEX e BYACC

Ao longo desta série de artigos, temos vindo a ver como utilizar as ferramentas FLEX e BYACC para escrever uma calculadora simples. No primeiro artigo vimos como escrever o scanner da nossa calculadora usando FLEX e no segundo como escrever o parser usando BYACC. Neste artigo veremos o que nos falta para conseguir criar o executável da nossa calculadora, e como lhe adicionar funcionalidade eficientemente.

Continuar a ler

BYACC

No artigo anterior adquirimos algumas noções sobre FLEX e vimos como implementar um scanner simples. Relembrando, o FLEX é um gerador de analisadores lexicais ou scanners, e o BYACC é um gerador de parsers. Usados em conjunto permitem escrever aplicações bastante sofisticadas, mas no nosso artigo limitamo-nos a considerar uma calculadora simples, servindo como exemplo introdutório. Agora que temos o scanner para a nossa calculadora escrito podemos começar a considerar o parser.

Continuar a ler

FLEX: Fast Lexical Analyser

Esta série de artigos introduz as ferramentas UNIX FLEX e BYACC através duma abordagem prática, a implementação duma calculadora simples. Os artigos assumem a familiaridade do leitor com C e C++, a qual será necessária para seguir os exemplos. Antes de prosseguir para a calculadora no entanto, importa explicar o que são e para que servem o FLEX e o BYACC.

  • FLEX: da autoria de Vern Paxson, também conhecido como fast lexical analyser, é um gerador de analisadores lexicais. Um analisador lexical é uma ferramenta que permite ler uma input stream e tomar acções quando partes dessa stream correspondem a padrões definidos pelo programador. Estes padrões, normalmente conhecidos como expressões regulares e usados em muitas outras aplicações (grep, Visual Studio, Notepad++, etc.) tal como suportados por várias linguagens (Java, Perl, PHP, Python, Ruby, Visual Basic, etc.) são fundamentais para o uso do FLEX e serão abordados com mais profundidade noutro artigo.
  • BYACC: o Berkeley YACC, da autoria de Robert Corbett, é um gerador de parsers. Um gerador de parsers permite criar uma aplicação que recebe tokens e caso estes tokens conformem com a gramática especificada pelo programador são tomadas acções. Estes conceitos serão abordados com mais profundidade ao longo dos artigos.

Continuar a ler