Capítulo 1 Linguagens e processadores

Tamanho: px
Começar a partir da página:

Download "Capítulo 1 Linguagens e processadores"

Transcrição

1 1. Linguagens Capítulo 1 Linguagens e processadores 2. Processamento de Linguagens: DI-UBI 2017/2018 1/28

2 Linguagens Linguagens Processamento de Linguagens: DI-UBI 2017/2018 2/28

3 Linguagens 1. Definição Definição: Uma linguagem L sobre um alfabeto (vocabulário) V é um conjunto de frases, em que uma frase é uma sequência de símbolos de V (vocábulos ou palavras). Uma linguagem apenas admite combinações de vocábulos que são frases válidas. A definição de uma linguagem é feita em dois passos: 1. Estabelecer qual o alfabeto a usar; 2. Indicar as regras que restringem, das combinações possíveis, aquelas que de facto são frases corretas. As regras referidas no passo 2 dividem-se em: - regras sintáticas: definem as formas corretas; - regras semânticas: definem as condições para que as frases sintaticamente corretas possam ser interpretadas. Processamento de Linguagens: DI-UBI 2017/2018 3/28

4 Linguagens As regras sintáticas preocupam-se com a estrutura das frases. As regras semânticas trabalham ao nível dos valores intrínsecos dos símbolos e preocupam-se com o significado das frases (o seu conteúdo semântico). O significado é a informação contida numa frase e é aquilo que realmente interessa conhecer para que a comunicação entre dois agentes tenha algum efeito. Processamento de Linguagens: DI-UBI 2017/2018 4/28

5 Linguagens 2. Linguagens naturais versus linguagens artificiais Linguagens naturais (utilizadas para as pessoas comunicarem): - frases pertencem à linguagem por razões de facto (usam no quotidiana); - regras surgem posteriormente para - sistematizar e ensinar no futuro a linguagem, e - organizar/estruturar as frases; - existe ambiguidade. Linguagens artificiais (suportam a comunicação Homem/Máquina) - só começam a ser usadas após o vocabulário ser escolhido e as regras sintáticas e semânticas serem estabelecidas; - as regras definidas são pensadas para garantir a não-ambiguidade. Processamento de Linguagens: DI-UBI 2017/2018 5/28

6 Linguagens 3. Como se especifica uma linguagem As linguagens artificiais têm de ter a sua sintaxe e semântica rigorosamente definidas à custa de regras apropriadas. As regras devem ser escritas de forma sucinta e objetiva, para garantir a sua interpretação - com facilidade e - sem ambiguidade, pelos agentes presentes na comunicação (Emissor e Recetor). A gramática é aceite universalmente como notação formal para definir linguagens - ensinando como se escrevem (produzem) as frases da linguagem (gerador); - determinando como se podem analisar essas frases (reconhecedor). Processamento de Linguagens: DI-UBI 2017/2018 6/28

7 Processamento de Linguagens: DI-UBI 2017/2018 7/28

8 1. Definição Definição: Seja L(G) a linguagem gerada pela gramática G. Um processador para essa linguagem P L(G), é um programa que, tendo conhecimento da gramática G: - lê um texto (sequência de caracteres); - verifica se esse texto é uma frase válida de L(G); - executa uma ação em função do significado da frase reconhecida. Todos estes programas são caracterizados por dois grandes módulos: - análise, faz o reconhecimento do significado do texto fonte; - síntese, reage ao significado identificado, produzindo um determinado resultado. Processamento de Linguagens: DI-UBI 2017/2018 8/28

9 Exemplos de processadores de linguagens: - compiladores: traduzem linguagens programação alto nível para código máquina; - assemblers: traduzem linguagens programação baixo nível para código máquina; - interpretadores: executam os programas imediatamente a seguir ao seu reconhecimento (realizam ações); - tradutores em geral: transformam textos escritos numa linguagem qualquer para outra linguagem qualquer; - carregadores: reconhecem descrições de dados e carregam essa informação para Base de Dados ou para Estruturas de Dados em memória central; - pesquisadores: reconhecem questões ( query ) e pesquisam em Base de Dados para mostrarem as respostas encontradas; - processadores de documentos: usados para diversos tipos de manipulação de documentos como, por ex., formatação (LATEX). Processamento de Linguagens: DI-UBI 2017/2018 9/28

10 Em termos cronológicos, os primeiros processadores de linguagens foram os - assemblers, - compiladores e - interpretadores. Processamento de Linguagens: DI-UBI 2017/ /28

11 2. Tarefas O processamento divide-se em duas partes: - análise (reconhecimento) e, - síntese (reação). Processamento de Linguagens: DI-UBI 2017/ /28

12 A análise é sempre realizada da mesma forma (qualquer que seja o processador da linguagem) e costuma subdividir-se nas três tarefas seguintes: - análise léxica: - leitura sequencial dos caracteres do texto fonte, - separação em palavras e - reconhecimento dos símbolos terminais representados por cada palavra - análise sintática: - agrupar os símbolos terminais e - verificar se formam uma frase sintaticamente correta (composta segundo as regras sintáticas da linguagem) - análise semântica: - verificar se as regras semânticas da linguagem são satisfeitas e - calcular os valores associados aos símbolos, de modo a poder conhecer-se o significado completo da frase. Processamento de Linguagens: DI-UBI 2017/ /28

