Criar um compilador usando C++

991 views
Skip to first unread message

Nathan Campos

unread,
Jul 31, 2009, 3:16:19 PM7/31/09
to ccppbrasil
Olá,
Estou aprendendo C++, mas como todas as linguagens que já aprendi(Um
pouco de Java, mediano de VB, algo de Delphi) sempre quis começar com
coisas grandes, como o meu primeiro programa em Delphi foi um chat com
mu\ilhares de funções, em Visual Basic foi um comversor de arquivos
que convertia e enviava os aquivos para um dispositivo portátil, entre
outras coisas, mas todos deram certo, mas o meu projeto em C++(E foi
por isso que comecei a aprender C++) é criar um compilador de uma
linguagem que eu quero inventar, como soube que alguns compiladores
foram escritos em C++, logo fui querer aprender para criar a minha
própria linguagem, mas isso é o sentido de eu estar aprendendo C++,
então adoraria se vocês me ajudassem passando alguns tutoriais, não
importa se forem em inglês pois eu sei.
Lembrem-se que eu uso g++ como compilador, não o Visual C++.

Obrigado,
Nathan Paulino Campos

Paulo Rogério Panhoto

unread,
Jul 31, 2009, 3:24:50 PM7/31/09
to ccppb...@googlegroups.com
Você pode começar por algum livro sobre compiladores, tal como:

* Compiladores - Princípios, Técnicas e Ferramentas 2. ed.
Alfred V. Aho, Monica S. Lam e Ravi Sethi

* Introdução à Compilação
João José Neto

Depois disso, você pode pensar em um interpretador que é mais fácil para
começar.

Thiago Marinello Paulino Cesar

unread,
Jul 31, 2009, 3:30:06 PM7/31/09
to ccppb...@googlegroups.com
Antes de tudo, eu gostaria de aproveitar esse e-mail para tornar
pública a minha sincera admiração aos moderadores desta lista por seu
admirável exemplo de paciência e tolerância. Eu em seu lugar não
saberia me comportar dessa maneira.

Bom.. sobre compiladores:

Este é o material básico e clássico sobre construção de compiladores:
http://www.amazon.com/Compilers-Principles-Techniques-Alfred-Aho/dp/0201100886

Se tiver alguma dúvida conceitual (e você terá todas), leia algum desses:
http://www.amazon.com/s/ref=nb_ss_gw_0_16?url=search-alias%3Daps&field-keywords=formal+languages+and+automata&x=0&y=0&sprefix=formal+languages

Atenciosamente,

--
Thiago Marinello Paulino Cesar
thi...@marinello.eng.br
+55 19 9248 0860



2009/7/31 Nathan Campos <eeep...@gmail.com>:

Nathan Campos

unread,
Jul 31, 2009, 3:33:12 PM7/31/09
to ccppb...@googlegroups.com
Olá Paulo,
Obrigado pelas indicações de livros, mas como nos outros projetos eu
não quero gastar dinheiro logo no começo e recentemente para começar a
aprender C++ comprei a quinta edição do livro: C++, Como Programar da
Deitel, mas se para começar é mais fácil com um interpretador, então eu
prefiro criar um interpretador, só para começar, então você poderia me
passar algo para criar um.

Obrigado,
Nathan Paulino Campos

Bruno Sanches

unread,
Jul 31, 2009, 3:36:50 PM7/31/09
to ccppb...@googlegroups.com
O livro

segundo  
* Compiladores - Princípios, Técnicas e Ferramentas 2. ed.
Alfred V. Aho, Monica S. Lam e Ravi Sethi

que ele le indicou lhe ensina como fazer um interpretador tambem, é um livro excelente, praticamente a biblia dos compiladores e vale muito a pena.

Bruno Sanches
========================
http://bcsanches.wordpress.com


2009/7/31 Nathan Campos <eeep...@gmail.com>

Nathan Campos

unread,
Jul 31, 2009, 3:36:46 PM7/31/09
to ccppb...@googlegroups.com
Olá Thiago,
Estava escrevendo a mensagem anterior e não deu para saber que você
tinha mandado um email, mas como já disse na mensagem anterior: Não
quero gastar dinheiro logo no começo.

Obrigado,
Nathan Paulino Campos

Ziviani

unread,
Jul 31, 2009, 3:52:52 PM7/31/09
to ccppb...@googlegroups.com
Baixa de algum lugar da internet. Mas o livro do dragão você vai querer ter, mesmo sendo carinho.

2009/7/31 Nathan Campos <eeep...@gmail.com>



--
José Ricardo Ziviani

Alex Queiroz

unread,
Jul 31, 2009, 3:58:06 PM7/31/09
to ccppb...@googlegroups.com
Hallo,

