Java para desenvolver um compilador

21 respostas
rigolin

Olá Doutores,

o que os Senhores acham de usar Java para desenvolver um compilador na disciplina Compiladores na facul?

não tô afim de usar C/C++ e perder um tempão desenvolvendo e obter um resultado mediocre! + dor de cabeça com as estruturas de dados…

o que vc’s acham?

21 Respostas

louds

Eu já desenvolvi vários compiladores usando c++ e digo que não é dificil, provavelmente porque já tou calejado em usar flex e bison.

Java não te compra muito na questão das estruturas de dados que você precisa em um compilador.

Pessoalmente eu não gosto dos formatos utilizados pelas ferramentas java dessa area, me referindo ao ANTLR e o javacc.

Tirando isso, escrever lexical scanners e parser na mão não é uma tarefa dificil se você conhecer como fazer isso, e sua gramática poder ser lida usando LA1/recursivo descendente.

Usar java ou c++ não vai fazer diferença caso você ainda não possua alguma experiência com scanner/parser/ast generators. Para escrever tudo na mão Java vai ser mais produtivo devido a classes como StreamTokenizer.

Porêm se sua gramática for pequena/média, nada vai bater em termos de produtividade a seguinte biblioteca: http://spirit.sourceforge.net/

PS: tenho um exemplo em C de 1 compilador para uma gramática trivial que gera código assembly para pcs, a gramática em ebnf:

identifier ::= ('a'-'z')+
number ::= ('0'-'9')+
expressao ::= identifer '=' identifier (('+' | '-') identifier)* ';'
programa ::= ('int' identifier `;')+
             (identifier '=' number ';')*
             ('faca' [identifier 'vezes'] '{' expressao+ '}' )*

São 432 linhas de código no total. Se quiser só dar 1 toque.

rigolin

louds esta oferta é imperdivel!! meu e-mail é [email removido]… desde já agradeço…

valeu pelo link… aproveitando sua experiência com compiladores… qual livro vc indica para o primeiro contato?.. estou usando “Compilers - Principles, Techiques, and Tools. Alfred, Ravi, Jeffrey” o que acha?

louds

Eu recomendo o tutorial do Jack Crenshaw http://compilers.iecc.com/crenshaw/.

Livros eu já tive acesso a uns dois, o que você citou e outro “Building a compiler with C”, são livros uteis, mas não te ajudam a ir longe já que a parte que falam sobre técnicas mais avançadas são ruins.

Para coisas alêm do básico, coisa que o tutorial do Crenshaw ensina, recomendo ler sobre o gcc, listas e artigos, http://gcc.gnu.org, http://www.ncsa.uiuc.edu/~wendling/tree.html.

E, claro, vasculhar o citeseer, http://citeseer.nj.nec.com/

rigolin

Valeu pelo compilador!!

com esses link’s acho que vou detonar em SB II no próximo semestre…

obrigado…

louds

A vontade. Só uma coisa, não que você vá fazer isso, mas caso venha a entregar ele como trabalho da tua turma, me de 1 pouco de crédito ao menos… :wink:

rigolin

pode ter certeza que citarei seu nome…

eu não sou grande!! mas estou inscrito em um forum que tem grandes…

colocarei algo assim: “Este trabalho não seria concretizado sem o apoio do Rodrigo Kumpera” or “Este trabalho foi embasado em um dos compiladores do Rodrigo Kumpera”… e ai escolhe o crédito…

e ainda estou pensando em colocar na minha monografia um agradecimento ao GUJ pelo apoio na formação… hehe

F

Como voce quer fazer algo em java, acho q esse livro pode te ajudar muito:

Programming Language Processors in Java: Compilers and Interpreters
by David Watt (Author), Deryck Brown (Author)
ISBN: [telefone removido]

vivi_grieco

louds, vc poderia mandar pra mim esse exemplo tbm??? estou fazendo esta disciplina e gostaria de ter uma base para poder fazer um trabalho enorme, de implementação de um compilador C.
meu e-mail é [color=“red”][email removido][/color]

Ironlynx

vivi_grieco,
Aê gata,não querendo bancar o moderador,mas como diria o Daniel,virou feira! :smiley:
Evite(o máximo q puder) de por emails no fórum,se não ele pode ser capiturado por um spider e vc receber coisas do tipo:“Penis Enlargement” ,“Lesbians for Free” ou pior,vírus.Para isso existe a Private msg. :wink:

louds

Para quem quiser o código.

http://kumpera.relato.com.br/compilador.tar.gz

E visitem a home, por favor.

cv1

lalala pra vc tb. :smiley:

marciolx

lalala pra vc tb. :D

eu também caí nessa :? me lembrou daquele jogo do mega drive, toejam e earl :smiley:

Ironlynx

louds seu mané!(Com td respeito!) :evil:
Eu tb caí nessa…PqP! :smiley:

List otarios=new ArrayList();
        otarios.add("Cv");
        otarios.add("marciolx");
        otarios.add("ironlynx");

putz ainda esqueci as aspas(e errei a tag)! :twisted:

Luca

Olá

otarios.add(“Luca”);

[]s
Luca

bandrade

otarios.add(“bandrade”);

dureza… ehehehee

caiofilipini

hmmmm :roll:

otarios.add("Caio");
vfpamp

Eu fiz meu compilador em JAVA.

Utilizei o JAVACC

https://javacc.dev.java.net/

Muito bom, fácil e robusto.

:smiley:

dukejeffrie

Lembrei do que disse o cara da maçã:

em quanto isso, na Sala de Justiça:

otarios.add("dukejeffrie");

que triste.

B

Aproveitando o assunto queria entender mais sobre os compiladores , ja possu um conhecimento basico em programação , alguem me indica uns livros online ja que não estou afim de gastar grana :smiley:

M

"

C

Eu consigo imaginar bem linguagens funcionais sendo aplicadas a um compilador e sendo transformadas numa forma mais eficiente mas ainda equivalente segundo uma prova matematica.

Mas fiquei curioso com o que vc disse, poderia dizer quais sao essas caracteristicas que fazem das linguagens funcionais boas candidatas para escrever compiladores?

Criado 22 de novembro de 2003
Ultima resposta 26 de set. de 2008
Respostas 21
Participantes 15