13 A síntese não é habitual dividir-se em tarefas, para não ter de se pormenorizar em que consiste a ação de transformação e o significado. Módulos associados às fases de análise e de síntese têm de comunicar entre si - Analisador léxico passa ao analisador sintático os símbolos terminais que reconheceu no texto fonte - Analisador sintático envia ao analisador semântico uma representação interna da forma (estrutura sintática) da frase (usando uma árvore de derivação) - Analisador semântico passa ao transformador (reação) uma árvore de sintaxe decorada que representa o significado da frase Processamento de Linguagens: DI-UBI 2017/ /28

14 3. Estratégias de processamento Para a fase de síntese/reação (transformação da frase de entrada no resultado final), existem duas grandes estratégias que podem ser usadas: - Tradução Orientada pela Sintaxe - Tradução Orientada pela Semântica Processamento de Linguagens: DI-UBI 2017/ /28

15 Tradução Orientada pela Sintaxe: - a mais antiga e a mais usada - todo o processamento é controlado pelo analisador sintático - o analisador semântico vai pedindo o próximo símbolo do texto fonte e, à medida que vai progredindo no reconhecimento, vai fazendo, de forma intercalada, a análise semântica e a transformação - não há uma separação nítida entre todas as tarefas e nunca se chega a construir integralmente a árvore de sintaxe decorada, nem tão pouco a árvore de derivação - formalismo de especificação usado é a gramática tradutora - é mais simples de especificar e menos exigente em termos de requisitos de hardware e de software. Processamento de Linguagens: DI-UBI 2017/ /28

16 Tradução Orientada pela Semântica: - tem vindo a ganhar adeptos, à medida que os recursos-máquina aumentam e o seu preço baixa, tendo atualmente uma grande importância - todas as tarefas referidas são executadas separadamente, não se distinguindo nenhuma em relação às outras - a árvore de derivação é construída explicitamente para todas as restantes etapas trabalharem sobre a árvore de sintaxe decorada - formalismo de especificação usado é a gramática de atributos - corresponde a um maior rigor na descrição formal do processador a desenvolver e trás vantagens do ponto de vista da programação. Processamento de Linguagens: DI-UBI 2017/ /28

17 4. Compiladores Definição: Um compilador é um processador de linguagens construído para reconhecer programas, escritos em linguagens de programação de alto nível, e traduzi-los para código binário (máquina). Texto fonte Compilador Texto alvo Mensagens O compilador visto pelo utilizador Processamento de Linguagens: DI-UBI 2017/ /28

18 Definição: Um transcompilador ( cross-compiler ) é um processador que aceita um texto numa linguagem de alto nível e produz um texto noutra linguagem de alto nível. Os compiladores introduzem problemas específicos na análise semântica e na tradução que, neste caso, tem o nome de geração de código. Um compilador é especifico de um determinado computador, pois produz código máquina que varia entre marcas e entre modelos. Processamento de Linguagens: DI-UBI 2017/ /28

19 Pelo facto de - existir desnível entre - a complexa estrutura da linguagem fonte e - a enorme simplicidade da linguagem máquina (o que implica grande dificuldade na definição dos esquemas de tradução) - os esquemas de tradução serem dependentes do computador escolhido como objeto da tradução, leva à criação de uma representação intermédia que deve - manter a mesma semântica do programa fonte e - permitir algumas otimizações. A linguagem escolhida para código intermédio constitui uma representação do código final ¾ não engloba detalhes (como a gestão de registos e de memória) da máquina onde será executado o código final Processamento de Linguagens: DI-UBI 2017/ /28

20 Com a introdução duma linguagem intermédia, a tarefa de geração de código é dividida em duas sub-tarefas: - geração de código intermédio o significado da frase de entrada é reescrito na linguagem intermédia - geração de código final responsável pela tradução do código intermédio para código máquina Processamento de Linguagens: DI-UBI 2017/ /28

21 A implementação de um compilador requer o desenvolvimento de outros módulos próprios e muito importantes para o sucesso do programa final, como sejam: - para fazer o tratamento dos identificadores recolhe toda a informação associada a cada identificador que surge no programa fonte - para fazer o tratamento de erros depois de detetado um erro, encarrega-se de o reportar ao programador e assegurar a sua correção/recuperação - para fazer a otimização do texto fonte e do texto final (objeto) gerado conduzem à produção dum código máquina bastante eficiente em termos de tamanho, de rapidez de execução e de requisitos de memória Processamento de Linguagens: DI-UBI 2017/ /28