On 7/31/09, Nathan Campos <eeep...@gmail.com> wrote:
>
> Olá Thiago,
> Estava escrevendo a mensagem anterior e não deu para saber que você
> tinha mandado um email, mas como já disse na mensagem anterior: Não
> quero gastar dinheiro logo no começo.
>

Alguns itens neste link sao de graca:

http://www.ventonegro.org/2008/07/bibliography-of-programming-languages-implementation/

Codigo fonte do meu compilador (em construcao):

https://github.com/asandroq/sly/tree

--
-alex
http://www.ventonegro.org/

Nathan Campos

unread,
Jul 31, 2009, 4:50:48 PM7/31/09
to ccppbrasil
Obrigado Alex, muito boa essa sua fonte, tem muitos artigos bons!
Obrigado mesmo!!!!!!!!!!!

On 31 jul, 16:58, Alex Queiroz <asand...@gmail.com> wrote:
> Hallo,
>
> On 7/31/09, Nathan Campos <eeepc...@gmail.com> wrote:
>
>
>
> >  Olá Thiago,
> >   Estava escrevendo a mensagem anterior e não deu para saber que você
> >  tinha mandado um email, mas como já disse na mensagem anterior: Não
> >  quero gastar dinheiro logo no começo.
>
>      Alguns itens neste link sao de graca:
>
> http://www.ventonegro.org/2008/07/bibliography-of-programming-languag...

/* Alberto Fabiano */

unread,
Jul 31, 2009, 7:28:27 PM7/31/09
to ccppb...@googlegroups.com

Well,


     Estou pensando em sua longa caminhada... 

  <<<mas um dia eu pensei que o Grok - uma linguagem que fiz para a disciplina de compiladores 13 anos atrás - iria evoluir e dominar o mundo e ser utilizada até em geladeiras(tsc) eu estacionei por ali mas um tempo depois o Rodrigo Bam"Boo"  evoluiou com seu Boo...>>>
 
     ...então, vamos lá! :-)

     Se você tem boa familiaridade com inglês, o que vc irá precisar, ao invés do livro do Deitel recomendo o livro do Koenig: 

    - Accelerated C++: Pratical Programming by Example

    E fazendo questão de desenvolver sua linguagem em C++  tem o livro do Ronald Mak, talvez seja mais focado,  afinal, vc não tem tempo a perder! :-)

     - Writing Compilers and Interpreters: An Applied Approach Using C++

    ((humm mas o livro do Mak é de 94 e C++ evoluiu muito de la para cá - mas mesmo assim esta é boa recomendação))

   Derepente, quem sabe, um se vc se interessar em desenvolver uma linguagem dinâmica ((talvez seja melhor opção que mais uma linguagem estática)) dê uma olhada nesta apresentação primeiro:
 
Building Languages with the Dynamic Language Runtime http://www.langnetsymposium.com/2008/talks/Slides/Targeting%20DLR.pdf 

   O Martin Maly é um cara bastante acessível, ele pode te dar um suporte bacana para a desenvolver sua linguagem para a DLR.

   E dê uma olhada neste post:



   Mas vc falou em g++, né? Bem... considere também a Parrot VM:


  Mas antes de tudo, considero o livro do Koenig, este é um jeito de acelerar teu aprendizado.

[ ]s

Alberto Fabiano
""
alberto at (ccppbrasil.org  | computer.org )
alberto.fabiano at (ieee.org | acm.org)

""
#
#  The best way to predict the future is to invent it ,  Alan Key
#
/*  0x42 0x69 0x74 0x20 0x46 0x61 0x6e  */


2009/7/31 Nathan Campos <eeep...@gmail.com>

/* Alberto Fabiano */

unread,
Jul 31, 2009, 7:40:58 PM7/31/09
to ccppb...@googlegroups.com


2009/7/31 Thiago Marinello Paulino Cesar <thiago.m...@gmail.com>


Antes de tudo, eu gostaria de aproveitar esse e-mail para tornar
pública a minha sincera admiração aos moderadores desta lista por seu
admirável exemplo de paciência e tolerância. Eu em seu lugar não
saberia me comportar dessa maneira.

<snip>

Thiago, 

    Nós, da moderação da ccppbrasil, basicamente operamos um filtro de spam manual.

Nathan Campos

unread,
Jul 31, 2009, 9:35:35 PM7/31/09
to ccppbrasil
Olá,
Estava com planos de fazer um compilador, mas agora eu irei fazer um
interpretador da minha própria linguagem, se alguem quiser me ajudar
todos os posts meus neste forum seram diretamente ou indiretamente
relacionados a criação do meu interpretador, o link para o forum é:
http://www.dreamincode.net/forums/index.php?showforum=15

Obrigado,
Nathan Paulino Campos

