Você está na página 1de 8

Interface grfica para compiladores gratuitos baseados em linha de comando

disponveis na internet
1. Autores
Luciano Eugnio de Castro Barbosa
Flavio Barbieri Gonzaga
2. Resumo
O custo de licenciamento de ferramentas de desenvolvimento de sistemas pode ser
caro. A utilizao de opes gratuitas da internet pode ser uma soluo, porm tais
ferramentas apresentam o inconveniente de serem de difcil utilizao, por no possurem uma
interface grfica. Este trabalho prope o desenvolvimento de editores de cdigo-fonte em
interface grfica, que funcionam em conjunto com compiladores subjacentes baseados em
linha de comando. Apresenta-se o desenvolvimento de um prottipo de um editor para a
linguagem C/C++, que faz uso de um compilador gratuito disponvel na internet.
3. Corpo do Trabalho
3.1. Introduo
A aquisio de ferramentas de desenvolvimento de software por instituies de
ensino superior e nvel tcnico da rea de computao tem se tornado difcil, se forem levados
em conta fatores tais como custo e polticas de licenciamento de software por parte dos
fabricantes mais famosos. O problema se agrava quando, inadvertidamente, instalam-se
cpias ilegais de softwares de desenvolvimento em computadores dos laboratrios destas
instituies.
A alternativa para este problema pode ser a obteno atravs da rede de compiladores
gratuitos, que para fins acadmicos so satisfatrios. Um outro inconveniente gerado a
grande dificuldade de instalao e operao desta categoria de compiladores. necessrio
seguir uma seqncia meticulosa de instalao, e aps isso devem ser decorados uma srie de
comandos no to fceis de serem assimilados, por serem mnemnicos de operaes do
compilador. Como exemplo.
Este trabalho prope a criao de um editor de textos especfico a uma linguagem de
programao, e que seja capaz de interagir com o compilador gratuito baseado em linha de
comando. Por ser de interface grfica, apresenta as vantagens bvias, no que diz respeito
assimilao de uso do compilador. A interface proposta possui no apenas uma descrio
mais amigvel dos comandos do compilador, como tambm oferece um destaque das
palavras-chave da linguagem de programao especfica, medida que o programador digita
o programa.
A seguir, ser apresentada uma exemplificao das dificuldades que podem ser
sentidas usando-se um compilador baseado em linha de comando. O captulo aps esta
reviso exibe mais detalhes do prottipo desenvolvido por este grupo de pesquisa. Depois
sero discutidos tpicos conclusivos a respeito do trabalho, e as fontes bibliogrficas sero
indicadas.

3.2. Reviso Bibliogrfica


Tomando-se como exemplo a linguagem C++, alguns compiladores gratuitos foram
analisados [1].
As palavras-chave foram consultadas [2].
3.2.1. Compiladores C++ para Windows
3.2.1.1. Ming (da GNU)
O compilador M ing gratuito, baseado no compilador da GNU e funciona em DOS
(tambm em Windows). A pgina web desse compilador mostrada abaixo.
http://www.xraylith.wisc.edu/~khan/software/gnu-win32/
3.2.1.2. djgpp
A pgina do djgpp www.delorie.com/djgpp/. Nessa pgina, h todas as informaes
necessrias para copiar, instalar e usar esse compilador. Abaixo h um resumo das
informaes de instalao.
O uso do djgpp muito parecido com o do g++ do unix.
necessrio pegar, num dos servidores ftp listados, no diretrio v2gnu, os arquivos
abaixo (pequenas variaes nas verses dos arquivos em princpio so aceitas). As descries
do significado desses arquivos esto disponveis na pgina do djgpp.
bnu2951b.zip
djdev203.zip
gcc2953b.zip
gpp2953b.zip
txi40b.zip
Todos esses arquivos devem ser descompactados para um diretrio de instalao.
Digamos que o nome desse diretrio seja c:\winap\djgpp. Para simplificar, se quiser, crie um
arquivo chamado djgpp.bat com o contedo abaixo.
@echo off
set PATH=C:\winap\DJGPP\BIN;%PATH%
set DJGPP=c:/winap/djgpp/djgpp.env
echo DJGPP enviromnent installed (SBVB)
3.2.2. g++ (do unix)
O compilador geralmente chamado de cc, ou de gcc ou de g++. Cada usurio deve
verificar como no seu sistema. A menos que se comande de forma diferente, o arquivo
executvel resultante a.out. Deve-se lembrar que em unix qualquer arquivo pode ser
executvel e no apenas os que tem extenso *.exe ou *.com.