22 A otimização é - uma etapa complementar à geração de código (intermédio e final), - atua frequentemente em simultâneo com esta - tem por objetivo a produção de programas mais eficientes, mas mantendo sempre a correção do código otimizado A otimização do código pode ser classificada segundo a área de código a otimizar: - Local sendo cada instrução observada individualmente - Bloco sendo observada uma sequência de instruções denominada bloco básico - Global sendo observada uma janela do programa Processamento de Linguagens: DI-UBI 2017/ /28

23 Programa fonte Análise léxica Análise sintática Análise semântica Tabela de símbolos Geração de código intermédio Geração de código Otimização de código Programa alvo Etapas de um compilador. Processamento de Linguagens: DI-UBI 2017/ /28

24 5. Assemblers Os assemblers são funcionalmente muito parecidos com os compiladores, na medida em que traduzem um programa fonte para código máquina. A diferença reside no facto de que o texto de entrada, nos assemblers, não é escrito numa linguagem de alto nível, mas sim numa linguagem de mnemónicas estruturalmente tão simples quanto um programa em linguagem máquina. Por isso, não só o reconhecimento das frases se torna muito fácil, como também os esquemas de tradução são simples e intuitivos, e o processo de tradução muito direto Na verdade, o assembler pouco difere do módulo de geração de código final igual ao dos compiladores. Processamento de Linguagens: DI-UBI 2017/ /28

25 6. Interpretadores Estes processadores não geram um texto de saída, mas sim executam as instruções do programa fonte logo que o reconhecem. A execução é feita sobre a representação intermédia de código, tipicamente numa notação em árvore. O uso de interpretadores é muito conhecido pelos programadores das linguagens Basic, Lisp e Prolog (os exemplos mais vulgares desta técnica de processamento). As vantagens dos interpretadores são: - fácil de implementar, - assegura maior rapidez no ciclo edição/compilação/execução, - permitem testar/alterar programas à medida que são executados. Processamento de Linguagens: DI-UBI 2017/ /28

26 As desvantagens são: - acesso limitado a rotinas, - inviáveis em projetos de larga escala. O interpretador - não tem de se preocupar com questões de otimização; - geralmente processa linguagens de programação menos ricas estruturalmente do que o compilador. Texto fonte Interpretador Saída Dados Arquitetura de um interpretador Processamento de Linguagens: DI-UBI 2017/ /28

27 7. Tratamento de erros A capacidade para tratar os erros é de enorme importância para a sua aceitação, pelo utilizador final, como ferramenta de trabalho. Se forem detetados erros ao analisar uma frase, esta não deve simplesmente ser rejeitada e o processamento terminar por aí. Definição: Entende-se por tratamento de erros o processo que é desencadeado pelo reconhecedor logo após a deteção de um erro na frase que está a ser analisada. A reação compreende duas grandes tarefas: - sinalização do erro; - correção/recuperação. A deteção de um erro está inerente à análise. Processamento de Linguagens: DI-UBI 2017/ /28

28 Na analise de uma frase, são três as razões que podem levar à deteção de um erro: - caracteres inválidos (erro léxico); - combinação de símbolos terminais inválida (erro sintático); - aparecimento dum símbolo terminal que infringe as regras que têm de ser verificadas para se poder identificar o significado da frase (erro semântico); Uma frase pode ainda conter outro tipo de erros (por ex. algoritmo incorreto), em que um processador de linguagens não é capaz de os detetar (erros lógicos). A sinalização do erro é de importância crucial para que o programador possa localizar o foco de problemas, interpretá-los e corrigi-los definitivamente. Por isso, a mensagem a ser enviada deve, no mínimo, indicar: - a posição (linha e coluna, em relação ao texto fonte) onde o erro foi encontrado; - símbolo de erro; - a causa provável que justifica esse erro (diagnóstico). Processamento de Linguagens: DI-UBI 2017/ /28

Apresentação. !! Familiarização com os métodos de construção de compiladores de linguagens e com as técnicas de compilação mais habituais.

Apresentação. !! Familiarização com os métodos de construção de compiladores de linguagens e com as técnicas de compilação mais habituais. Apresentação Universidade dos Açores Departamento de Matemática www.uac.pt/~hguerra/!! Aquisição de conceitos sobre a definição de linguagens de programação.!! Familiarização com os métodos de construção

Leia mais

Compiladores. Motivação. Tradutores. Motivação. Tipos de Tradutores. Tipos de Tradutores

Compiladores. Motivação. Tradutores. Motivação. Tipos de Tradutores. Tipos de Tradutores Motivação Prof. Sérgio Faustino Compiladores Conhecimento das estruturas e algoritmos usados na implementação de linguagens: noções importantes sobre uso de memória, eficiência, etc. Aplicabilidade freqüente

Leia mais

Compiladores. Introdução

Compiladores. Introdução Compiladores Introdução Apresentação Turma Noite Continuada I 20/03 Continuada II 22/05 Atividades Regimental 05/06 Total 1 Ponto 1 Ponto 1 Ponto 7 Pontos 10 Pontos Aulas expositivas teórico-práticas Exercícios

Leia mais

INE5421 LINGUAGENS FORMAIS E COMPILADORES