On 31 jul, 20:28, "/* Alberto Fabiano */" <albe...@ccppbrasil.org>
wrote:
> Well,
>      Estou pensando em sua longa caminhada...
>
>   <<<mas um dia eu pensei que o Grok - uma linguagem que fiz para a
> disciplina de compiladores 13 anos atrás - iria evoluir e dominar o mundo e
> ser utilizada até em geladeiras(tsc) eu estacionei por ali mas um tempo
> depois o Rodrigo Bam"Boo"  evoluiou com seu Boo...>>>
>
>      ...então, vamos lá! :-)
>
>      Se você tem boa familiaridade com inglês, o que vc irá precisar, ao
> invés do livro do Deitel recomendo o livro do Koenig:
>
>     - Accelerated C++: Pratical Programming by Example
>
>     E fazendo questão de desenvolver sua linguagem em C++  tem o livro do
> Ronald Mak, talvez seja mais focado,  afinal, vc não tem tempo a perder! :-)
>
>      - Writing Compilers and Interpreters: An Applied Approach Using C++
>
>     ((humm mas o livro do Mak é de 94 e C++ evoluiu muito de la para cá -
> mas mesmo assim esta é boa recomendação))
>
>    Derepente, quem sabe, um se vc se interessar em desenvolver uma linguagem
> dinâmica ((talvez seja melhor opção que mais uma linguagem estática)) dê uma
> olhada nesta apresentação primeiro:
>
> Building Languages with the Dynamic Language Runtimehttp://www.langnetsymposium.com/2008/talks/Slides/Targeting%20DLR.pdf
>
>    O Martin Maly é um cara bastante acessível, ele pode te dar um suporte
> bacana para a desenvolver sua linguagem para a DLR.
>
>    E dê uma olhada neste post:
>
> http://weblogs.asp.net/podwysocki/archive/2008/02/08/adventures-in-co...
>
>    Mas vc falou em g++, né? Bem... considere também a Parrot VM:
>
> http://docs.parrot.org/parrot/latest/html/
>
>   Mas antes de tudo, considero o livro do Koenig, este é um jeito de
> acelerar teu aprendizado.
>
> [ ]s
>
> Alberto Fabiano
> ""
> alberto at (ccppbrasil.org  | computer.org )
> alberto.fabiano at (ieee.org | acm.org)
>
> ""
> #
> #  The best way to predict the future is to invent it ,  Alan Key
> #
> /*  0x42 0x69 0x74 0x20 0x46 0x61 0x6e  */
>
> 2009/7/31 Nathan Campos <eeepc...@gmail.com>

dede.exe

unread,
Aug 2, 2009, 8:23:29 AM8/2/09
to ccppbrasil

dede.exe

unread,
Aug 2, 2009, 8:00:41 AM8/2/09
to ccppbrasil
http://www.scribd.com/doc/6123475/compilers-principles-techniques-and-tools

Vai dar um erro no momento de abrir.. fala que a página não pode ser
convertida.. mas vai na opção download e baix aa versão PDF...

Testei aqui e deu certo

Nathan Campos

unread,
Aug 2, 2009, 10:15:17 AM8/2/09
to ccppbrasil
Value pela ajuda, deu certo o PDF! Obrigado!

On 2 ago, 09:00, "dede.exe" <dede....@gmail.com> wrote:
> http://www.scribd.com/doc/6123475/compilers-principles-techniques-and...

DQ

unread,
Aug 3, 2009, 7:05:36 AM8/3/09
to ccppbrasil

Blabos de Blebe

unread,
Aug 3, 2009, 12:17:44 PM8/3/09
to ccppb...@googlegroups.com
Nathan,

Na boa, cara

Alguém algum dia deve ter te dito que programação era algo simples,
lindo e que era possível de ser dominada com pouco esforço.

Tenho uma má notícia pra você:

Mentiram. Enganaram e te iludiram.

Agora, faça um favor a si mesmo. Sente a sua ilustre bunda na cadeira,
pegue alguns livros e comece a estudar. Pare com essa palhaçada de
começar com algo grande e aprenda primeiro o básico. E aprenda
direito.

Se você realmente tiver talento pra isso, vai levar algum tempo
aprendendo. Caso contrário, é melhor desistir logo e fazer corte e
costura.

Abraços

Emerson de Freitas Barcelos

unread,
Aug 3, 2009, 12:38:08 PM8/3/09
to ccppb...@googlegroups.com
Engraçado que me disseram a mesma coisa quando "resolvi" aprender
assembly x86 antes de saber "C".
Cara, se vc acha que um compilador é demais para o Sr. Nathan, diga
isso a ele. Não em público.
E achei que ficou meio hostil.

Alex Queiroz

unread,
Aug 3, 2009, 12:39:44 PM8/3/09
to ccppb...@googlegroups.com
Hallo,

