Núcleo de Sistema de Informação 1 Um compilador é um programa que traduz um programa escrito numa linguagem fonte para outro equivalente escrito numa linguagem alvo. programa fonte Compilador programa alvo mensagens de erro 2 esqueleto do programa fonte montador pre-processador código de máquina relocável programa fonte COMPILADOR programa alvo em assembler carregador bibliotecas, arquivos, objetos relocáveis código de máquina absoluto 3 := m + * dp tp 60 Ferramentas que fazem análise: • Editores de estruturas • Pretty printers • Verificadores estáticos • Interpretadores • Formatadores de texto • Interpretadores de consultas 4 "# " # " !!!# 5 montante := deposito_inicial + taxa_de_juros * 60 É decomposto nos seguintes tokens: • Identificador montante • Símbolo de atribuição := • Identificador deposito_inicial • Sinal de adição • Identificador taxa_de_juros • Sinal de multiplicação • Número 60 6 ! ! "$$ # "# 7 enunciado de atribuição identificador := montante expressão identificador deposito_inicial expressão + expressão expressão * identificador taxa_de_juros expressão número 60 8 := + montante deposito_inicial * taxa_de_juros 60 9 $! % ! & & *+$ *,+ *)+ '*( %& 10 11 := montante REAL-ADD deposito_inicial REAL-MULT taxa_de_juros inttoreal 60 12 programa fonte analisador léxico analisador sintático analisador semântico gerenciador da tabela de símbolos gerador de código intermediário otimizador de código gerador de código programa alvo tratador de erros 14 %& ' # $ %& ' 15 Java ML Sparc vanguardas Java MIPS ML Pascal Pascal Pentium C C++ retaguardas Sparc MIPS Código Intermediário Pentium C Alpha C++ Alpha 16 !) ' ' #*(( + ( *' '((((+ * + " 17 18 % & ( 19