INE5421 LINGUAGENS FORMAIS E COMPILADORES INE5421 LINGUAGENS FORMAIS E COMPILADORES PLANO DE ENSINO Objetivo geral Conhecer a teoria das linguagens formais visando sua aplicação na especificação de linguagens de programação e na construção de

Leia mais

Universidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES. Introdução. Geovane Griesang

Universidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES. Introdução. Geovane Griesang Universidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES Introdução [email protected] Processadores de linguagem Linguagens de programação são notações para se descrever

Leia mais

Compiladores I Prof. Ricardo Santos (cap 1)

Compiladores I Prof. Ricardo Santos (cap 1) Compiladores I Prof. Ricardo Santos (cap 1) Compiladores Linguagens de programação são notações que permitem descrever como programas devem executar em uma máquina Mas, antes do programa executar, deve

Leia mais

Compiladores. Introdução à Compiladores

Compiladores. Introdução à Compiladores Compiladores Introdução à Compiladores Cristiano Lehrer, M.Sc. Introdução (1/2) O meio mais eficaz de comunicação entre pessoas é a linguagem (língua ou idioma). Na programação de computadores, uma linguagem

Leia mais

Conceitos de Linguagens de Programação

Conceitos de Linguagens de Programação Conceitos de Linguagens de Programação Aula 03 Processo de Compilação Edirlei Soares de Lima Métodos de Implementação Arquitetura de Von Neumann: A linguagem de máquina de um computador

Leia mais

Introdução à Programação

Introdução à Programação Introdução à Programação Linguagens de Programação: sintaxe e semântica de linguagens de programação e conceitos de linguagens interpretadas e compiladas Engenharia da Computação Professor: Críston Pereira

Leia mais

Paradigmas de Linguagem de Programação. Aspectos Básicos

Paradigmas de Linguagem de Programação. Aspectos Básicos Paradigmas de Linguagem de Programação Aspectos Básicos Introdução Nesta segunda etapa de nossos estudos, veremos: aspectos básicos de programa e linguagem de programação; revisão de conceitos de compilador

Leia mais

Linguagens de Programação Classificação

Linguagens de Programação Classificação Classificação Classificação A proximidade que a linguagem de programação tem com a humana determina sua classe (o nível): Linguagem de máquina (primeira geração) Linguagem assembly - de montagem (segunda

Leia mais

Programação: Compiladores x Interpretadores PROF. CARLOS SARMANHO JR

Programação: Compiladores x Interpretadores PROF. CARLOS SARMANHO JR Programação: Compiladores x Interpretadores PROF. CARLOS SARMANHO JR Introdução Compiladores e interpretadores são formas de tradução de um código geralmente de alto nível (escrito em uma linguagem de

Leia mais

Construção de Compiladores. Capítulo 1. Introdução. José Romildo Malaquias. Departamento de Computação Universidade Federal de Ouro Preto 2014.

Construção de Compiladores. Capítulo 1. Introdução. José Romildo Malaquias. Departamento de Computação Universidade Federal de Ouro Preto 2014. Construção de Compiladores Capítulo 1 Introdução José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2014.2 1/22 1 Linguagens de programação 2 Compilação 2/22 Tópicos 1

Leia mais

4) Defina o que vem a ser um algoritmo, e porque, o mesmo depende do processo.

4) Defina o que vem a ser um algoritmo, e porque, o mesmo depende do processo. Lista de Exercício 1 Algoritmo e Programação 29/08/2018 (Solução) 1) Escreva conforme a premissas computacionais, o que vem a ser, lógica. R: São as premissas básicas para se executar instruções, alocadas

Leia mais

Compiladores. Fabio Mascarenhas

Compiladores. Fabio Mascarenhas Compiladores Fabio Mascarenhas 2017.1 http://www.dcc.ufrj.br/~fabiom/comp Introdução Compiladores x Interpretadores Offline x Online Um compilador transforma um programa executável de uma linguagem fonte

Leia mais

Conversões de Linguagens: Tradução, Montagem, Compilação, Ligação e Interpretação

Conversões de Linguagens: Tradução, Montagem, Compilação, Ligação e Interpretação Conversões de Linguagens: Tradução, Montagem, Compilação, Ligação e Interpretação Para executar uma tarefa qualquer, um computador precisa receber instruções precisas sobre o que fazer. Uma seqüência adequada

Leia mais

Algoritmos e Programação

Algoritmos e Programação Universidade Federal do Vale do São Francisco Curso de Engenharia da Produção / Elétrica Parte 04 Prof. Jorge Cavalcanti [email protected] www.univasf.edu.br/~jorge.cavalcanti www.twitter.com/jorgecav

Leia mais

PROGRAMAÇÃO I. Introdução

PROGRAMAÇÃO I. Introdução PROGRAMAÇÃO I Introdução Introdução 2 Princípios da Solução de Problemas Problema 1 Fase de Resolução do Problema Solução na forma de Algoritmo Solução como um programa de computador 2 Fase de Implementação

Leia mais

Prof. Antonio Almeida de Barros Jr. Prof. Antonio Almeida de Barros Junior