On 8/3/09, Blabos de Blebe <bla...@gmail.com> wrote:
>
> Nathan,
>
> Na boa, cara
>
> Alguém algum dia deve ter te dito que programação era algo simples,
> lindo e que era possível de ser dominada com pouco esforço.
>
> Tenho uma má notícia pra você:
>
> Mentiram. Enganaram e te iludiram.
>

http://norvig.com/21-days.html

--
-alex
http://www.ventonegro.org/

Rodrigo (skhaz)

unread,
Aug 3, 2009, 12:39:50 PM8/3/09
to ccppb...@googlegroups.com
Eu acho que a intenção do tio Blabos não foi essa, programadores tem
que ser motivados e desafiados :)

2009/8/3 Emerson de Freitas Barcelos <emerson...@yahoo.com.br>:
--
http://www.skhaz.com/

Alex Queiroz

unread,
Aug 3, 2009, 12:45:01 PM8/3/09
to ccppb...@googlegroups.com
Hallo,

On 8/3/09, Emerson de Freitas Barcelos <emerson...@yahoo.com.br> wrote:
>
> Engraçado que me disseram a mesma coisa quando "resolvi" aprender
> assembly x86 antes de saber "C".

Assembly so' e' mais dificil do que C no quesito "ser mais
trabalhoso". E' necessario um monte de bookkeeping e de conhecimento
da arquitetura, mas e' algo que se consulta em um guia de referencia.
Ja' um escrever um compilador requer um monte de teoria de
verdade. As chances de uma pessoa desistir porque nao esta' fazendo
progressos e' muito grande. Existe uma razao para em qualquer area
sempre se aprender pelo mais facil e aumentar a dificuldade
gradualmente.

--
-alex
http://www.ventonegro.org/

Emerson de Freitas Barcelos

unread,
Aug 3, 2009, 12:51:12 PM8/3/09
to ccppb...@googlegroups.com
Foi só uma comparação.
Ao invés de mandar o cara fazer corte e costura, por que não pediu que
antes da implementação, fosse liberada uma descrição formal da
linguagem que se deseja implementar o referido compilador ?
Já aí ele teria uma visão de quão trabalhoso é a tarefa.
Falaram para ele brincar com o yacc antes ?
Acho que o caminho é por aí...

Blabos de Blebe

unread,
Aug 3, 2009, 12:50:31 PM8/3/09
to ccppb...@googlegroups.com
gotcha

Alex Queiroz

unread,
Aug 3, 2009, 12:57:40 PM8/3/09
to ccppb...@googlegroups.com
Hallo,

On 8/3/09, Emerson de Freitas Barcelos <emerson...@yahoo.com.br> wrote:
>
> Foi só uma comparação.
> Ao invés de mandar o cara fazer corte e costura, por que não pediu que
> antes da implementação, fosse liberada uma descrição formal da
> linguagem que se deseja implementar o referido compilador ?
> Já aí ele teria uma visão de quão trabalhoso é a tarefa.
> Falaram para ele brincar com o yacc antes ?
> Acho que o caminho é por aí...
>

