1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Compiladores

Discussão em 'Programação' iniciada por simaor, 25 de Junho de 2005. (Respostas: 14; Visualizações: 1370)

  1. simaor

    simaor Power Member

    Eu não sei se esta pergunta é estupida, mas eu no outro dia fiquei a pensar (como não entendo nada disto) como são compilados os compiladores? Os compiladores transformam as varias linguagens em linguagem maquina né? Os gajos que fazem os compiladores fazem em linguagem maquina?
     
  2. Ragnarok

    Ragnarok Folding Member

    Depende. Actualmente, já é possível fazer compiladores na sua própria linguagem (só conheço o caso do Lisp...), mas, por exemplo, em C, acho que os compiladores são todos em assembly.
     
  3. banid0

    banid0 Power Member

    O devcpp é feito em delphi :D

    E sim o assunto também me come a cabeça...o que nasceu 1º? O compilador ou o compilador? MUAH AH AH

    Prefiro não pensar nisso e move on :D
     
  4. jaac

    jaac Power Member

    É utilizado um compilador para compiladores...

    O primeiro compilador foi feito em assembly, este apenas é interpretado nao compilado...
     
  5. Ragnarok

    Ragnarok Folding Member

    O IDE acredito, mas o compilador é o gcc, salvo erro, já há muito tempo que não o uso.
     
  6. xtr3me

    xtr3me Power Member

    O LISP não é uma linguagem interpretada?? :P (isso significa que não é compilada)
     
  7. Ragnarok

    Ragnarok Folding Member

    Uh ya! :D
    Ok então, existem interpretadores de LISP feitos em LISP. :P
     
  8. kingdom

    kingdom 1st Folding then Sex

    Eu tambem já tinha andado a pensar nisso.....é como a história do ovo e da galinha....só que desta vez temos factos que comprovam que houve uma linguagem qualquer que fez o primeiro compilador....Mas que é que compilou essa linguagem? e que linguagem foi utilizada para escrever o compilador que compilou essa linguagem?

    Weird....
     
  9. Madril

    Madril 1st Folding then Sex

    Pa ... basicamente, primeiro tens um analisador lexical (lex ou flex por exemplo), dp tens um sintatico (yacc, byacc ou bison), dp crias uma arvore semantica e vais gerando o codigo em assembly. Dp o teu loader (LD) linka tudo e tens o compilador :D
     
  10. Karmack

    Karmack Power Member

    Um compilador pode ser feito numa linguagem de programação normal como o C, Pascal, etc...
    O primeiro compilador é que teve de ser feito em assembly.

    Aproveitando a explicação do Madril, tens esta linha de código:

    int a = 0;

    O analisador lexical divide as palavras em tokens (ou seja faz em cada elemento do código atribui uma designação).

    int -> TIPO_INT
    a -> VARIAVEL
    = -> ATRIBUIÇÃO
    0 -> ESCALAR_INTEIRO

    Um analisador semantivo constroi uma árvore através de regras:

    TIPO VARIAVEL ATRIBUIÇÃO ESCALAR: (entao a arvore vai ficar assim)

    DECLARACAO_ATRIBUICAO
    |
    -> TIPO_INT
    |
    -> VARIAVEL
    |
    -> ESCALAR_INTEIRO

    Depois é gerado o código assembly através desta árvore
     
  11. CoolZero

    CoolZero Power Member

    Ora nem mais...

    Esta é uma questão que não pode ser respondida sem que a pessoa tenha um background de informação já bastante evoluido. A tua resposta está bastante correcta!

    Para quem não percebeu a resposta do Madril:
    Um compilador não é feito como os outros programas em que "bates" código e depois compilas. Existe um outro caminho a percorrer, no qual 90% do tempo é na definição teórica da linguagem. Depois de definida a linguagem ficas com um dicionário de keywords e um conjunto de regras (lógicas) que ira tudo alimentar os "compiladores de compiladores" para ser mais fácil de perceberem.

    Para dár um exemplo fácil imagina que defines na tua linguagem a operação de soma, e lhe atribuiz a keyword "+".. podia ser outra como "soma", mas assumimos que é a normal "+".
    Terás de definir várias coisas, nomeadamente que existe um operadorando antes e outro depois da keyword: operadorandoA "+" operadorandoB. É nesta parte q se começa a definir a lógica para as keywords. Só mais tarde é que se define o "comportamento" da keyword.

    Como podem ver o processo nada tem a ver com programação normal.
     
  12. Madril

    Madril 1st Folding then Sex

    Ter uma cadeira chamada compiladores este semestre ajuda um bocado ;)
     
  13. kingdom

    kingdom 1st Folding then Sex

    Obrigadão a todos pela informação.....já era um assunto que eu tentava descobrir por mim mesmo e através de pesquisas e bada conseguia apanhar acerca disso...

    Cumps
     
  14. CoolZero

    CoolZero Power Member

    IST? :P Tirei de la´ o curso... por isso tb tive compiladores. :)
     
  15. Madril

    Madril 1st Folding then Sex

    Sure :D

    Mais um pras contas dos ISTianos do Forum :D
     

Partilhar esta Página