Prof. Antonio Almeida de Barros Jr. Prof. Antonio Almeida de Barros Junior Prof. Antonio Almeida de Barros Jr. Prof. Antonio Almeida de Barros Junior Meio pelo qual se pode indicar os passos que devem ser realizados pelo computador para resolver problemas; Através da linguagem,

Leia mais

Projeto de Compiladores

Projeto de Compiladores Projeto de Compiladores FIR Faculdade Integrada do Recife João Ferreira 12 e 13 de fevereiro de 2007 Questionário 1. Em quais linguagens de programação você já programou? 2. O que você sabe sobre compiladores?

Leia mais

EA876 - Introdução a Software de Sistema

EA876 - Introdução a Software de Sistema A876 - Introdução a Software de Sistema Software de Sistema: conjunto de programas utilizados para tornar o hardware transparente para o desenvolvedor ou usuário. Preenche um gap de abstração. algoritmos

Leia mais

Questões de Paradigmas de Programação Matéria: Prova 1 4ª EDIÇÃO

Questões de Paradigmas de Programação Matéria: Prova 1 4ª EDIÇÃO Questões de Paradigmas de Programação Matéria: Prova 1 4ª EDIÇÃO QUESTÃO 1 : Enviada por: Francisco Carlos Moraes Junior Duvidas: Thaise Domínios de programação são áreas onde os computadores são usados.

Leia mais

Programação de Computadores:

Programação de Computadores: Instituto de C Programação de Computadores: Introdução a Linguagens de Programação Luis Martí Instituto de Computação Universidade Federal Fluminense [email protected] - http://lmarti.com Seis Camadas Problema

Leia mais

Paradigmas de Programação

Paradigmas de Programação Paradigmas de Programação Prof.: Edilberto M. Silva http://www.edilms.eti.br Aula 2 Linguagens de Programação Desenvolvimento e execução de programas Características de linguagens Execução de programas

Leia mais

Desenvolvimento de Aplicações Desktop

Desenvolvimento de Aplicações Desktop Desenvolvimento de Aplicações Desktop Conceitos Básicos de Programação Professor: Charles Leite O Desenvolvimento de Programas A programação consiste em indicar como o computador (hardware) deve trabalhar

Leia mais

Compiladores. Conceitos Básicos

Compiladores. Conceitos Básicos Compiladores Conceitos Básicos Processadores de Linguagem De forma simples, um compilador é um programa que recebe como entrada um programa em uma linguagem de programação a linguagem fonte e o traduz

Leia mais

Introdução à Programação Aula 03. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação

Introdução à Programação Aula 03. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação Aula 03 Prof. Max Santana Rolemberg Farias [email protected] Colegiado de Engenharia de Computação Linguagens de Programação A primeira linguagem de programação foi criada por Ada Lovelace. Amiga

Leia mais

Linguagens de Programação

Linguagens de Programação Universidade Federal do Rio Grande do Norte Centro de Tecnologia Departamento de Computação e Automação Linguagens de Programação Professor Responsável: Luiz Affonso Henderson Guedes de Oliveira Prof.

Leia mais

Como construir um compilador utilizando ferramentas Java

Como construir um compilador utilizando ferramentas Java Como construir um compilador utilizando ferramentas Java p. 1/2 Como construir um compilador utilizando ferramentas Java Aula 1 - Introdução Prof. Márcio Delamaro [email protected] Como construir um

Leia mais

Introdução aos Compiladores

Introdução aos Compiladores Universidade Católica de Pelotas Introdução aos Compiladores André Rauber Du Bois [email protected] 1 MOTIVAÇÃO Entender os algor ıtmos e estruturas usados para se implementar linguagens de programação

Leia mais

Programação de Sistemas (Sistemas de Programação) Semana 10, Aula 17

Programação de Sistemas (Sistemas de Programação) Semana 10, Aula 17 PCS3616 Programação de Sistemas (Sistemas de Programação) Semana 10, Aula 17 Linguagens e Compiladores Programação em linguagem de alto nível Escola Politécnica da Universidade de São Paulo Roteiro 1.

Leia mais

Introdução à Computação

Introdução à Computação UNIVERSIDADE ESTADUAL DE MARINGÁ DEPARTAMENTO DE INFORMÁTICA Introdução à Computação Prof. Yandre Maldonado - 1 Prof. Yandre Maldonado e Gomes da Costa [email protected] Histórico da Computação Prof. Yandre

Leia mais

Introdução à Computação

Introdução à Computação Introdução à Computação Jordana Sarmenghi Salamon [email protected] [email protected] http://inf.ufes.br/~jssalamon Departamento de Informática Universidade Federal do Espírito Santo Agenda

Leia mais

Linguagens e Compiladores

Linguagens e Compiladores Linguagens e Compiladores Aula 1: a) Critérios b) Noções de Compiladores e Interpretadores c) Usos da tecnologia de compilação d) Compiladores, filtros e pré-processadores e) Estruturação lógica de compiladores

Leia mais