A sintaxe e' a parte mais facil. Quem deseja escrever um
compilador (ai' eu incluo o suporte de tempo de execucao tambem) tem
muitas outras questoes para decidir e implementar:

- Tipos fracos ou fortes
- Tipos estaticos ou dinamicos
- Coleta de lixo ou controle manual
- Funcoes basicas (C, Pascal, C++) ou closures (Scheme, Haskell, C#)
- Tipos de dados suportados (records, listas, conjuntos, tipos
enumerados, classes)
- Polimorfismo? (Haskell, ML, OCaml, Clean etc.)
- Corotinas? Threads?
- Etc.

A lista e' imensa.

--
-alex
http://www.ventonegro.org/

Rodrigo Kumpera

unread,
Aug 3, 2009, 2:18:59 PM8/3/09
to ccppb...@googlegroups.com
Besteira, escrever um compilador de pascal é razoavelmente, precisa saber muito pouca teoria.
Escrever um interpretador bobo de scheme é bem fácil, rola fazer em uma tarde se vc não ligar
para gerenciamento de memória.


2009/8/3 Emerson de Freitas Barcelos <emerson...@yahoo.com.br>

Blabos de Blebe

unread,
Aug 3, 2009, 2:21:31 PM8/3/09
to ccppb...@googlegroups.com
Desde que você já saiba o que significa um 'case', né!?

2009/8/3 Rodrigo Kumpera <kum...@gmail.com>:

Emerson de Freitas Barcelos

unread,
Aug 3, 2009, 2:25:37 PM8/3/09
to ccppb...@googlegroups.com
Anders Hejlsberg que o diga.

angelo

unread,
Aug 3, 2009, 2:57:49 PM8/3/09
to ccppb...@googlegroups.com
Oi 

inclua ai tambem, bota imenso nisso

Parsing
tokens
analise sintatica e semantica
hierarquia de chomsky
tese de church
maquina de turing
gramaticas livres de contexto
automatos finitos
assuntos de teoria da computacao e linguagem formais

isso só pra chegar a entender como funciona   variavel = a + b;    ou como um  if ( valor == Z )   gramaticalmente

é bom ler o livro do dragão e o livro da Judith  ( o da Judith primeiro )

dá pra fazer? da pra fazer, mas é um baita desafio, parabens antecipado ao cara que inventar a linguagem brasileira de programacao
a linguagem LUA, do pessoal da puc-rio, por enquanto é a unica brasileira que se tem noticia. legal se tivessemos mais.


2009/8/3 Alex Queiroz <asan...@gmail.com>

Rodrigo (skhaz)

unread,
Aug 3, 2009, 3:28:35 PM8/3/09
to ccppb...@googlegroups.com
Posso estar enganado, mas a Boo é feita por um brasileiro tmb?

2009/8/3 angelo <angelo...@gmail.com>:
--
http://www.skhaz.com/

Rodrigo Kumpera

unread,
Aug 3, 2009, 3:45:15 PM8/3/09
to ccppb...@googlegroups.com
Não, a única coisa um pouco mais avançada que é necessária saber é recursão.
Mas até ai, todos aprendemos recursão na aula de matemática, certo?

Escrever um compilador recursivo descendente é trivial, não precisa
saber quase nada de teoria - é perfeitamente possível escrever um acidente
se usar um bom manual sobre o assunto.

Eu construi 1 compilador de pascal em C usando esse tutorial: http://compilers.iecc.com/crenshaw/
Sendo que fazia uns 2 meses que tinha comprado o "C total e completo", já sabia o if e o printf porém. ;)

Se a gramática da tua linguagem for regular e admitir 1 parser LA(1), ou recursivo-descendente,
é razoavelmente fácil implementá-la sem mesmo saber do que se trata LA(1).



2009/8/3 Blabos de Blebe <bla...@gmail.com>

Guilherme Rezende

unread,
Aug 3, 2009, 1:51:22 PM8/3/09
to ccppb...@googlegroups.com
Agora imaginem que a cada topico desse que ele tropeçar, vai vir a lista pedir um código de exemplo....

Nathan, massa que tu tem um projeto e ta empenhado em ir atrás!
mais faça da forma correta, mesmo que leve mais tempo...

[]'s

2009/8/3 Alex Queiroz <asan...@gmail.com>



--
Guilherme BR {
     Linux ID: #437053
     www.guilhermerezende.com
}

Thiago Marinello Paulino Cesar

unread,
Aug 3, 2009, 6:31:04 PM8/3/09
to ccppb...@googlegroups.com
Gramática regular? Poupe-nos.

Thiago Marinello Paulino Cesar
thi...@marinello.eng.br
+55 19 9248 0860



2009/8/3 Rodrigo Kumpera <kum...@gmail.com>:

Alex Queiroz

unread,
Aug 3, 2009, 8:12:35 PM8/3/09
to ccppb...@googlegroups.com
Hallo,

2009/8/3 Rodrigo Kumpera <kum...@gmail.com>:


>
> Se a gramática da tua linguagem for regular e admitir 1 parser LA(1), ou
> recursivo-descendente,
> é razoavelmente fácil implementá-la sem mesmo saber do que se trata LA(1).
>

Mas quando não se sabe o que é LL(1), basta por uma recursão à
esquerda para por tudo a perder. Claro que escolher uma linguagem
simples e pré-existente, como o Pascal, simplifica enormemente as
coisas.

--
-alex
http://www.ventonegro.org/

Rodrigo Kumpera

unread,
Aug 3, 2009, 8:29:51 PM8/3/09
to ccppb...@googlegroups.com


2009/8/3 Alex Queiroz <asan...@gmail.com>

Bom, ai a questão toda é qual o objetivo do garoto. Ele só quer construir um compilador e interpretador
ou o se trata do próximo Haskell?

Para o primeiro, provavelmente a gramática será um efeito colateral do compilador então saber a teoria
continua não sendo tão importante. Assim como usar ferramentas anacrônicas como yacc.

Para o segundo, provavelmente o protótipo seria construído usando S-exp ou M-exp e somente quando
o modelo fosse adequado iria se preocupar com a surface sintax. Ou seja, ironicamente, também pode
ser considerado irrelevante. :P

Se eu estou sendo tão insistente é porque eu escrevi compiladores e interpretadores de brinquedo meia
década antes de adquirir conhecimento formal sobre o assunto. Mesmo hoje continuo escrevendo eles,
já que gosto de aprender novas linguagens escrevendo interpretadores de scheme nelas[1].

Ou seja, deixa o garoto brincar, pq ninguém precisa aprender física newtoniana para andar de bicicleta.

Rodrigo

[1] Claro que são interpretadores bem rudimentares

Alex Queiroz

unread,
Aug 3, 2009, 8:35:11 PM8/3/09
to ccppb...@googlegroups.com
Hallo,

2009/8/3 Rodrigo Kumpera <kum...@gmail.com>:
>
>


> Bom, ai a questão toda é qual o objetivo do garoto. Ele só quer construir um
> compilador e interpretador
> ou o se trata do próximo Haskell?
>

Se não me engano o objetivo era criar a própria linguagem de
programação. Por isso que estou dando tanta ênfase à teoria.
Repetindo, se for um compilador Pascal, isso facilita enormemente as
coisas. Eu estou fazendo um para uma linguagem pré-existente, e mesmo
assim tenho que pensar bastante para avançar.

> Para o primeiro, provavelmente a gramática será um efeito colateral do
> compilador então saber a teoria
> continua não sendo tão importante. Assim como usar ferramentas anacrônicas
> como yacc.
>
> Para o segundo, provavelmente o protótipo seria construído usando S-exp ou
> M-exp e somente quando
> o modelo fosse adequado iria se preocupar com a surface sintax. Ou seja,
> ironicamente, também pode
> ser considerado irrelevante. :P
>

Exatamente o que eu já disse em um email anterior: A sintaxe é o
que menos importa.

--
-alex
http://www.ventonegro.org/

Alex Sandro Garzao

unread,
Aug 4, 2009, 10:16:22 AM8/4/09
to ccppb...@googlegroups.com
Oi,

Deixa o Nathan se divertir fazendo o seu compilador/interpretador e
era isso hehehe.

Eu fiz alguns "experimentos" em 1992 nessa área, e até hoje me orgulho
disso. Em 92 não tinha internet, a minha escola técnica tinha 3 livros
de informática (BASIC, COBOL e MSDOS), então fiz tudo "como eu achava
que deveria ser" hehehe. Ficou longe de ser algo "legal", mas valeu a
pena o exercício de tentar criar uma linguagem, compilador, linker,
bibliotecas, gerar binário para rodar no DOS, etc e tal.

Nathan, estou longe de ser um profissional no assunto "compiladores",
mas gosto muito desta área e já fiz algumas coisas. Se quiser trocar
idéias, avisa. Tempo sempre é escasso, mas dentro do possível, a gente
conversa :-)

