Para simplificar a tarefa de desenvolvimento das próprias ferramentas, optou-se por evitar entidades monolíticas, como seria o caso de um programa gerador de envelopes num só passo, construído, por exemplo, utilizando ferramentas típicas como LEX e YACC [Mason & Brown, 1990]. A preferência foi dada a entidades cuja funcionalidade se encontra distribuída por subcomponentes formando uma cadeia de processamento, cada elemento apresentando responsabilidade limitada no resultado final.
Verificou-se que os processadores assim obtidos, embora não sendo
ferramentas canónicas para este tipo de processamento, conseguem
apresentar resultados satisfatórios. O tempo dispendido é várias
ordens de grandeza inferior: o tempo de desenvolvimento da ferramenta
em LEX/YACC, capaz de
processar C++ e gerar os resultados esperados, chegou a dois
meses, enquanto que a solução alternativa, utilizando uma sucessão de
estádios de processamento, escrita em Perl [Wall & Schwartz, 1991] e
AWK [Aho et al., 1988], ficou pronta a gerar código em menos de uma
semana.
A figura 6.3 mostra a organização das várias ferramentas entre si e com o código por elas produzido.
Figure: Acções das ferramentas.