Função, interação com o compilador Especificação e reconhecimento de tokens Implementação Tratamento de erros. Prof. Thiago A. S.

Função, interação com o compilador Especificação e reconhecimento de tokens Implementação Tratamento de erros. Prof. Thiago A. S. Análise léxica Função, interação com o compilador Especificação e reconhecimento de tokens Implementação Tratamento de erros Prof. Thiago A. S. Pardo 1 Estrutura geral de um compilador programa-fonte analisador

Leia mais

Sistema Computacional

Sistema Computacional Algoritmos e Lógica de Programação Conceitos Básicos Abstração Reinaldo Gomes [email protected] O que é um? Integração de componentes atuando como uma entidade, com o propósito de processar dados, i.e.

Leia mais

Tratamento dos Erros de Sintaxe. Adriano Maranhão

Tratamento dos Erros de Sintaxe. Adriano Maranhão Tratamento dos Erros de Sintaxe Adriano Maranhão Introdução Se um compilador tivesse que processar somente programas corretos, seu projeto e sua implementação seriam grandemente simplificados. Mas os programadores

Leia mais

Introdução à Programação. João Manuel R. S. Tavares

Introdução à Programação. João Manuel R. S. Tavares Introdução à Programação João Manuel R. S. Tavares Sumário 1. Ciclo de desenvolvimento de um programa; 2. Descrição de algoritmos; 3. Desenvolvimento modular de programas; 4. Estruturas de controlo de

Leia mais

COMPILAÇÃO. Ricardo José Cabeça de Souza

COMPILAÇÃO. Ricardo José Cabeça de Souza COMPILAÇÃO Ricardo José Cabeça de Souza www.ricardojcsouza.com.br Programas Código-fonte escrito em linguagem de programação de alto nível, ou seja, com um nível de abstração muito grande, mais próximo

Leia mais

Linguagens de Programação Aula 3

Linguagens de Programação Aula 3 Aula 3 Celso Olivete Júnior [email protected] Na aula passada... Classificação das LPs (nível, geração e paradigma) Paradigmas Imperativo, OO, funcional, lógico e concorrente 2/33 Na aula de hoje...

Leia mais

3. Linguagem de Programação C

3. Linguagem de Programação C Introdução à Computação I IBM1006 3. Linguagem de Programação C Prof. Renato Tinós Departamento de Computação e Matemática (FFCLRP/USP) 1 Principais Tópicos 3. Linguagem de programação C 3.1. Conceitos

Leia mais

Tecnólogo em Análise e Desenvolvimento de Sistemas. Sistemas Operacionais (SOP A2)

Tecnólogo em Análise e Desenvolvimento de Sistemas. Sistemas Operacionais (SOP A2) Tecnólogo em Análise e Desenvolvimento de Sistemas Sistemas Operacionais (SOP A2) Conceitos de Hardware e Software Referências: Arquitetura de Sistemas Operacionais. F. B. Machado, L. P. Maia. Editora

Leia mais

Programação de Computadores IV. Introdução a Linguagens de Programação Simone Martins SLIDES CEDIDOS POR BRUNO MARQUES 1

Programação de Computadores IV. Introdução a Linguagens de Programação Simone Martins SLIDES CEDIDOS POR BRUNO MARQUES 1 Programação de Computadores IV Introdução a Linguagens de Programação Simone Martins [email protected] SLIDES CEDIDOS POR BRUNO MARQUES 1 Arquitetura de programação 2 O Que é um Dado? Dado é o elemento

Leia mais

Compiladores. Prof. Bruno Moreno

Compiladores. Prof. Bruno Moreno Compiladores Prof. Bruno Moreno Apresentação - Professor Bruno Neiva Moreno Graduado em Ciência da Computação (UFPB) 2004 a 2009 Bolsista PIBIC/CNPq LARHENA - Laboratório de Recursos Hídricos e Engenharia

Leia mais

Introdução à Programação

Introdução à Programação Introdução à Program João Manuel R. S. Tavares Sumário 1. Ciclo de desenvolvimento de um programa; 2. Descrição de algoritmos; 3. Desenvolvimento modular de programas; 4. Estruturas de controlo de um programa.

Leia mais

a) Computador b) Estrutura do sistema i. Hardware ii.software c) Linguagens de Programação i. Paradigmas e Programação 1.

a) Computador b) Estrutura do sistema i. Hardware ii.software c) Linguagens de Programação i. Paradigmas e Programação 1. a) Computador b) Estrutura do sistema i. Hardware ii.software c) Linguagens de Programação i. Paradigmas e Programação 1. Estruturada 2. Orientada a eventos 3. Orientada a objetos d) Sistemas Operacionais

Leia mais

Universidade Federal de Goiás Bacharelado em Ciências da Computacão Compiladores