Até !!!!

2009/8/3 Alex Queiroz <asan...@gmail.com>:
--
[]'s
------------------------------------------------------------------
Alex Sandro Garzão
mailto:alexg...@gmail.com
_
_v_ Software Engineer, Computer Science BSc
/(_)\ Linux user #229193
^ ^
------------------------------------------------------------------

Alex Queiroz

unread,
Aug 4, 2009, 10:25:13 AM8/4/09
to ccppb...@googlegroups.com
Hallo,

On 8/4/09, Alex Sandro Garzao <alexg...@gmail.com> wrote:
>
> Oi,
>

Putz, existem mais "Alex Sandro"s por ai' :)

--
-alex
http://www.ventonegro.org/

angelo

unread,
Aug 4, 2009, 1:15:47 PM8/4/09
to ccppb...@googlegroups.com
O que achei mais legal foi a quantidade de mensagens produzidas em torno do assunto, e detalhe, mantendo o bom nível da conversa.

Vai na fé Nathan, comece do começo, cai dentro do teu compilador / interpretador. Mesmo que não dê em nada, ao menos vai aprender muita coisa interessante e fazer a diferenca la frente depois. 
Num país onde as atenções do publico em geral estão voltados para coisas bem menos elaboradas (para nao dizer fúteis), alguem aparecer com um assunto desses é no minimo se destacar da maioria. Se torna polêmico, porque teve uma ideia diferente. mas teve uma idéia diferente porque soube usar muito bem sua inteligência.

[]s angelo

2009/8/4 Alex Sandro Garzao <alexg...@gmail.com>

/* Alberto Fabiano */

unread,
Aug 4, 2009, 5:50:19 PM8/4/09
to ccppb...@googlegroups.com


2009/8/3 Rodrigo Kumpera <kum...@gmail.com>

Besteira, escrever um compilador de pascal é razoavelmente, precisa saber muito pouca teoria.
Escrever um interpretador bobo de scheme é bem fácil, rola fazer em uma tarde se vc não ligar
para gerenciamento de memória.