Para ver a verso do compilador sendo utilizada, necessrio digitar como mostrado
abaixo. Uma das ltimas verses disponveis 2.95.
g++ -v
Para compilar e linkar
g++ main.cpp // programa com 1 s arquivo fonte
g++ main.cpp file1.cpp file2.cpp // programa com 3 arquivos fonte
Caso se modifique apenas o main.cpp, pode-se compilar apenas esse arquivo e linkar
com os demais com
g++ main.cpp file1.o file2.o
Ensina-se o compilador a procurar arquivos include em mais um diretrio com a
opo -I<diretrio>. No Exemplo abaixo acrescenta-se o diretrio ./include na busca para
includes.
G++ -I./include main.cpp file1.cpp file2.cpp
3.2.2.1. Usando o Help
O help do g++ em unix em grande parte baseado no comando man (manual), que
adicionalmente d ajuda em todo o sistema operacional unix. Por exemplo: para saber ajuda
sobre a funo chamada printf, na linha de comando, deve-se digitar como abaixo.
man printf
Esta breve reviso de alguns compiladores gratuitos ilustra o tempo que pode ser
gasto para que alunos de cursos de graduao em computao ou reas de aplicao
assimilem a grande diversidade de comandos que tem que ser digitados a partir do teclado.
3.3. Prottipo
O prottipo desenvolvido por este grupo de pesquisa apresenta as seguintes
caractersticas:
Feito para o Ambiente Windows;
Funciona com o compilador gratuito Borland c++ 5.5 (linha de comando);
Foi denominado Interfa_C Interface grfica para compilador C e C++;
Possui arquivo de Ajuda prprio;
Conta com a funo de destaque de palavras-chave da linguagem.
O Interfa_C torna mais simples aes como compilar, executar e debugar um projeto,
bem como d acesso a help no formato de hipertexto. Esta facilidade a mais obtida com a
interface grfica, onde todas as funes do compilador podem ser acessadas por cliques do
mouse.

3.3.1. Destaque de Caractersticas Bsicas


Dentre as funes presentes no prottipo, foram selecionadas algumas para serem
detalhadas.
Para iniciar um novo projeto, no menu Arquivo clique no comando Novo, conforme
ilustrado na Figura 1.

Figura 1 Iniciando um novo projeto no Interfa_C.


Uma nova janela de texto ser aberta, onde poder ser digitado o cdigo fonte. O
cdigo ter destaque nas palavras-chave da linguagem (sintax highlight), conforme mostrado
na Figura 2.

Figura 2 Cdigo fonte de um projeto simples, digitado no Interfa_C.


Para compilar um projeto, o comando Compilar, do menu Projeto pode ser
utilizado. Tambm possvel iniciar uma compilao utilizando um atalho: as teclas
CTRL+F9. Para executar um projeto compilado, pode-se clicar no menu Projeto, e selecionar
a opo Executar, ou ento utilizar o atalho provido pela tecla F9.
Para encontrar os erros de compilao, uma poderosa ferramenta foi implementada: a
linha que contm o erro pode ser rapidamente encontrada, dando-se um clique duplo na lista
de erros, exibida nos resultados da compilao. A Figura 3 d uma idia deste recurso.

Figura 3 Localizando uma linha que contm erro de compilao.