Universidade Federal de Goiás Bacharelado em Ciências da Computacão Compiladores Universidade Federal de Goiás Bacharelado em Ciências da Computacão Compiladores 2013-2 Compilador para a Linguagem Cafezinho Especificação dos trabalhos: T2 (Geração da Representação Intermediária e Análise

Leia mais

INE5416 Paradigmas de Programação. Ricardo Azambuja Silveira INE CTC UFSC E Mail: URL:

INE5416 Paradigmas de Programação. Ricardo Azambuja Silveira INE CTC UFSC E Mail: URL: INE5416 Paradigmas de Programação Ricardo Azambuja Silveira INE CTC UFSC E Mail: [email protected] URL: www.inf.ufsc.br/~silveira Conceitos Léxica estudo dos símbolos que compõem uma linguagem Sintaxe

Leia mais

TÉCNICO EM MANUTENÇÃO E SUPORTE EM INFORMÁTICA FORMA SUBSEQUENTE. Professora: Isabela C. Damke

TÉCNICO EM MANUTENÇÃO E SUPORTE EM INFORMÁTICA FORMA SUBSEQUENTE. Professora: Isabela C. Damke TÉCNICO EM MANUTENÇÃO E SUPORTE EM INFORMÁTICA FORMA SUBSEQUENTE Professora: Isabela C. Damke [email protected] Linguagem de Programação Uma linguagem de programação é um conjunto de símbolos (

Leia mais

Capítulo 1. Linguagens e processadores

Capítulo 1. Linguagens e processadores Capítulo 1. 1. Linguagens 1.1. Definição Definição : Uma linguagem L sobre um alfabeto, também designado com frequência por vocabulário, V, é um conjunto de frases, em que cada frase é uma sequência de

Leia mais

Noções de compilação

Noções de compilação Noções de compilação Compilador: o que é, para que serve e estrutura geral Parentes do compilador e programas correlatos Prof. Thiago A. S. Pardo 1 Compilação: por que estudar? (parte 1) Compiladores:

Leia mais

Programação I Apresentação

Programação I Apresentação Programação I Apresentação Prof. Carlos Alberto [email protected] [email protected] Referências JUNIOR, D. P.; NAKAMITI, G. S.; ENGELBRECHT, A. de M. E.; BIANCHI, F. Algoritmos e Programação

Leia mais

Métodos de implementação de linguagens. Kellen Pinagé

Métodos de implementação de linguagens. Kellen Pinagé Métodos de implementação de linguagens Kellen Pinagé Sumário Métodos de implementação de linguagens Compilação Interpretação pura Híbrido Métodos de implementação de linguagens Principais componentes de

Leia mais

Conteúdo. Introdução a compiladores Tradução x Interpretação Processo de Compilação

Conteúdo. Introdução a compiladores Tradução x Interpretação Processo de Compilação Compiladores Conteúdo Introdução a compiladores Tradução x Interpretação Processo de Compilação Quando se inventou o computador criou se uma máquina a mais, quando se criou o compilador criou se uma nova

Leia mais

Curso Profissional de Gestão e Programação de Sistemas Informáticos. Programação e Sistemas de Informação. Módulo 1. 1ª Parte Prof. Sandra Pais Soares

Curso Profissional de Gestão e Programação de Sistemas Informáticos. Programação e Sistemas de Informação. Módulo 1. 1ª Parte Prof. Sandra Pais Soares Curso Profissional de Gestão e Programação de Sistemas Informáticos Programação e Sistemas de Informação Módulo 1 1ª Parte Prof. Sandra Pais Soares Linguagens de Programação Linguagens de Programação Uma

Leia mais

Existem três categorias principais de linguagem de programação: linguagem de máquina, linguagens assembly e linguagens de alto nível.

Existem três categorias principais de linguagem de programação: linguagem de máquina, linguagens assembly e linguagens de alto nível. Aula 3 SOFTWARE (programas) Um programa (software) consiste em uma sequência de instruções escritas numa linguagem precisa chamada linguagem de programação. Estas instruções são traduzidas em um compilador,

Leia mais

Gramáticas Livres de Contexto Parte 1

Gramáticas Livres de Contexto Parte 1 Universidade Estadual de Feira de Santana Engenharia de Computação Gramáticas Livres de Contexto Parte 1 EXA 817 Compiladores Prof. Matheus Giovanni Pires O papel do Analisador Sintático É responsável

Leia mais

Resolução de Problemas com Computador. Resolução de Problemas com Computador. Resolução de Problemas com Computador

Resolução de Problemas com Computador. Resolução de Problemas com Computador. Resolução de Problemas com Computador Prof. Araken Medeiros [email protected] O processo de resolução de um problema com um computador leva à escrita de um algoritmo ou programa e à sua execução. Mas o que é um algoritmo? Angicos, RN 15/9/2009

Leia mais

UNIDADE 1 CONCEITOS BÁSICOS EM ALGORITMOS

UNIDADE 1 CONCEITOS BÁSICOS EM ALGORITMOS 1 UNIDADE 1 CONCEITOS BÁSICOS EM ALGORITMOS 1.1 NOÇÕES DE LÓGICA a) Conceitos: - Lógica é a ciência que estuda as leis do raciocínio; coerência; raciocínio. - Lógica como técnica nos ensina a usar corretamente

Leia mais

SEMÂNTICA. Rogério Rocha. rode = program simples = var x : int := 3 in x := x + 5 end.

SEMÂNTICA. Rogério Rocha. rode = program simples = var x : int := 3 in x := x + 5 end. SEMÂNTICA program simples = var x : int := 3 in x := x + 5 end. rode =? Rogério Rocha Roteiro Introdução Sintaxe Semântica Dinâmica (Métodos formais) Operacional Axiomática Denotacional Estática Conclusão

Leia mais

Aula 5 Oficina de Programação Introdução ao C. Profa. Elaine Faria UFU

Aula 5 Oficina de Programação Introdução ao C. Profa. Elaine Faria UFU Aula 5 Oficina de Programação Introdução ao C Profa. Elaine Faria UFU - 2017 Linguagem de Programação Para que o computador consiga ler um programa e entender o que fazer, este programa deve ser escrito

Leia mais

Introdução à Computação: Máquinas Multiníveis

Introdução à Computação: Máquinas Multiníveis Introdução à Computação: Máquinas Multiníveis Beatriz F. M. Souza ([email protected]) http://inf.ufes.br/~bfmartins/ Computer Science Department Federal University of Espírito Santo (Ufes), Vitória,

Leia mais

Compiladores e Computabilidade

Compiladores e Computabilidade Compiladores e Computabilidade Prof. Leandro C. Fernandes UNIP Universidade Paulista, 2013 GERAÇÃO DE CÓDIGO INTERMEDIÁRIO Geração de Código Intermediário Corresponde a 1ª etapa do processo de Síntese

Leia mais

Fundamentos de Programação. Diagrama de blocos

Fundamentos de Programação. Diagrama de blocos Fundamentos de Programação Diagrama de blocos Prof. M.Sc.: João Paulo Q. dos Santos E-mail: [email protected] Página: http://docente.ifrn.edu.br/joaoqueiroz/ O processo de desenvolvimento (programação),

Leia mais

IV.2 Aspectos Léxicos Convencionais

IV.2 Aspectos Léxicos Convencionais IV.2 Aspectos Léxicos Convencionais Classes de símbolos Genéricos - Token genérico / Lei de formação bem definida - Limitações de tamanho e/ou valor - Possuem valor semântico o token deve ser acompanhado

Leia mais

Estrutura geral de um compilador programa-fonte

Estrutura geral de um compilador programa-fonte Análise léxica Função, interação com o compilador Especificação e reconhecimento de tokens Implementação Tratamento de erros Prof. Thiago A. S. Pardo 1 Estrutura geral de um compilador programa-fonte analisador

Leia mais

INE5622 INTRODUÇÃO A COMPILADORES

INE5622 INTRODUÇÃO A COMPILADORES INE5622 INTRODUÇÃO A COMPILADORES PLANO DE ENSINO Objetivo geral Conhecer o processo de especificação e implementação de linguagens de programação, a partir do estudo dos conceitos, modelos, técnicas e

Leia mais

Compiladores Ciência e Tecnologia da Computação Engenharia Informática e de Computadores

Compiladores Ciência e Tecnologia da Computação Engenharia Informática e de Computadores Compiladores Ciência e Tecnologia da Computação Engenharia Informática e de Computadores Análise Semântica Universidade dos Açores Departamento de Matemática www.uac.pt/~hguerra Análise semântica 3ª etapa

Leia mais

Autômatos e Linguagens

Autômatos e Linguagens Autômatos e Linguagens Eduardo Ferreira dos Santos Ciência da Computação Centro Universitário de Brasília UniCEUB Agosto, 2016 1 / 41 Sumário 1 Compiladores 2 Linguagens de programação 3 Ciência dos compiladores

Leia mais

Compiladores. Eduardo Ferreira dos Santos. Fevereiro, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 38

Compiladores. Eduardo Ferreira dos Santos. Fevereiro, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 38 Compiladores Eduardo Ferreira dos Santos Ciência da Computação Centro Universitário de Brasília UniCEUB Fevereiro, 2017 1 / 38 Sumário 1 Compiladores 2 Linguagens de programação 3 Ciência dos compiladores

Leia mais

Curso Profissional de Gestão e Programação de Sistemas Informáticos. Programação e Sistemas de Informação. Módulo 1. 2ª Parte Prof. Sandra Pais Soares

Curso Profissional de Gestão e Programação de Sistemas Informáticos. Programação e Sistemas de Informação. Módulo 1. 2ª Parte Prof. Sandra Pais Soares Curso Profissional de Gestão e Programação de Sistemas Informáticos Programação e Sistemas de Informação Módulo 1 2ª Parte Prof. Sandra Pais Soares Introdução à Lógica de Programação A elaboração de um

Leia mais

INFORMÁTICA: Informação automática

INFORMÁTICA: Informação automática INTRODUÇÃO INFORMÁTICA: Informação automática Definição: é a ciência que estuda o tratamento automático e racional da informação (encarregada pelo estudo e desenvolvimento de máquinas e métodos para processar

Leia mais