Bom,

    Olhando por este ponto de vista, a linguagem que desenvolvi - a princípio para fins acadêmicos mas que continuei extendendo por um curto período apenas por diversão - posso dizer que em partes era um subset de "Pascal" quanto à recursos e sintaxe das instruções com funcionalidades desta intersecção; porém as diretivas tinham nomes diferentes. O que basicamente havia de diferente é que a marcação de blocos era feita por identação, do resto dava para se fazer uma boa roseta, das instruções com funcionalidade nesta intersecção.

     O que acabei implementando por diversão: 

     - tipagem dinâmica (pero no mutcho) o que tentava tornar a linguagem parcialmente dinâmica.
     - inferência de tipos; que na época eu nem sabia que tinha este nome e batizei de smart types
     - implementação de ponteiros com uma sintaxe mais verbosa e explícita do que C; algo similar ao que o  ctypes de Python oferece
     - estruturas de dados pré-definidas, onde lista encadeada eu chamava de "lisenc", árvores de "esarv" grafos de "egraf" (porém no geral isto foi um fiasco)
     - fácil comutação entre alto, médio e baixo nível; objetivo parcialmente alcançado

     Outro detalhe do qual eu não me orgulho muito, foi que baseado nuns exemplos de um livro do Rick Spencer implementei suporte nativo a manipulação de arquivos DBF, com uma sintaxe muito similar a Joinner além de uma tentativa mal-sucedida de suporte nativo a arquivos MDB, porém esta foi a característica que marcou para alguns colegas de faculdade e não as que citei acima. 

       Porém isto é uma história de 12-13 anos atrás...  mas como o assunto era de meu interesse, neste meio tempo (tentei) ler e/ou estudar  (parcialmente ou integralmente) algumas obras (de adversas à  referenciais)  sobre o assunto; porém não implementei mais (quase) nada; no máximo fiz algumas experiências de cross-compiling e de estripar a VM de Python para plataformas de microcontroladores com memória flash reduzida: ARM, MIPS, AVR e Coldfire, também brinquei um pouco com GCC e com o SDCC. Cheguei a fazer algumas experiências de final de semana, por isto o "quase nada".

       Desta forma, a experiência prática que tive foi antes de estudar algumas obras referenciais (tsc) 

       Em vários momentos, de tanto sentir de  engenheiros que só programam em C, assembly e VB, a expressão do ódio que estes tinham por C e o amor que estes tinham por VB, cheguei a pensar algumas vezes em ressuscitar a idéia só por diversão,  mas foi mais uma idéia que ficou apenas na intenção...

[ ]s

A.F.     

#
#  The best way to predict the future is to invent it ,  Alan Key
#
/*  0x42 0x69 0x74 0x20 0x46 0x61 0x6e  */

/* Alberto Fabiano */

unread,
Aug 4, 2009, 6:08:55 PM8/4/09
to ccppb...@googlegroups.com


2009/8/3 Rodrigo (skhaz) <rodrigo...@gmail.com>


Posso estar enganado, mas a Boo é feita por um brasileiro tmb?


    Sim! O popular Rodrigo "Bamboo" de Oliveira, que inclusive portou sua linguagem para .Net.

    Além da LUA, que ganhou lugar de destaque, alguns podem desmerecer, mas também já desenvolveram um compilador para Portugol que tem suporte no Notepad++, a alguns anos atrás lembro de ter lido na revista CPU PC (ou outra revista similar da época) sobre uma linguagem chamada Calango, havia a linguagem Joiner desenvolvida pela Tuxon,  já li a respeito de implementações brazucas de Pascal, acho que a mais popular é uma tal de Pascalzim  e por último lembro de uma linguagem chamada Turtle-br  que era utilizada com robos tipo turtle.

[]s

Walter Gomes

unread,
Aug 4, 2009, 8:14:29 PM8/4/09
to ccppbrasil
Acho que destas linguagem podemos destacar apenas Boo e Lua!

Joiner era um clone de Clipper turbinado, se formos enquadrar o Joiner
porque não o Cobol da Microbase, criadora do VirtuOS que foi um
sistema operacional que teve 18.000 licenças adquiridas pela Marinha
Americana?

Portugol (tsc) acho que não vale a pena ensinar isto, Calango era um
clone bizarro de Pascal. Aliás, isto é muito velho! Daqui a pouco
vocês vão contar a história do Patinho Feio (primeiro computador
construído no Brasil na Politécnica) do Cisne Branco (segundo
computador construído no Brasil pela UNICAMP com financiamento da
Marinha) entre outras histórias da reserva de mercado, época no qual o
Calango surgiu.



