VinBR

Compiladores 05/03/2012

Mar 13th, 2012
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.52 KB | None | 0 0
  1.  
  2. # # # # # # # # # # # # #
  3. # Compiladores #
  4. # Professora Mariza #
  5. # notasdogarcia.blog.com #
  6. # # # # # # # # # # # # #
  7.  
  8. Materia:
  9. - Compiladores
  10.  
  11. Professora responsável:
  12. - Mariza Andrade da Silva Bigonha
  13.  
  14. Avaliações:
  15. - 6 testes valendo 10 pontos.
  16. - 1 prova obrigatória.
  17. - 4 TPs valendo 23 pontos no total (grupos de até 2)
  18. - Prova final 10 pontos.
  19.  
  20. // Calendário não será seguido ao pé da letra.
  21.  
  22. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  23.  
  24. CONCEITO:
  25. Compilador recebe um programa e dá como resultado um código para uma determinada arquitetura ou para uma máquina virtual,
  26. ou ainda para uma outra linguagem (o que não é o caso usual).
  27.  
  28. Pode ser descrito na forma:
  29. .____________.
  30. fonte --->| Compilador | ---> objeto
  31. |____________|
  32. ||
  33. \/
  34. erros
  35.  
  36. CONCEITO:
  37. Interpretador recebe um programa e linha a linha compila e executa as ações equivalentes em uma arquitetura.
  38. Ele também recebe as entradas do próprio do programa em tempo de compilação.
  39.  
  40. CONCEITO:
  41. Arquitetura Vonn Noiman que é a arquitetura utilizada nas máquinas de hoje
  42. armazena os programas e os dados em um mesmo espaço de memória.
  43.  
  44. CONCEITO:
  45. Linguagem funcional é uma linguagem onde não existe sobreescrita de posições de memória.
  46. No geral elas são feitas com aplicação de funções sobre funções
  47. e são baseadas no "Cálculo Lambda" que é um modelo equipotente e concorrente da "Maquina de Turing" por assim dizer.
  48.  
  49. NOTA: Compiladores para linguagens funcionais e para linguagens do tipo Von Noimann são um tanto diferentes.
  50.  
  51. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  52.  
  53. Fases de um compilador:
  54.  
  55. Primeira fase "Frontend" ou "Análise":
  56. // Só depende da linguagem fonte
  57.  
  58. 1 - Analise Léxica ou Linear (AL)
  59. -> Erro léxico quando aparece um caractere que não faz parte da linguagem.
  60.  
  61. 2 - Analise Sintática Hierarquica // Verificação se as frases fazem sentido.
  62. -> Erros sintáticos são aqueles de coesão do texto, ou seja quando uma frase não bate com os modelos reconhecidos.
  63.  
  64. 3 - Análise Semântica
  65. -> Básicamente compatibilidade de tipos entre as variáveis definidas.
  66.  
  67. 4 - Geração de Código Intermediario
  68. -> Código recebido como entrada na segunda fase.
  69.  
  70. Segunda fase "Backend" ou "Síntese":
  71. // Depende só da linguagem objeto.
  72. // É a geração do código executável.
  73.  
  74. 1 - Otimização (fase opicional)
  75. -> Substitui A=A+1 por INC A por exemplo.
  76.  
  77. 2 - Geração de código Objeto
  78. -> Gera o executável.
  79.  
  80. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  81.  
  82. Código Fonte -> |Preprocessador| -> Código Fonte Modificado -> |Compilador| -> Código Assembly -> |Assembler| -> Programa objeto -> |Linkador| -> Programa Final.
  83.  
  84. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  85.  
  86. CONCEITO:
  87. Tabela de Simbolos é uma tabela que armazena as variáveis de um programa e as informações associadas à ela.
  88. É utilizada pelo compilador em várias etapas.
  89.  
  90. Informações guardadas:
  91. Tipo
  92. Nome
  93. Valor
  94. Escopo
  95. Se possuí parametros ou não (caso a variável seja uma função)
  96. // Falaremos disso em detalhes em outras aulas.
  97.  
  98. CONCEITO:
  99. Um Lexema é uma string de caracteres reconhecido pelo analisador léxico.
  100. Um caractere em branco normalmente é entendido como o separador (práticamente)universal entre dois lexemas.
  101.  
  102. Para cada lexema o analisador léxico produz como saída um Token no formato:
  103.  
  104. <nome-token, valor-atributo>
  105. - O nome é o simbolo usado durante a análise sintática, ex: "id" se for um identificador, ou "var" se for uma variável.
  106. - O valor aponta para a posição na tabela de simbolos referente a este token.
  107. onde o valor pode ser entendido como o simbolo digitado pelo usuário.
  108.  
  109. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  110.  
  111. TP1: Analisador Lexico: reconhecer comentários, variáveis, valores e etc.
  112.  
  113. Exemplo do TP1:
  114.  
  115. Entrada:
  116. X := A + B / 5
  117. Saida:
  118. (id , X)
  119. (:= , )
  120. (id , A)
  121. (addop, +)
  122. (id , B)
  123. (mulop, /)
  124. (num , 5)
  125.  
  126. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  127.  
  128. TP2: Analise sintatica. // Usaremos uma ferramenta para nos ajudar a fazer o TP.
  129.  
  130. Nessa análise deve-se usar uma arvore de derivação que indica os formatos aceitáveis para as frases.
  131.  
  132. A saída desse tp é a arvore de sintaxe abstrata.
  133.  
  134. // Bem fim da aula, devemos discutir melhor sobre esses detalhes dos TPs nas próximas aulas.
Advertisement
Add Comment
Please, Sign In to add comment