Criado por Rodrigo A Valente
O desenvolvimento de compiladores nunca foi uma tarefa fácil. Entretanto, quando se fala em computação e surge uma tarefa difícil, sempre surgem pessoas que tentam facilitar esse processo. E é por isso que ferramentas como Flex e Bison foram criadas.
Foi desenvolvido por Vern Paxson por volta do ano de 1987. O programa foi todo desenvolvido em linguagem C e é uma versão aprimorada do Lex, trazendo consigo um algoritmo de processamento muito mais veloz que o seu antecessor.
O Flex é um programa gerador de analisadores léxicos. Nele são definidos as regras para o reconhecimento de tokens de sua linguagem.
Essas regras são definidas através de expressões regulares, tendo uma para cada token. O Flex gera um programa em C chamado "lex.yy.c" o qual é o analisar léxico referente as regras descritas.
Definição de Regras no Flex
							
	%%
	"if"			    {return IF;}
	"while"			    {return WHILE;}
	[0-9]*\.?[0-9]+  	    {return NUMBER;}
	%%
							
											
					GNU bison ou comumente conhecido como Bison é uma ferramenta capaz de gerar um analisador sintático em linguagens C, C++ e Java. Foi desenvolvido por Robert Corbett por volta do ano de 1988, e mais tarde foi aprimorada pra se tornar compatível com o yacc (outra ferramenta para se gerar analisadores sintáticos) por Richard Stallman.
O Bison processa uma gramática escrita na notação de Backus Naur. Comumente se faz a definição dos tokens no analisador léxico, entretanto, aqui essa tarefa é invertida; os tokens devem ser definidos no Bison.
Para isso a ferramenta exporta os códigos fontes do programa para que ele possa ser utilizado em outros programas.
Definição de uma Gramática em BNF
							
%%
calculadora:
		%empty
	|	calculadora expressao EOL
	;
expressao:
		NUMERO ADD NUMERO		{$$ = $1 + $3;}
	|	NUMERO SUB NUMERO		{$$ = $1 + $3;}
	;
%%							
							
						
					As duas ferramentas geram programas distintos, entretanto, que podem ser facilmente interligados, já ambos são compatíveis com o yacc, permitindo-os que se completem, agilizando fortemente o processo de criação de compiladores.
Essa facilidade vem em custa de certa perda de desempenho no compilador gerado, já que um solução específica para um problema específico é muito mais eficaz que utlizar ferramentas genéricas.
Por isso, muitas das vezes, Flex e Bison são escolhidos para se gerar o protótipo de uma linguagem.
As duas ferramentas tem um funcionamento muito parecido, separando a estrutura do programa em 3 partes:
Os geradores são ferramentas de linha de comando e totalmente gratuitos, praticamente toda distribuição Linux já as possui instalados.
Para usá-los basta chamar o programa e mostrar o caminho do arquivo.
						
	bison meuparser.y
	flex meulexer.l