Linguagem de Programação e Compiladores

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

Linguagens de Programação Aula 3

ao paradigma imperativo

Gabriel Giorisatto De Angelo Luiz Otávio Gerhardt Fernandes

Linguagens de Programação Funcional

Linguagens de Programação Conceitos e Técnicas. Amarrações

A Linguagem Lua Lua Puc-Rio

Nomes, Amarração, Verificação de Tipos, e Escopo

As fases de um compilador

Linguagens de Programação

Aula 1 Java Prof. Dr. Sylvio Barbon Junior

As fases de um compilador

Paradigmas de Programação

Capítulo 1. Aspectos Preliminares

Algoritmos e Programação

02. [Sebesta, 2000] Qual é o perigo potencial dos nomes que fazem distinção entre maiúsculas e minúsculas?

JavaScript (Elementos de Programação e Programação Básica)

Projeto de Linguagem. Linguagens de Programação

Paradigmas de Programação

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

Prof. Adriano Maranhão COMPILADORES

Capítulo 7. Expressões e Sentenças de Atribuição

Computação L2. Linguagem C++ Observação: Material Baseado na Disciplina Computação Eletrônica.

Compiladores II. Fabio Mascarenhas

CONCEITOS DE LINGUAGEM DE PROGRAMAÇÃO CARACTERÍSTICAS. João Gabriel Ganem Barbosa

Introdução a Ciência da Computação

Python - Variáveis e expressões

Paradigmas de Programação

Compiladores Aula 12. Celso Olivete Júnior.

Variáveis primitivas e Controle de fluxo

Paradigmas de Linguagem de. Programação Profª. Roberta B Tôrres de programação referem-se a:

Autômatos e Linguagens

Introdução à Programação

Paradigmas de Linguagens de Programação. Nomes, Vinculações, Verificação de Tipos e Escopos

MINISTÉRIO DA EDUCAÇÃO CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DIRETORIA DE GRADUAÇÃO

CAP. VI ANÁLISE SEMÂNTICA

Estudos de Linguagens de Programação - Revisão

Linguagens de Programação 2 Amarrações

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

Comandos de desvio de fluxo. Expressões lógicas.

Algoritmos e Programação

PROGRAMAÇÃO I. Introdução

LINGUAGENS FORA DO PADRÃO DE MERCADO

Introdução à Engenharia ENG1000

LINGUAGENS E PARADIGMAS DE PROGRAMAÇÃO. Ciência da Computação IFSC Lages. Prof. Wilson Castello Branco Neto

Tipos, Literais, Operadores

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

Como construir um compilador utilizando ferramentas Java

Algoritmos. Prof. Jonatas Bastos Site:

Vamos Programar? - Introdução à Programação #3

Fundamentos de Sistemas Operacionais

Compiladores. Fabio Mascarenhas

Análise Semântica: Verificação de Tipos

Computação e Programação

Nomes, Vinculações, Verificação de Tipos e Escopos. George Darmiton da Cunha Cavalcanti

Orientação a Objetos e Java

Conceitos básicos de programação

DESENVOLVIMENTO DO COMPILADOR PARA A LINGUAGEM SIMPLE

Compiladores - Gramáticas

Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: Operadores relacionais e lógicos estruturas condicionais If...

Comandos em C (cont.)

Computação I: Linguagem de Programação Python

Linguagem de Programação Lua

Aula 23: Noções de Compilação, Montagem, Link-edição, e Interpretação

Linguagens de programação

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

PORTUGUÊS ESTRUTURADO: INTRODUÇÃO INTRODUÇÃO À PROGRAMAÇÃO PROF. ALEXANDRO DOS SANTOS SILVA

Compiladores - Gramáticas

Tema da aula Introdução ao paradigma de programação: Orientado a Objetos

IEC Banco de Dados I Aula 11 Técnicas de Programação SQL

PRIMEIROS PASSOS COM PYTHON. Prof. Msc. Luis Filipe Alves Pereira 2015

Apostila de Fortran. É uma pseudo-linguagem a qual oferece recursos para que o programador possa codificar e testar os seus algoritmos.

Estruturas da linguagem C. 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões.

Transcrição:

Linguagem de Programação e Compiladores Fernando Antônio Asevedo Nóbrega Instituto de Ciências Matemáticas e de Computação USP SCC-206 Introdução à Compilação 24 de abril de 2012 1 / 20

Sumário 1 Introdução 2 Características Domínio ou Propósito Variáveis, Nomes e Tipo 3 Paradigmas Funcional Lógico Procedural Orientado à Objetos Multi-paradigma 4 Linguagem LUA Características Lua 2 / 20

Quais, e como, características de Linguagens de Programação interferem no desenvolvimento de um Compilador 3 / 20

Domínio Em qual área será utilizada a linguagem? Científico Fortran, Matlab R, Ocatve, Ada Comercial Cobol Geral Inteligência Artificial LISP, Prolog, Scheme Móvel Java Scripting Lua, Perl, Python Web JavaScript, PHP Específicas* RPG (Relatórios) Isso interfere na construção de um Compilador? Isso é léxico, sintático ou semântico? 4 / 20

Tipagem de Variáveis Declaração: Expĺıcita X Impĺıcita C, Java X Python, PHP Tipagem: Dinâmica X Estática PHP, Pyton X C, Java Tipagem: Fraca X Forte C, PHP X Java Isso é léxico, sintático ou semântico? 5 / 20

Verificação de Tipo e Exceções Verificar tipos das variáveis e possíveis exceções, como acessar uma posição não existente de um vetor C: não trata posição inválida de vetores Java: trata uso de posições inválidas : Verificação em compilação x execução Léxico, Sintático ou Semântico? O que muda em um compilador que possui esses recursos para outro que não possui? 6 / 20

