Buscar

Resumo Compiladores

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

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Continue navegando