Introdução O problema geral de descrever sintaxe Métodos formas de descrever sintaxe Gramática de atributos Semântica dinâmica

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

Download "Introdução O problema geral de descrever sintaxe Métodos formas de descrever sintaxe Gramática de atributos Semântica dinâmica"

Transcrição

1 Capítulo 3 Descrevendo sintaxe e semântica ISBN Tópicos Introdução O problema geral de descrever sintaxe Métodos formas de descrever sintaxe Gramática de atributos Semântica dinâmica Copyright 2004 Pearson Addison-Wesley. All rights reserved

2 Introdução Quem deve usar definições de linguagens? Outros projetistas de linguagens Implementadores Programadores Sintaxe a forma ou estrutura das expressões, comandos e unidades de programas Semântica o significado das expressões, comandos e unidades de programas Copyright 2004 Pearson Addison-Wesley. All rights reserved. 3-3 Descrevendo sintaxe Uma sentença é uma string de caracteres sobre um alfabeto Uma linguagem é um conjunto de sentenças Um lexema é o nível mais baixo de unidade sintática da linguagem (ex., *, sum, begin) Um token é uma categoria de lexemas (ex. Um identificador) Copyright 2004 Pearson Addison-Wesley. All rights reserved

3 Lexemas - exemplo Index = 2 * count + 17; Index = 2 * Count + 17 ; Identificador Sinal_igualdade Literal_int Op_mult Identificador Op_soma Literal_int PontoVirgula Copyright 2004 Pearson Addison-Wesley. All rights reserved. 3-5 Descrevendo Sintaxe Enfoques formais para descrever sintaxe : Reconhecedores - usados em compiladores Geradores geram sentenças de uma linguagem (foco deste capítulo) Copyright 2004 Pearson Addison-Wesley. All rights reserved

4 Métodos formais de descrever sintaxe Gramáticas Livre de Contexto (GLC) Desenvolvidas por Noam Chomsky na década de 1950 Geradores de linguagem, objetivam descrever a sintaxe de linguagens naturais Definem uma classe de linguagens livre de contexto Copyright 2004 Pearson Addison-Wesley. All rights reserved. 3-7 Métodos formais de descrever sintaxe Backus-Naur Form (1959) Inventada por John Backus para descrever Algol 58 BNF é equivalente a gramáticas livre de contexto Uma metalinguagem é uma linguagem usada para descrever outra linguagem. Em BNF, abstrações são usadas para representar classes de estruturas sintáticas agem como variáveis sintáticas (também chamadas símbolos nõa terminais) Copyright 2004 Pearson Addison-Wesley. All rights reserved

5 Backus-Naur Form (1959) <while_stmt> while ( <logic_expr> ) <stmt> Estaéumaregra Descreve a estrutura do comando while Copyright 2004 Pearson Addison-Wesley. All rights reserved. 3-9 Métodos formais de descrever sintaxe Uma regra tem o seu lado esquerdo (left-hand side -LHS) um lado direito (right-hand side RHS), e consiste de símbolos terminais e não terminais Uma gramática é um conjunto de regras finito e não vazio Uma abstração (ou símbolo não terminals) pode ter mais de um RHS <stmt> <single_stmt> begin <stmt_list> end Copyright 2004 Pearson Addison-Wesley. All rights reserved

6 Métodos formais de descrever sintaxe Listas sintáticas são descritas usando recursão <ident_list> ident ident, <ident_list> Uma derivação é uma aplicação repetida de regras, começando com o símbolo de início e terminando com uma sentença (todos símbolos terminais) Copyright 2004 Pearson Addison-Wesley. All rights reserved Métodos formais de descrever sintaxe Exemplo de uma gramática: <program> <stmts> <stmts> <stmt> <stmt> ; <stmts> <stmt> <var> = <var> a b c d <term> + <term> <term> - <term> <term> <var> const Copyright 2004 Pearson Addison-Wesley. All rights reserved

7 Métodos formais de descrever sintaxe Exemlo de uma derivação: <program> => <stmts> => <stmt> => <var> = => a = => a = <term> + <term> => a = <var> + <term> => a = b + <term> => a = b + const Copyright 2004 Pearson Addison-Wesley. All rights reserved Derivação Toda string de símbolos em uma derivação é uma forma sentencial Uma sentença é uma forma sentencial que tem apenas símbolos terminais Uma derivação mais a esquerda (leftmost derivation) é uma onde o terminal mais a esquerda de cada forma sentencial é o que é expandido Uma derivação não pode ser mais a esquerda e mais a direita Copyright 2004 Pearson Addison-Wesley. All rights reserved

8 Árvore de Parse Uma representação hierárquica de uma derivação <program> <stmts> <stmt> <var> = a <term> + <var> b <term> const Copyright 2004 Pearson Addison-Wesley. All rights reserved Métodos formais de descrever sintaxe Umagramáticaéambíguassegeraumaforma sentencial que tem duas ou mais árvores de parse distintas Copyright 2004 Pearson Addison-Wesley. All rights reserved

9 Uma gramática de expressão ambígua <op> const <op> / - <op> <op> <op> <op> const - const / const const - const / const Copyright 2004 Pearson Addison-Wesley. All rights reserved Uma gramática de expressão não ambígua Se usarmos a árvore de parse para indicar a precedência dos operadores, não temos ambiguidade - <term> <term> <term> <term> / const const - <term> <term> <term> / const const const Copyright 2004 Pearson Addison-Wesley. All rights reserved

10 Métodos formais de descrever Sintaxe Derivação: => - <term> => <term> - <term> => const - <term> => const - <term> / const => const - const / const Copyright 2004 Pearson Addison-Wesley. All rights reserved Métodos formais de descrever Sintaxe A associatividade de um operador pode ser indicada pela gramática -> + const (ambígua) -> + const const (não ambígua) + const + const const Copyright 2004 Pearson Addison-Wesley. All rights reserved

11 Métodos formais de descrever Sintaxe Extended BNF EBNF (apenas abreviações ): Partes opcionais são colocadas entre colchetes ([ ]) <proc_call> -> ident [ ( <expr_list>)] Coloca partes alternativas de RHSs em parênteses e os separam com barras verticais <term> -> <term> (+ -) const Coloca repetições (0 ou mais) entre chaves ({ }) <ident> -> letter {letter digit} Copyright 2004 Pearson Addison-Wesley. All rights reserved BNF e EBNF BNF: + <term> - <term> <term> <term> <term> * <factor> <term> / <factor> <factor> EBNF: <term> {(+ -) <term>} <term> <factor> {(* /) <factor>} Copyright 2004 Pearson Addison-Wesley. All rights reserved