Como é a LALG Domínio Declaração Tipagem Exceções Paradigma 7 / 20

Como é a LALG Domínio Declaração Tipagem Exceções Paradigma Geral (acadêmico) 7 / 20

Como é a LALG Domínio Declaração Tipagem Exceções Paradigma Geral (acadêmico) Expĺıcita 7 / 20

Como é a LALG Domínio Declaração Tipagem Exceções Paradigma Geral (acadêmico) Expĺıcita Estática e Fraca 7 / 20

Como é a LALG Domínio Declaração Tipagem Exceções Paradigma Geral (acadêmico) Expĺıcita Estática e Fraca Não trata 7 / 20

Como é a LALG Domínio Declaração Tipagem Exceções Paradigma Geral (acadêmico) Expĺıcita Estática e Fraca Não trata Procedural 7 / 20

O que são paradigmas? Formas diferentes de resolver um problema Adequações para algumas áreas Estudos formais de computabilidade (Paradigma Funcional) Por que é importante reconhecer paradigmas? 8 / 20

O que são paradigmas? Formas diferentes de resolver um problema Adequações para algumas áreas Estudos formais de computabilidade (Paradigma Funcional) Por que é importante reconhecer paradigmas? 8 / 20

Funcional Baseada em funções matemáticas Não há comandos de iteração, devem ser convertidos para funções recursivas Muito útil para manipulação de símbolos (IA) Desenvolvidas para estudo de computabilidade LISP Como a matemática (funções) resolve um problema? Lisp, Scheme, Haskell 9 / 20

Lógico Sintaxe baseado em lógica matemática (Clausulas lógicas) Cálculo de Predicados Não sequencial Aplicam, em geral, provadores de teoremas Aplicado em IA Não possui comandos de iteração O que deve ser representado para resolver um problema? Prolog (e variações) 10 / 20

Procedural Sequencia de comandos Paradigma mais comum aos programadores Possuem comandos de iteração e desvio Qual a sequencia de passos para resolver um problema? C, C++(meio termo), Basic 11 / 20

Orientado à Objetos Não necessariamente uma sequencia de comandos Objetos, que representam entidades, trocam mensagens Herança Abstração dos dados Como entidades relacionam-se para resolver um problema? C++(meio termo), Java, Python, Perl, Ruby 12 / 20

Multi-paradigma Agregam características de mais do que um paradigma Em geral, a maioria das linguagem possuem um paradigma dominante e agregam características de outros paradigmas Funcional: Scheme OO: Java, Ruby, Perl Existem linguagens projetadas para multi-paradigmas Oz, Scala a a Usada pelo Twitter 13 / 20

Linguagem LUA Desenvolvida na PUC-RIO Brasil download: http://www.lua.org/download.html Atualmente, mantida pelo LabLua http://www.lua.inf.puc-rio.br Famosa pelo uso em games Ironicamente, mais conhecida fora do Brasil Uso de tabelas associativa (pode-se entender como hash) Quem usa: 14 / 20

Léxico da Lua Identificador Qualquer cadeia de letras, dígitos e sublinhados que não inciam com dígito Sensível ao caso Palavras reservadas and, break, do, else, elseif, end, false, for, function, if, in, local, nil, not, or, repeat, return, then, true, until, while Símbolos permitidos ˆ + /%# == =<=>=<>= ( ) { } [ ] ; :,...... 15 / 20

Precedência de Operadores Maior Menor ˆ not # - (unário) * / % +.. < > <= >= = == and or 16 / 20

Estruturas de Controle comando ::= while exp do bloco end comando ::= repeat bloco until exp comando ::= if exp then bloco {elseif exp then bloco} [else bloco] end comando ::= for nome = exp, exp [, exp] do bloco end comando ::= for listadenomes in listaexp do bloco end 17 / 20

Retorno e Escopo Retorno Escopo comando ::= return [ listaexp ] O que isso sugere? Lua possui escopo léxico, onde um identificador é visível a partir do momento que foi declarado até o fechamento (end) do bloco mais interno. 18 / 20

Retorno e Escopo Retorno comando ::= return [ listaexp ] O que isso sugere? Uma função pode retornar mais de um valor Escopo Lua possui escopo léxico, onde um identificador é visível a partir do momento que foi declarado até o fechamento (end) do bloco mais interno. 18 / 20

Retorno e Escopo Retorno comando ::= return [ listaexp ] O que isso sugere? Uma função pode retornar mais de um valor Escopo Lua possui escopo léxico, onde um identificador é visível a partir do momento que foi declarado até o fechamento (end) do bloco mais interno. 18 / 20

Características Lua Compilação Domínio Declaração Tipagem Exceções 19 / 20

Características Lua Compilação Domínio Declaração Tipagem Exceções Interpretada 19 / 20

Características Lua Compilação Domínio Declaração Tipagem Exceções Interpretada Scripting 19 / 20

Características Lua Compilação Domínio Declaração Tipagem Exceções Interpretada Scripting Impĺıcita 19 / 20

Características Lua Compilação Domínio Declaração Tipagem Exceções Interpretada Scripting Impĺıcita Dinâmica 19 / 20

Características Lua Compilação Domínio Declaração Tipagem Exceções Interpretada Scripting Impĺıcita Dinâmica trata 19 / 20

Referências Sebesta, Robert W.(2009) Concepts of programming languages. 9 ed. Editora Pearson Ierusalimschy, R.; de Figueiredo, L. H.; Waldemar Celes Manual de Referência de Lua 5.1. http://www.lua.org/manual/5.1/pt/manual.html 20 / 20