Baixe o app para aproveitar ainda mais
Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
- análise (Front end) divide o programa impõe uma estrutura gramatical cria uma representação do programa fonte coleta informações sobre o programa fonte armazena cria a tabela de símbolo - síntese (Back end) contrói o programa objeto usa a representação do programa fonte tabela de símbolos - análise léxica lê o fluxo de dados do programa fontes agrupa em lexemas cada lexema produz na saída um token (Nome-token (nome,seria um símbolo abstrato que é o identificador / e token aponta a entrada da tabela de símbolos onde se econtra a position, valor-atributo ( entrada na tabela de símbolos)) Tipos de token (número ,operador e pontuação) operadores (Soma + ; Subtração - ; Multiplicação * ; Divisão /) Se o primeiro caractere do token for um dígito, a análise determina que o próximo token é um número. Remove os espaços em branco Correlaciona as mensagens de erros geradas pelo o compilador com o programa fonte Escadimento varredura da entrada sem se preocupar com a remoção de comentários e a compactação de caracteres de espaço em branco - análise sintática Ultiliza tokens do analisador léxico cria uma representação tipo árvore mostra a estrutura gramatical da sequencia de tokens - análise semântica ultiliza a árvore de sintaxe e a tabela de símbolos verifica a consistência semântica do programa fonte reúne informações sobre os tipos e salva na árvore de sintaxe para uso subsequente verfica os tipos se houver um erro,ele precisa informar e pode ser feita a conversão de tipo Exemplo Analisador Léxico position = inital + rate * 60 Analisador Sintática (id ,1) = __ (id,2) + __(id,3) * __ inttofloat 60 Gerador de Código Intermediário t1 = inttofloat(60) t2 = id3 * t1 t3 = id2 + t2 id1 = t3 <-------------_ Programa Fonte -> analisador léxico -> token -> analisador sintático -> análise semântica -> tabela de símbolos _----------------------------------> Algumas ferramentas mais ultilizadas de compliladores Geradores de analisadores sintáticos Geradores de analisadores léxicos Geradores de gerador de código Desenvolvimento do Fortran - 1950 Otimização do código Precisa atender objetivos Otimização precisa preservar a semântica melhorar o desempenho tempo de compilação razoavel Paralelismo Várias operações são executadas simultaneamente Hierarquias de memória resposta a limitação básicas que podemos contruir um dispositivo de armazenamento mais rápido ou muito grande Análise de fluxo de dados Localiza erros em todos os caminhos de execução possíveis Política estática Quando a linguagem permite que o compilador decida a respeito de algo antes da execução Política dinâmica Quando a linguagem só permite a decisão na execução do programa Diagramas de transição estados de aceitação,inicial ou final Autômatos Tipos de analisadores sintáticos LL left-left LR left-right SLR simple left-right LL(left-left) e LR(left-right), são suficientemente expressivas para descrever a maioria das construções sintáticas das linguagens de programação. BOTTON-UP começa pelos símbolos finais da gramática TOP-DOWN parte do início da árvore de derivação Erros de Sintaxe A maioria das especificações das linguagens de programação não descreve como um compilador deveria responder aos erros; tal tarefa é deixada para o projetista do compilador podem ser léxicos, tais como errar a grafia de um identificador sintáticos, tais como uma expressão aritmética com parênteses não-balanceados boa parte da detecção e recuperação de erros num compilador gira em torno da fase de análise sintática métodos de análise sintática, tais como os métodos LL e LR, detectam os erros tão cedo quando possível Recuperação na modalidade do desespero. Ao descobrir um erro, o analisador sintático descarta símbolos de entrada, um de cada vez, até que seja encontrado um token pertencente a um conjunto designado de tokens de sincronização Recuperação de frases Ao descobrir um erro, o analisador sintático pode realizar uma correção local na entrada restante. Isto é, pode substituir um prefixo da entrada remanescente por alguma cadeia que permita ao analisador seguir em frente
Compartilhar