12 Gramáticas de Atributos (GAs) (Knuth, 1968) GLCs não podem descever o todo da sintaxe das linguagens de programação Adições à glcs para carregar informação semântica através da árvores de parse Valor primário das GAs: Especificação da semântica estática Projeto de compilador (verificação da semântica estática) Copyright 2004 Pearson Addison-Wesley. All rights reserved Gramáticas de Atributos Def: Uma gramática de atributo é uma gramática livre de contexto G = (S, N, T, P) com as seguintes adições: Para cada símbolo gramático x existe um conjunto A(x) de valores de atributos Cada regra tem um conjunto de funções que definem certos atributos dos não terminais na regra Cada regra tem um conjunto (possivelmente vazio) de predicados para verificar consistência de atributos Copyright 2004 Pearson Addison-Wesley. All rights reserved

13 Gramáticas de atributos Seja X 0 X 1... X n uma regra Funções da forma S(X 0 ) = f(a(x 1 ),..., A(X n )) definem atributos sintetizados Funções da forma I(X j ) = f(a(x 0 ),..., A(X n )), for i <= j <= n, definem atributos herdados Inicialmente, existem atributos intrínsicos nas folhas Copyright 2004 Pearson Addison-Wesley. All rights reserved Gramáticas de atributos Exemplo: expressões da forma id + id id's podem ser tanto int_type como real_type Os tipos dos dois id's devem ser os mesmos O tipo da expressão deve casar seu tipo esperado BNF: <var> + <var> <var> id Atributos: Tipo_real (actual_type) sintetizado para <var> e Tipo_esperado (expected_type) herdado para Copyright 2004 Pearson Addison-Wesley. All rights reserved

14 A Gramática de atributos Regra de sintaxe: <var>[1] + <var>[2] Regras Semânticas:.actual_type <var>[1].actual_type Predicado: <var>[1].actual_type == <var>[2].actual_type.expected_type ==.actual_type Regra sintática: <var> id Regra Semântica: <var>.actual_type lookup (<var>.string) Copyright 2004 Pearson Addison-Wesley. All rights reserved Gramáticas de atributos Como são computados os valores dos atributos? Se todos os atributos fossem herdados, a árvore poderia ser decorada de cima para baixo (topdown). Se todos os atributos fossem sintetizados, a árvore poderia ser decorada de baixo para cima (bottom-up). Em muitos casos, ambos os tipos de atributos são usados, e algum tippo de combinação de top-down e bottom-up que deve ser usado. Copyright 2004 Pearson Addison-Wesley. All rights reserved

15 Gramáticas de atributos.expected_type herdado do pai <var>[1].actual_type lookup (A) <var>[2].actual_type lookup (B) <var>[1].actual_type =? <var>[2].actual_type.actual_type <var>[1].actual_type.actual_type =?.expected_type Copyright 2004 Pearson Addison-Wesley. All rights reserved Semântica Não há nenhuma notação ou formalismo aceito em larga escala para descrever a semântica Semântica Denotacional Semântica Operacional Semântica Axiomática Copyright 2004 Pearson Addison-Wesley. All rights reserved

16 Usar slides e texto de semântica denotacional Copyright 2004 Pearson Addison-Wesley. All rights reserved Semântica Operational Descreve o significado de um programa pela execução de seus comandos em uma máquina, real ou simulada. A mudança no estado da máquina (memória, registradores etc.) definem o significado do comando Copyright 2004 Pearson Addison-Wesley. All rights reserved

17 Semântica Operacional Para usar semântica operacional para uma linguagem de alto nível, uma máquina virtual é necessária Um interpretador em hardware puro seria muito caro Um interpretador puramente em software também tem problemas: As características detalhadas de um computador em particular tornariam as ações difíceis de serem entendidas Este tipo de definição de semântica seria dependente de máquina Copyright 2004 Pearson Addison-Wesley. All rights reserved Semântica Operacional Uma alternativa mais adequada: uma simulação completa por computador O processo: Construa um tradutor (traduz o código fonte para o código de máqina do computador idealizado) Construa uma simulador para o computador idealizado Avaliação da semântica operacional: Boa se usada informalmente (manuais de linguagens etc.) Extremamente complexa se usada formalmente (ex., VDL) Copyright 2004 Pearson Addison-Wesley. All rights reserved

18 Semântica Semântica Axiomática Baseada em lógica formal (cálculo de predicados) Objetivo Original: verificação formal de prgramas Enfoque: Define axiomas ou regras de inferência para cada tipo de comando na linguagem (para permitir transformações de expressões em outas expressões) As expressões são chamadas asserções Copyright 2004 Pearson Addison-Wesley. All rights reserved Semântica Axiomática Uma asserção antes de um comando (uma pré-condição) define os relacionamentos e restrições entre variáveis que são verdadeiros naquele ponto da execução Uma asserção depois de um comando póscondição A pré-condição mais fraca é a pré-condição menos restritiva que irá garantir a a póscondição Copyright 2004 Pearson Addison-Wesley. All rights reserved

19 Semântica Axiomática Forma Pre-pos : {P} comando {Q} Um exemplo: a = b + 1 {a > 1} Uma pré-condição possível : {b > 10} Pré-condição mais fraca: {b > 0} Copyright 2004 Pearson Addison-Wesley. All rights reserved Semântica Axiomática Processo de prova de programa: a póscondição para todo programa é o resultado desejado. Volte pelo programa até o primeiro comando. Se a precondição no primeiro comando é o mesmo da especificação do programa, o programa está correto Copyright 2004 Pearson Addison-Wesley. All rights reserved

20 Semântica Axiomática Um axioma para comandos de atribuição (x = E): {Q x->e } x = E {Q} A regra de consequência: {P} S{Q}, P' => P, Q => Q' {P'}S{Q'} Copyright 2004 Pearson Addison-Wesley. All rights reserved Semântica Axiomática Uma regra de inferência para seqüências Para a sequencia S1;S2: {P1} S1 {P2} {P2} S2 {P3} A regra de inferência é: {P1}S1{P2},{P2}S2{P3} {P1}S1; S2{P3} Copyright 2004 Pearson Addison-Wesley. All rights reserved