O prottipo possui tambm um sistema de help on-line, onde o programador pode
consultar ajuda a respeito tanto de tpicos especficos sobre o compilador subjacente, como
tambm ajuda sobre o prprio uso do programa.
A instalao bastante simples: bastam ser copiados alguns arquivos de
configurao, bem como o prprio executvel do Interfa_C, no diretrio /bin do referido
compilador gratuito.
3.3.2. Detalhando as Funes Avanadas
3.3.2.1. O Destaque de Palavras Chave
Para o reconhecimento de palavras-chave da linguagem (ver Figura 5.), foi
desenvolvido um algoritmo prprio pelo grupo de pesquisa, que obteve a listagem de quais
palavras chave reconhecer atravs do livro [2]. Tal algoritmo apresenta ainda a vantagem de
poder ser facilmente remodelado para outras linguagens, o que agiliza consideravelmente
futuros projetos de APIs para compiladores de linguagens distintas.
Vrias alteraes de cdigo permitiram ao prottipo a vantagem de possuir um bom
desempenho no destaque do cdigo fonte digitado, alm de fazer o tratamento de casos onde a
execuo do algoritmo no se faz necessria (por exemplo ao movimentar o cursor sem que
ocorra a alterao do contedo digitado).
Situaes de digitao de palavras seguidas de caracteres especiais tambm foram
previstas pelo projeto. Por exemplo, ao se digitar scanf(a), a string obtida e analisada pelo
algoritmo deve ser apenas scanf, e no scanf(a). Logo, o destaque de sintaxe deve ser
realizado apenas na palavra scanf. A Figura 4 ilustra a situao tratada de forma correta.

Figura 4 Exibindo palavras reservadas seguidas de parnteses.


A funo de sintax highlight implementada faz uso ainda da distino de cores de
acordo com a categoria da palavra reservada encontrada, o que torna mais confortvel o
trabalho do programador (ver Figura 5.).

Figura 5 Distino de cores por categoria de palavras.


3.3.2.2. Arquivo de Help
O projeto visando ainda o apoio aos usurios do Interfa_C, conta com um arquivo de
Help desenvolvido com a funo de explicar as facilidades da API, bem como de sanar
qualquer dvida restante. A tela inicial do arquivo de ajuda pode ser vista atravs da Figura 6.

Figura 6 Tela inicial do arquivo de Help.

Funes da API Win32 tambm foram utilizadas para possibilitar a utilizao dos
recursos comuns aos arquivos de Help do Windows, tais como busca de palavras e ndices
pelo arquivo de ajuda. A Figura 7 mostra tais recursos.

Figura 7 Recursos do arquivo Help.


O acesso ao arquivo do prprio compilador (em ingls) tambm pode ser realizado
pelo programa, conforme a Figura 8.

Figura 8 Acessando o arquivo de Help do Compilador.


4. Concluses
Como prottipo do projeto aqui descrito, apresentou-se o acima, que j vem sendo
usado com sucesso por dois anos em uma faculdade de Cincia da Computao. Alguns
ajustes ainda precisam ser feitos, como por exemplo o suporte a projetos envolvendo mais de
um arquivo. O Interfa_C j se encontra disponvel gratuitamente para Download nos
principais sites de download.
O projeto continua avanando no sentido de se obter generalidade no suporte com
interface grfica a compiladores gratuitos. Planeja-se construir um prximo prottipo que
permita trabalhar com qualquer compilador, para qualquer linguagem. Isto pode ser obtido
utilizando-se um mdulo de configuraes no software, que permita ao programador ajustar
aspectos como o caminho onde se encontra instalado o compilador subjacente, funcionando
em linha de comando. Em seguida, um arquivo externo contendo uma lista de palavras-chave
da linguagem pode resolver o problema do destaque nas palavras reservadas (sintax
highlight).

5. Bibliografia
[1]VILAS-BOAS, Sergio Barbosa. C++ e Orientao a Objetos em Ambiente
M ultiplataforma [http://www.del.ufrj.br/~villas/livro_c++.html] 20/02/2003.
[2]SCHILDT, Herbert. Borland C++: Completo e Total. So Paulo, M akron, 1997.