On Aug 4, 7:08 pm, "/* Alberto Fabiano */" <albe...@ccppbrasil.org>
wrote:
> 2009/8/3 Rodrigo (skhaz) <rodrigodeld...@gmail.com>
>
>
>
> > Posso estar enganado, mas a Boo é feita por um brasileiro tmb?
>
>     Sim! O popular Rodrigo "Bamboo" de Oliveira, que inclusive portou sua
> linguagem para .Net.
>
>     Além da LUA, que ganhou lugar de destaque, alguns podem desmerecer, mas
> também já desenvolveram um compilador para Portugol que tem suporte no
> Notepad++, a alguns anos atrás lembro de ter lido na revista CPU PC (ou
> outra revista similar da época) sobre uma linguagem chamada Calango, havia a
> linguagem Joiner desenvolvida pela Tuxon,  já li a respeito de
> implementações brazucas de Pascal, acho que a mais popular é uma tal de
> Pascalzim  e por último lembro de uma linguagem chamada Turtle-br  que era
> utilizada com robos tipo turtle.
>
> []s
>
>
>
>
>
> > 2009/8/3 angelo <angelolis...@gmail.com>:
> > > Oi
> > > inclua ai tambem, bota imenso nisso
> > > Parsing
> > > tokens
> > > analise sintatica e semantica
> > > hierarquia de chomsky
> > > tese de church
> > > maquina de turing
> > > gramaticas livres de contexto
> > > automatos finitos
> > > assuntos de teoria da computacao e linguagem formais
> > > isso só pra chegar a entender como funciona   variavel = a + b;    ou
> > como
> > > um  if ( valor == Z )   gramaticalmente
> > > é bom ler o livro do dragão e o livro da Judith  ( o da Judith primeiro )
> > > dá pra fazer? da pra fazer, mas é um baita desafio, parabens antecipado
> > ao
> > > cara que inventar a linguagem brasileira de programacao
> > > a linguagem LUA, do pessoal da puc-rio, por enquanto é a unica brasileira
> > > que se tem noticia. legal se tivessemos mais.
>
> > > 2009/8/3 Alex Queiroz <asand...@gmail.com>
>
> > >> Hallo,
>
> > >> On 8/3/09, Emerson de Freitas Barcelos <emerson_frei...@yahoo.com.br>

Nathan Campos

unread,
Aug 4, 2009, 8:52:15 PM8/4/09
to ccppbrasil
Olá Rodrigo,
Quando você disse compilador bobo de scheme, você quis dizer criar um
compilador bobo escrito em scheme ou criar um compilador de scheme
escrito em C++, mas o que for você poderia passar alguma fonte para eu
estudar.

Obrigado,
Nathan Paulino Campos

On 3 ago, 15:18, Rodrigo Kumpera <kump...@gmail.com> wrote:
> Besteira, escrever um compilador de pascal é razoavelmente, precisa saber
> muito pouca teoria.
> Escrever um interpretador bobo de scheme é bem fácil, rola fazer em uma
> tarde se vc não ligar
> para gerenciamento de memória.
>
> 2009/8/3 Emerson de Freitas Barcelos <emerson_frei...@yahoo.com.br>
>
>
>
> > Foi só uma comparação.
> > Ao invés de mandar o cara fazer corte e costura, por que não pediu que
> > antes da implementação, fosse liberada uma descrição formal da
> > linguagem que se deseja implementar o referido compilador ?
> > Já aí ele teria uma visão de quão trabalhoso é a tarefa.
> > Falaram para ele brincar com o yacc antes ?
> > Acho que o caminho é por aí...
>
> > Em 03/08/2009, às 13:45, Alex Queiroz escreveu:
>
> > > Hallo,
>
> > > On 8/3/09, Emerson de Freitas Barcelos

Rodrigo Kumpera

unread,
Aug 4, 2009, 8:57:04 PM8/4/09
to ccppb...@googlegroups.com
Um compilador de scheme escrito em C++. Dada a facilidade com
que é escrever um que não suporte let-rec, é uma boa pedida.
Porém é bom saber scheme primeiro.


2009/8/4 Nathan Campos <eeep...@gmail.com>

Alex Queiroz

unread,
Aug 4, 2009, 9:05:17 PM8/4/09
to ccppb...@googlegroups.com
Hallo,

2009/8/4 Rodrigo Kumpera <kum...@gmail.com>:


> Um compilador de scheme escrito em C++. Dada a facilidade com
> que é escrever um que não suporte let-rec, é uma boa pedida.
> Porém é bom saber scheme primeiro.
>

A semântica do LET-REC pode ser implementada com SET! e LET[1].
Claro que não vai ser nada eficiente, mas funciona.

[1] - http://www.cs.indiana.edu/~dyb/pubs/fixing-letrec.pdf

--
-alex
http://www.ventonegro.org/

Andre Fernandes

unread,
Aug 6, 2009, 9:24:18 PM8/6/09
to ccppb...@googlegroups.com
Para constar na lista de linguagens e compiladores desenvolvidos no Brasil:
Uma linguagem que foi criada em C++ por brasileiros é a ADVPL, do sistema protheus, da TOTVS. O servidor e compilador da linguagem é escrito em C++ e tem uma equipe dentro da TOTVS aprimorando a linguagem ainda hoje.

Abraços,
2009/8/4 Alex Queiroz <asan...@gmail.com>
-alex
http://www.ventonegro.org/


--
André de Camargo Fernandes


Reply all
Reply to author
Forward
0 new messages