21 Semântica Axiomática Uma regra de inferência para laços lógicos de pré-teste Para o construto do laço: {P} while B do S end {Q} a regra de inferência é: (I and B) S{I} {I} while B do S{I and (not B)} onde I é o invariante do laço (a hipótese indutiva) Copyright 2004 Pearson Addison-Wesley. All rights reserved Semântica Axiomática Características do invariante do laço I deve atender as seguintes condições: P => I (O invariante do laço deve ser verdadeiro inicialmente) {I} B {I} (a avaliação do Booleano não deve alterar a validade de I) {I and B} S {I} (I não é alerado pela execução do corpo do laço) (I and (not B)) => Q (se I é verdadeiro e B falso, Q é implicado) O laço termina (isto pode ser difícil de provar) Copyright 2004 Pearson Addison-Wesley. All rights reserved

22 Semântica Axiomática O invariante I do laço é uma versão enfraquecida da pós-condição do laço, e também uma pré-condição. I deve ser fraco o suficiente para ser satisfeito antes do começo do laço, mas quando combinado com a condição de saída, deve ser forte o suficiente para garantir a a verdade da pós-condição Copyright 2004 Pearson Addison-Wesley. All rights reserved Semântica Avaliação da semântica axiomática: Desenvolver axiomas ou regras de inferência para todos os comandos em uma linguagem é difícil É uma boa ferramenta para provas de corretude, e um framework excelente para raciocinar sobre programas, mas não é tão útil para usuários de linguagens nem para desenvolvedores de compiladores Copyright 2004 Pearson Addison-Wesley. All rights reserved

23 Semântica Semântica Denotacional Baseada em teoria de funções recursivas É o método de descrição semântica mas abstrato Desenvolvido originalmente por Scott e Strachey (1970) Copyright 2004 Pearson Addison-Wesley. All rights reserved Semântica Denotacional O processo de definir uma especificação denotacional para uma linguagem (não necessariamente fácil) : Defina um objeto matemático para cada entidade da linguagem Defina uma função que mapeie instâncias das entidades da linguagem em instâncias dos objetos matemáticos correspondentes O significado dos construtos da linguagem são definidos apenas pelos valores das variáveis do programa Copyright 2004 Pearson Addison-Wesley. All rights reserved

24 Semântica Diferenças entre semântica denotacional e operacional: na semântica operacional, as mudanças de estados são definidas por algoritmos codificados; na semântica denotacional, elas são definidas por funções matemáticas rigorosas Copyright 2004 Pearson Addison-Wesley. All rights reserved Semântica Denotacional O estado de um programa é o valor de todas as suas variáveis correntes s = {<i 1, v 1 >, <i 2, v 2 >,, <i n, v n >} Seja VARMAP uma função que quando dada um nome de variável e um estado, retorna o valor da variável VARMAP(i j, s) = v j Copyright 2004 Pearson Addison-Wesley. All rights reserved

25 Semântica Números decimais A descrição em semântica semântica a seguir mapeia números decimais (strings de símbolos ) em valores numéricos Copyright 2004 Pearson Addison-Wesley. All rights reserved Semântica <dec_num> <dec_num> ( ) M dec ('0') = 0, M dec ('1') = 1,, M dec ('9') = 9 M dec (<dec_num> '0') = 10 * M dec (<dec_num>) M dec (<dec_num> '1 ) = 10 * M dec (<dec_num>) + 1 M dec (<dec_num> '9') = 10 * M dec (<dec_num>) + 9 Copyright 2004 Pearson Addison-Wesley. All rights reserved

26 Semântica Expressões Mapeia expressões sobre Z {error} Assumimos que expressões são números decimais, variáveis, ou expressões binárias com um operador aritmético e dois operandos (cada um pode ser uma expressão) Copyright 2004 Pearson Addison-Wesley. All rights reserved Semântica M e (, s) Δ= case of <dec_num> => M dec (<dec_num>, s) <var> => if VARMAP(<var>, s) == undef then error else VARMAP(<var>, s) <binary_expr> => if (M e (<binary_expr>.<left_expr>, s) == undef OR M e (<binary_expr>.<right_expr>, s) = undef) then error else if (<binary_expr>.<operator> == + then M e (<binary_expr>.<left_expr>, s) + M e (<binary_expr>.<right_expr>, s) else M e (<binary_expr>.<left_expr>, s) * M e (<binary_expr>.<right_expr>, s)... Copyright 2004 Pearson Addison-Wesley. All rights reserved

27 Semântica Comandos de atribuição Mapeia conjuntos de estados para conjuntos de estados Ma(x := E, s) Δ= if Me(E, s) == error then error else s = {<i 1,v 1 >,<i 2,v 2 >,...,<i n,v n >}, where for j = 1, 2,..., n, v j = VARMAP(i j, s) if i j <> x = Me(E, s) if i j == x Copyright 2004 Pearson Addison-Wesley. All rights reserved Semântica Laços de pré-teste Mapeia conjuntos de estados para conjuntos de estados M l (while B do L, s) Δ= if M b (B, s) == undef then error else if M b (B, s) == false then s else if M sl (L, s) == error then error else M l (while B do L, M sl (L, s)) Copyright 2004 Pearson Addison-Wesley. All rights reserved

28 Semântica O significado do laço é o valor das variáveis de programa depois que os comandos no laço foram executados o número prescrito de vezes, assumindo que não ocorreram erros Essencialmente, o laço foi convertido de iteração para recursão, onde o controle recursivo é matematicamente definido por outras funções recursivas de mapeamento de estado Recursão, quando comparada com iteração é mais facilmente descrita com rigor matemático Copyright 2004 Pearson Addison-Wesley. All rights reserved Semântica Avaliação da semântica denotacional : Pode ser usada para provar a corretude de programas Proporciona uma forma rigorosa de pensar sobre programas Pode ser uma ajuda para o projeto de linguagens Foi usada em sistemas de geração de compiladores Copyright 2004 Pearson Addison-Wesley. All rights reserved

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: silveira@inf.ufsc.br URL: www.inf.ufsc.br/~silveira Conceitos Léxica estudo dos símbolos que compõem uma linguagem Sintaxe

Leia mais

Sintaxe e Semântica. George Darmiton da Cunha Cavalcanti.

Sintaxe e Semântica. George Darmiton da Cunha Cavalcanti. Sintaxe e Semântica George Darmiton da Cunha Cavalcanti (gdcc@cin.ufpe.br) Tópicos Introdução O problema de descrever a sintaxe Métodos formais para descrever a sintaxe Gramáticas de atributos Descrevendo

Leia mais

Sintaxe e Semântica. George Darmiton da Cunha Cavalcanti.

Sintaxe e Semântica. George Darmiton da Cunha Cavalcanti. Sintaxe e Semântica George Darmiton da Cunha Cavalcanti (gdcc@cin.ufpe.br) Tópicos Introdução O problema de descrever a sintaxe Métodos formais para descrever a sintaxe Gramáticas de atributos Descrevendo

Leia mais

INE5318 Construção de Compiladores. Ricardo Azambuja Silveira INE-CTC-UFSC URL:

INE5318 Construção de Compiladores. Ricardo Azambuja Silveira INE-CTC-UFSC   URL: INE5318 Construção de Compiladores Ricardo Azambuja Silveira INE-CTC-UFSC E-Mail: silveira@inf.ufsc.br URL: www.inf.ufsc.br/~silveira Conceitos de Linguagens de Programação Prof. Ricardo A. Silveira Conceitos

Leia mais

Paradigmas de Linguagens de Programação. Descrevendo a Sintaxe e a Semântica

Paradigmas de Linguagens de Programação. Descrevendo a Sintaxe e a Semântica Descrevendo a Sintaxe e a Semântica Cristiano Lehrer Introdução Descrição, compreensível, de uma linguagem de programação é difícil e essencial. Capacidade de determinar como as expressões, instruções

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

Linguagens Formais e Autômatos

Linguagens Formais e Autômatos Linguagens Formais e Autômatos Gramáticas Livre do Contexto (GLC) Cristiano Lehrer, M.Sc. Linguagens Livres do Contexto (1/2) Seu estudo é de fundamental importância na informática: Compreende um universo

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

Conceitos de Linguagens de Programação

Conceitos de Linguagens de Programação Conceitos de Linguagens de Programação Aula 04 Sintaxe e Semântica Edirlei Soares de Lima Sintaxe e Semântica A descrição de uma linguagem de programação envolve dois aspectos principais:

Leia mais

SEMÂNTICA 02/09/2013. Conceitos de LPs - Semântica

SEMÂNTICA 02/09/2013. Conceitos de LPs - Semântica UNIVERSIDADE ESTADUAL DE SANTA CRUZ CURSO: CIÊNCIA DA COMPUTAÇÃO DISCIPLINA: CONCEITOS DE LINGUAGENS DE PROGRAMAÇÃO DOCENTE: ROGÉRIO VARGAS DISCENTE: MARIANNA NOVAES Semântica SEMÂNTICA Semântica é a área

Leia mais

Conceitos de Linguagens de Programação

Conceitos de Linguagens de Programação Faculdade de Ciências e Tecnologia Departamento de Matemática e Computação Bacharelado em Ciência da Computação Conceitos de Linguagens de Programação Aula 02 (rogerio@fct.unesp.br) Linguagens de Programação

Leia mais

Semântica Operacional

Semântica Operacional Semântica Conceitos Semântica é o estudo do significado. Incide sobre a relação entre significantes, tais como palavras, frases, sinais e símbolos, e o que eles representam, a sua denotação. Semântica

Leia mais

Python e sua sintaxe LNCC UFRJ

Python e sua sintaxe LNCC UFRJ Python e sua sintaxe LNCC UFRJ Linguagens naturais e formais Linguagens naturais Linguagem formal Um conjunto finito e não-vazio cujos elementos são símbolos Qualquer cadeia finita de símbolos justapostos

Leia mais

15/03/2018. Professor Ariel da Silva Dias Aspectos sintáticos e semânticos básicos de linguagens de programação

15/03/2018. Professor Ariel da Silva Dias Aspectos sintáticos e semânticos básicos de linguagens de programação Professor Ariel da Silva Dias Aspectos sintáticos e semânticos básicos de linguagens de programação Conjunto de regras que definem a forma da linguagem; Como as sentenças podem ser formadas como sequências

Leia mais

Semântica Denotacional

Semântica Denotacional Semântica Denotacional Uma introdução ISBN 0-321-19362-8 Semântica denotacional é um método formal para definir a semântica de linguagens de programação. Interessa a: projetista de linguagens, quem escreve

Leia mais

Linguagens de Programação Aula 4

Linguagens de Programação Aula 4 Aula 4 Celso Olivete Júnior olivete@fct.unesp.br Na aula passada... Autômatos finitos AF:exemplos... Cadeia de caracteres a,b,c 2/82 Na aula passada... Autômatos finitos AF:exemplos... Números inteiros(com

Leia mais

Paradigmas de Programação

Paradigmas de Programação Paradigmas de Programação Sintaxe e semântica Aula 4 Prof.: Edilberto M. Silva http://www.edilms.eti.br Prof. Edilberto Silva / edilms.eti.br Sintaxe A sintaxe de uma linguagem de programação é a forma

Leia mais

Um Compilador Simples. Definição de uma Linguagem. Estrutura de Vanguarda. Gramática Livre de Contexto. Exemplo 1

Um Compilador Simples. Definição de uma Linguagem. Estrutura de Vanguarda. Gramática Livre de Contexto. Exemplo 1 Definição de uma Linguagem Linguagem= sintaxe + semântica Especificação da sintaxe: gramática livre de contexto, BNF (Backus-Naur Form) Especificação Semântica: informal (textual), operacional, denotacional,

Leia mais

Análise Sintática. Fabiano Baldo

Análise Sintática. Fabiano Baldo Compiladores Análise Sintática Fabiano Baldo Gramáticas Livre de Contexto (GLC) É utilizada na especificação formal lda sintaxe de uma linguagem de programação. É um conjunto de produções ou regras gramaticais

Leia mais

Plano da aula. Compiladores. Os erros típicos são sintáticos. Análise Sintática. Usando Gramáticas. Os erros típicos são sintáticos

Plano da aula. Compiladores. Os erros típicos são sintáticos. Análise Sintática. Usando Gramáticas. Os erros típicos são sintáticos Plano da aula Compiladores Análise sintática (1) Revisão: Gramáticas Livres de Contexto 1 Introdução: porque a análise sintática? Noções sobre Gramáticas Livres de Contexto: Definição Propriedades Derivações

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

Análise Sintática. Eduardo Ferreira dos Santos. Outubro, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 18

Análise Sintática. Eduardo Ferreira dos Santos. Outubro, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 18 Análise Sintática Eduardo Ferreira dos Santos Ciência da Computação Centro Universitário de Brasília UniCEUB Outubro, 2016 1 / 18 Sumário 1 Introdução 2 Derivações 2 / 18 1 Introdução 2 Derivações 3 /

Leia mais

Conceitos de Linguagens de Programação

Conceitos de Linguagens de Programação Conceitos de Linguagens de Programação Aula 06 Análise Sintática (Implementação) Edirlei Soares de Lima Análise Sintática A maioria dos compiladores separam a tarefa da análise sintática

Leia mais

V.2 Especificação Sintática de Linguagens de Programação

V.2 Especificação Sintática de Linguagens de Programação V.2 Especificação Sintática de Linguagens de Programação Deve ser baseada: No planejamento da Linguagem / Compilador Objetivos, Filosofia, Potencialidades,... Nos critérios de projeto/avaliação Legibilidade,

Leia mais

Gramática. Prof. Yandre Maldonado e Gomes da Costa. Prof. Yandre Maldonado - 1

Gramática. Prof. Yandre Maldonado e Gomes da Costa. Prof. Yandre Maldonado - 1 Prof. Yandre Maldonado - 1 Prof. Yandre Maldonado e Gomes da Costa yandre@din.uem.br Prof. Yandre Maldonado - 2 Mecanismo gerador que permite definir formalmente uma linguagem; Através de uma gramática

Leia mais

Gramática. Gramática. Gramática

Gramática. Gramática. Gramática Prof. Yandre Maldonado - 1 Prof. Yandre Maldonado e Gomes da Costa yandre@din.uem.br Prof. Yandre Maldonado - 2 Mecanismo gerador que permite definir formalmente uma linguagem; Através de uma gramática

Leia mais

Linguagens de Programação

Linguagens de Programação 45 Linguagens de Programação O paradigma de programação imperativo está diretamente atrelado à arquitetura básica dos computadores sobre os quais os programas eram executados. Boa parte dos computadores

Leia mais

Linguagens Livres de Contexto

Linguagens Livres de Contexto Linguagens Livres de Contexto 1 Roteiro Gramáticas livres de contexto Representação de linguagens livres de contexto Formas normais para gramáticas livres de contexto Gramáticas ambíguas Autômatos de Pilha

Leia mais

Construção de Compiladores Aula 16 - Análise Sintática

Construção de Compiladores Aula 16 - Análise Sintática Construção de Compiladores Aula 16 - Análise Sintática Bruno Müller Junior Departamento de Informática UFPR 25 de Setembro de 2014 1 Introdução Hierarquia de Chomsky Reconhecedores Linguagens Livres de

Leia mais

Compiladores Analisador Sintático. Prof. Antonio Felicio Netto Ciência da Computação

Compiladores Analisador Sintático. Prof. Antonio Felicio Netto Ciência da Computação Compiladores Analisador Sintático Prof. Antonio Felicio Netto antonio.felicio@anhanguera.com Ciência da Computação 1 Análise Sintática - A Análise Sintática constitui a segunda fase de um tradutor de uma

Leia mais

Linguagens de Programação

Linguagens de Programação Linguagens de Programação de Linguagens de Programação Bruno Lopes Bruno Lopes Linguagens de Programação 1 / 11 Propriedades desejáveis Legibilidade: A leitura do programa é facilmente compreendida? Redigibilidade:

Leia mais

Compiladores. Bruno Lopes. Bruno Lopes Compiladores 1 / 30. Instituto de C

Compiladores. Bruno Lopes. Bruno Lopes Compiladores 1 / 30. Instituto de C ompiladores Análise Sintática Bruno Lopes Bruno Lopes ompiladores 1 / 30 Front-end Lida com a linguagem de entrada Teste de pertinência: código fonte linguagem fonte? Programa está bem formado? Sintaticamente?

Leia mais

FERRAMENTA DE AUXÍLIO AO PROCESSO DE DESENVOLVIMENTO DE SOFTWARE INTEGRANDO TECNOLOGIAS OTIMIZADORAS

FERRAMENTA DE AUXÍLIO AO PROCESSO DE DESENVOLVIMENTO DE SOFTWARE INTEGRANDO TECNOLOGIAS OTIMIZADORAS FERRAMENTA DE AUXÍLIO AO PROCESSO DE DESENVOLVIMENTO DE SOFTWARE INTEGRANDO TECNOLOGIAS OTIMIZADORAS Acadêmico: Roger Anderson Schmidt Orientador : Marcel Hugo Supervisor : Ricardo de Freitas Becker Empresa

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

Análise Sintática I. Eduardo Ferreira dos Santos. Abril, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 42

Análise Sintática I. Eduardo Ferreira dos Santos. Abril, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 42 Análise Sintática I Eduardo Ferreira dos Santos Ciência da Computação Centro Universitário de Brasília UniCEUB Abril, 2017 1 / 42 Sumário 1 Introdução 2 Derivações 3 Ambiguidade 4 Análise sintática descendente

Leia mais

Disciplina: LINGUAGENS FORMAIS, AUTÔMATOS E COMPUTABILIDADE Prof. Jefferson Morais

Disciplina: LINGUAGENS FORMAIS, AUTÔMATOS E COMPUTABILIDADE Prof. Jefferson Morais UNIVERSIDADE FEDERAL DO PARÁ INSTITUTO DE CIÊNCIAS EXATAS E NATURAIS FACULDADE DE COMPUTAÇÃO CURSO DE BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO Disciplina: LINGUAGENS FORMAIS, AUTÔMATOS E COMPUTABILIDADE Prof.

Leia mais

QUESTÃO 1 (0,6 ponto) Classifique os processadores de linguagens com relação aos tipos das linguagens-fonte e objeto.

QUESTÃO 1 (0,6 ponto) Classifique os processadores de linguagens com relação aos tipos das linguagens-fonte e objeto. COMPILADORES Prof. Marcus Ramos Prova 1 07 de março de 2012 QUESTÃO 1 (0,6 ponto) Classifique os processadores de linguagens com relação aos tipos das linguagens-fonte e objeto. Tanto a linguagem-fonte

Leia mais

Programação Introdução

Programação Introdução PROGRAMAÇÃO Programação Introdução Prof. Dr. Adriano Mauro Cansian 1 Introdução Para armazenar um algoritmo na memória de um computador e para que ele possa, em seguida, comandar as operações a serem executadas,

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 max.santana@univasf.edu.br Colegiado de Engenharia de Computação Linguagens de Programação A primeira linguagem de programação foi criada por Ada Lovelace. Amiga

Leia mais

Compiladores. Análise lexical. Plano da aula. Motivação para análise lexical. Vocabulário básico. Estrutura de um compilador

Compiladores. Análise lexical. Plano da aula. Motivação para análise lexical. Vocabulário básico. Estrutura de um compilador Estrutura de um compilador programa fonte Compiladores Análise lexical () Expressões Regulares analisador léxico analisador sintático analisador semântico análise gerador de código intermediário otimizador

Leia mais

Compiladores - Gramáticas

Compiladores - Gramáticas Compiladores - Gramáticas Fabio Mascarenhas - 2013.1 http://www.dcc.ufrj.br/~fabiom/comp Análise Sintática A análise sintática agrupa os tokens em uma árvore sintática de acordo com a estrutura do programa

Leia mais

Compiladores - Gramáticas

Compiladores - Gramáticas Compiladores - Gramáticas Fabio Mascarenhas 2018.1 http://www.dcc.ufrj.br/~fabiom/comp Análise Sintática A análise sintática agrupa os tokens em uma árvore sintática de acordo com a estrutura do programa

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 delamaro@icmc.usp.br Como construir um

Leia mais

3 Cálculo de Hoare. 3.1 Semântica Axiomática de Linguagens de Programação

3 Cálculo de Hoare. 3.1 Semântica Axiomática de Linguagens de Programação Cálculo de Hoare 31 3 Cálculo de Hoare 3.1 Semântica Axiomática de Linguagens de Programação As técnicas para as semânticas operacional e denotacional de linguagens de programação são fundamentadas na

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

DESENVOLVIMENTO DO COMPILADOR PARA A LINGUAGEM SIMPLE

DESENVOLVIMENTO DO COMPILADOR PARA A LINGUAGEM SIMPLE DESENVOLVIMENTO DO COMPILADOR PARA A LINGUAGEM SIMPLE Jeferson MENEGAZZO 1, Fernando SCHULZ 2, Munyque MITTELMANN 3, Fábio ALEXANDRINI 4. 1 Aluno 5ª fase do Curso de Ciência da Computação do Instituto

Leia mais

Linguagens e Programação Gramáticas. Paulo Proença

Linguagens e Programação Gramáticas. Paulo Proença Linguagens e Programação Gramáticas Gramáticas Ferramenta para a descrição e análise de linguagens; Baseada num conjunto de regras que especificam o modo de construção das frases válidas na linguagem;

Leia mais

Concurso Público para provimento de cargo efetivo de Docentes. Edital 20/2015 CIÊNCIA DA COMPUTAÇÃO II Campus Rio Pomba

Concurso Público para provimento de cargo efetivo de Docentes. Edital 20/2015 CIÊNCIA DA COMPUTAÇÃO II Campus Rio Pomba Questão 01 No processo de construção de compiladores, é essencial compreender e manipular as expressões regulares e suas equivalências. Dentro desse contexto, seja o alfabeto = {a, b, c, d, e} e a seguinte

Leia mais

Nelma Moreira. Departamento de Ciência de Computadores da FCUP. Aula 12

Nelma Moreira. Departamento de Ciência de Computadores da FCUP. Aula 12 Fundamentos de Linguagens de Programação Nelma Moreira Departamento de Ciência de Computadores da FCUP Fundamentos de Linguagens de Programação Aula 12 Nelma Moreira (DCC-FC) Fundamentos de Linguagens

Leia mais

Análise Sintática Introdução

Análise Sintática Introdução Análise Sintática Introdução Renato Ferreira Linguagens e Automatas Linguagens formais são importantes em Computação Especialmente em linguagens de programação Linguagens regulares A linguagem formal mais

Leia mais

Matemática Discreta para Ciência da Computação

Matemática Discreta para Ciência da Computação Matemática Discreta para Ciência da Computação P. Blauth Menezes blauth@inf.ufrgs.br Departamento de Informática Teórica Instituto de Informática / UFRGS Matemática Discreta para Ciência da Computação

Leia mais

Capítulo 8. Estruturas de Controle no Nível de Sentença

Capítulo 8. Estruturas de Controle no Nível de Sentença Capítulo 8 Estruturas de Controle no Nível de Sentença Níveis de fluxo de controle Computações são realizadas por meio da avaliação de expressões e da atribuição dos valores a variáveis Para tornar a computação

Leia mais

FACULDADE LEÃO SAMPAIO

FACULDADE LEÃO SAMPAIO FACULDADE LEÃO SAMPAIO Paradigmas de Programação Curso de Análise e Desenvolvimento de Sistemas Turma: 309-5 Semestre - 2014.2 Paradigmas de Programação Prof. MSc. Isaac Bezerra de Oliveira. 1 PARADIGMAS

Leia mais

Linguagens de Programação. Marco A L Barbosa

Linguagens de Programação. Marco A L Barbosa Expressões e sentença de atribuição Linguagens de Programação Marco A L Barbosa cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual 4.0 Internacional. http://github.com/malbarbo/na-lp-copl

Leia mais

Expressões e sentença de atribuição

Expressões e sentença de atribuição Expressões e sentença de atribuição Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual

Leia mais

COMPILADORES. Análise sintática. Prof. Geovane Griesang Universidade de Santa Cruz do Sul UNISC Departamento de informática

COMPILADORES. Análise sintática. Prof. Geovane Griesang Universidade de Santa Cruz do Sul UNISC Departamento de informática Universidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES Análise sintática Parte 02 Prof. geovanegriesang@unisc.br Data Conteúdo 23/09/2013 3. Análise Sintática: 3.1 analisadores

Leia mais

CAP. VI ANÁLISE SEMÂNTICA

CAP. VI ANÁLISE SEMÂNTICA CAP. VI ANÁLISE SEMÂNTICA VI.1 Introdução Semântica SIGNIFICADO, SENTIDO LÓGICO, COERÊNCIA,... Diferença entre SINTAXE e SEMÂNTICA Sintaxe : descreve as estruturas de uma linguagem; Semântica : descreve

Leia mais

Compiladores. Análise Sintática

Compiladores. Análise Sintática Compiladores Análise Sintática Análise Sintática Vejamos um exemplo, seja a seguinte instrução de atribuição: posicao = inicial + incremento * 60 Na análise sintática tenta-se construir uma frase correta

Leia mais

Sintaxe do Pascal Simplificado Estendido de 12 novas construções em Notação EBNF (BNF estendida)

Sintaxe do Pascal Simplificado Estendido de 12 novas construções em Notação EBNF (BNF estendida) Sintaxe do Pascal Simplificado Estendido de 12 novas construções em Notação EBNF (BNF estendida) Não-terminais são nomes mnemônicos colocados entre parênteses angulares. Vocabulário terminal formado por

Leia mais

Notação EBNF BNF estendida Notação usada com o YACC (gerador de parsers Bottom-up)

Notação EBNF BNF estendida Notação usada com o YACC (gerador de parsers Bottom-up) Notação EBNF BNF estendida Notação usada com o YACC (gerador de parsers Bottom-up) 1 Notações BNF: já vista EBNF: existem pelo menos 3 estilos principais de BNF estendidas Derivada de expressões regulares

Leia mais

Revisão: linguagens de programação

Revisão: linguagens de programação Revisão: linguagens de programação Definição, histórico, paradigmas e semântica Prof. Thiago A. S. Pardo taspardo@icmc.usp.br Definição Uma linguagem de programação é uma linguagem destinada a ser usada

Leia mais

Revisão. Fases da dacompilação

Revisão. Fases da dacompilação 1 Revisão Prof. Julio Arakaki Julio Arakaki 1 Fases da dacompilação Código fonte Análise Léxica tokens e lexemas Análise Sintática Árvore Sintática Abstrata (ASA) Análise Semântica ASA decorada Geração

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

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

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

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 - Especificando Sintaxe

Compiladores - Especificando Sintaxe Compiladores - Especificando Sintaxe Fabio Mascarenhas - 2013.1 http://www.dcc.ufrj.br/~fabiom/comp Análise Sintática A análise sintática agrupa os tokens em uma árvore sintática de acordo com a estrutura

Leia mais

LFA Aula 09. Gramáticas e Linguagens Livres de Contexto 18/01/2016. Linguagens Formais e Autômatos. Celso Olivete Júnior.

LFA Aula 09. Gramáticas e Linguagens Livres de Contexto 18/01/2016. Linguagens Formais e Autômatos. Celso Olivete Júnior. LFA Aula 09 Gramáticas e Linguagens Livres de Contexto (Hopcroft, 2002) 18/01/2016 Celso Olivete Júnior olivete@fct.unesp.br www.fct.unesp.br/docentes/dmec/olivete/lfa 1 Classes Gramaticais Linguagens

Leia mais

ALGORITMOS E TÉCNICAS DE PROGRAMAÇÃO

ALGORITMOS E TÉCNICAS DE PROGRAMAÇÃO INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE ALGORITMOS E TÉCNICAS DE PROGRAMAÇÃO Docente: Éberton da Silva Marinho e-mail: ebertonsm@gmail.com eberton.marinho@ifrn.edu.br

Leia mais

Introdução Uma linguagem de programação apoiada em um paradigma imperativo apresenta algum grau de dificuldade nos aspectos relativos ao contexto;

Introdução Uma linguagem de programação apoiada em um paradigma imperativo apresenta algum grau de dificuldade nos aspectos relativos ao contexto; Introdução Uma linguagem de programação apoiada em um paradigma imperativo apresenta algum grau de dificuldade nos aspectos relativos ao contexto; Nas linguagens imperativas o processamento é baseado no

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

IV Gramáticas Livres de Contexto

IV Gramáticas Livres de Contexto IV Gramáticas Livres de Contexto Introdução Definições de GLC 1 G = (Vn, Vt, P, S) onde P = {A α A Vn α (Vn Vt) + } 2 GLC ε - LIVRE : S ε pode pertencer a P, desde que: S seja o símbolo inicial de G S

Leia mais

Análise Sintática. Compiladores Cristina C. Vieira. Compiladores 2012/2013

Análise Sintática. Compiladores Cristina C. Vieira. Compiladores 2012/2013 Análise Sintática Compiladores Cristina C. Vieira 1 Árvore Sintática Nós internos: símbolos não-terminais Folhas: símbolos terminais Arcos: de símbolos não-terminais do LHS da produção para nós do RHS

Leia mais

Ederson Luiz da Silva Ciência da Computação. Algoritmos e Programação

Ederson Luiz da Silva Ciência da Computação. Algoritmos e Programação Ederson Luiz da Silva Ciência da Computação Algoritmos e Programação Linguagem de programação Linguagem de Programação Linguagem de máquina http://www.assemblyprogressivo.net/p/curso.html Linguagem de

Leia mais

Introdução Definição Conceitos Básicos de Linguagem

Introdução Definição Conceitos Básicos de Linguagem Introdução Definição Conceitos Básicos de Linguagem Introdução Desenvolvida originalmente em 1950 Objetivo: Desenvolver teorias relacionadas com a Linguagem natural Logo verificou-se a importância para

Leia mais

Como podemos provar que este programa termina com x = 100. Correr o programa seguindo a sua semântica operacional é uma opção.

Como podemos provar que este programa termina com x = 100. Correr o programa seguindo a sua semântica operacional é uma opção. Verificação Automática de Programas Consideremos o seguinte programa para calcular 100 m=1 m: x:=0; y:=1; (while y!=101 do x:=x+y;y:=y+1) Como podemos provar que este programa termina com x = 100 m=1 m.

Leia mais

Linguagens de Programação Sintaxe e Semân5ca

Linguagens de Programação Sintaxe e Semân5ca Linguagens de Programação Sintaxe e Semân5ca Andrei Rimsa Álvares Sumário Introdução Sintaxe Gramá9cas Gramá9cas BNF Construção de Gramá9cas Estrutura Léxica Semân9ca Linguagem Tiny Gramá9cas e Prolog

Leia mais

Semântica Axiomática

Semântica Axiomática Semântica Axiomática O estilo axiomático presta-se particularmente à prova e raciocínio sobre propriedades dos programas, e à sua verificação, i.e. à prova de correcção dos programas face às suas especificações.

Leia mais

V Teoria de Parsing. Termos Básicos: Parser Analisador Sintático Parsing Analise Sintática Parse Representação da analise efetuada

V Teoria de Parsing. Termos Básicos: Parser Analisador Sintático Parsing Analise Sintática Parse Representação da analise efetuada V Teoria de Parsing Termos Básicos: Parser Analisador Sintático Parsing Analise Sintática Parse Representação da analise efetuada Ascendentes: S + x (* Seq. Invertida Reducao *) dir Exemplo: Descendentes:

Leia mais

Compiladores - Análise Léxica

Compiladores - Análise Léxica Compiladores - Análise Léxica Fabio Mascarenhas 2017.2 http://www.dcc.ufrj.br/~fabiom/comp Introdução Primeiro passo do front-end: reconhecer tokens Tokens são as palavras do programa O analisador léxico

Leia mais

Notação EBNF BNF estendida Notação usada com o YACC (gerador de parsers Bottom-up)

Notação EBNF BNF estendida Notação usada com o YACC (gerador de parsers Bottom-up) Notação EBNF BNF estendida Notação usada com o YACC (gerador de parsers Bottom-up) 1 Notações BNF: já vista EBNF: existem pelo menos 3 estilos principais de BNF estendidas Derivada de expressões regulares

Leia mais

Compiladores Análise de Tipos

Compiladores Análise de Tipos Compiladores Análise de Tipos Fabio Mascarenhas 2018.1 http://www.dcc.ufrj.br/~fabiom/comp Tipos Um tipo é: Um conjunto de valores Um conjunto de operações sobre esses valores Os tipos de uma linguagem

Leia mais

Introdução. Compiladores Análise Semântica. Introdução. Introdução. Introdução. Introdução 11/3/2008

Introdução. Compiladores Análise Semântica. Introdução. Introdução. Introdução. Introdução 11/3/2008 Compiladores Análise Semântica Fabiano Baldo Análise Semântica é por vezes referenciada como análise sensível ao contexto porque lida com algumas semânticas simples tais como o uso de uma variável somente

Leia mais

Compiladores 02 Analise léxica

Compiladores 02 Analise léxica Compiladores 02 Analise léxica Sumário Análise Léxica Definição: Lexema, tokens Tabela símbolos Expressões regulares, automatos Relembrando O compilador é dividido em duas etapas Análise Síntese Análise

Leia mais

LINGUAGEM LIVRE DE CONTEXTO GRAMÁTICA LIVRE DE CONTEXTO

LINGUAGEM LIVRE DE CONTEXTO GRAMÁTICA LIVRE DE CONTEXTO LINGUAGEM LIVRE DE CONTEXTO As Linguagens Livres de Contexto é um reconhecedor de linguagens, capaz de aceitar palavras corretas (cadeia, sentenças) da linguagem. Por exemplo, os autômatos. Um gerador

Leia mais

Compiladores I Prof. Ricardo Santos (cap 3 Análise Léxica: Introdução, Revisão LFA)

Compiladores I Prof. Ricardo Santos (cap 3 Análise Léxica: Introdução, Revisão LFA) Compiladores I Prof. Ricardo Santos (cap 3 Análise Léxica: Introdução, Revisão LFA) Expressões e Definições Regulares Revisão Expressões regulares descrevem todas as linguagens que podem ser construídas

Leia mais

Construção de Compiladores

Construção de Compiladores Construção de Compiladores Parte 1 Introdução Linguagens e Gramáticas F.A. Vanini IC Unicamp Klais Soluções Motivação Porque compiladores? São ferramentas fundamentais no processo de desenvolvimento 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 geovanegriesang@unisc.br Processadores de linguagem Linguagens de programação são notações para se descrever

Leia mais

4. Constantes. Constantes pré-definidas

4. Constantes. Constantes pré-definidas 4. Constantes Constantes pré-definidas O PHP possui algumas constantes pré-definidas, indicando a versão do PHP, o Sistema Operacional do servidor, o arquivo em execução, e diversas outras informações.

Leia mais

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

Capítulo 7. Expressões e Sentenças de Atribuição Capítulo 7 Expressões e Sentenças de Atribuição Introdução Expressões são os meios fundamentais de especificar computações em uma linguagem de programação Para entender a avaliação de expressões, é necessário

Leia mais

V Análise Sintática. V.1.1 Gramáticas Livres de Contexto Definições de GLC

V Análise Sintática. V.1.1 Gramáticas Livres de Contexto Definições de GLC V Análise Sintática V.1 Fundamentos Teóricos V.1.1 G.L.C V.1.2 Teoria de Parsing V.2 Especificação Sintática de Ling. de Prog. V.3 - Implementação de PARSER s V.4 - Especificação Sintática da Linguagem

Leia mais

Linguagens Formais e Autômatos

Linguagens Formais e Autômatos Linguagens Formais e Autômatos Prof. Yandre Maldonado - 1 Prof. Yandre Maldonado e Gomes da Costa Introdução Problema: definir um conjunto de cadeias de símbolos; Prof. Yandre Maldonado - 2 Exemplo: conjunto

Leia mais

Linguagens Formais e Autômatos

Linguagens Formais e Autômatos Linguagens Formais e Autômatos Prof. Yandre Maldonado - 1 Prof. Yandre Maldonado e Gomes da Costa Problema: definir um conjunto de cadeias de símbolos; Prof. Yandre Maldonado - 2 Exemplo: conjunto M dos

Leia mais

Compiladores Aula 1. Celso Olivete Júnior.

Compiladores Aula 1. Celso Olivete Júnior. Aula 1 Celso Olivete Júnior olivete@fct.unesp.br Tópicos da disciplina Introdução à compilação Analisador léxico Analisador sintático descendente Analisador sintático ascendente Análise semântica Geração

Leia mais

MAB Análise Sintática. Wednesday, April 4, 12

MAB Análise Sintática.  Wednesday, April 4, 12 MAB 471 2012.2 Análise Sintática http://www.dcc.ufrj.br/~fabiom/comp O Front End Código fonte Scanner tokens Parser IR Erros Parser Verifica a corretude gramatical da sequência de palavras e categorias

Leia mais

MAB Análise Sintática. Wednesday, August 31, 11

MAB Análise Sintática.  Wednesday, August 31, 11 MAB 471 2011.2 Análise Sintática http://www.dcc.ufrj.br/~fabiom/comp O Front End Código fonte Scanner tokens Parser IR Erros Parser Verifica a corretude gramatical da sequência de palavras e categorias

Leia mais