A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Sintaxe e Semântica Prof.: Gláucya Carreiro Boechat Universidade Federal Rural de Pernambuco Departamento de Estatística e Informática.

Apresentações semelhantes


Apresentação em tema: "Sintaxe e Semântica Prof.: Gláucya Carreiro Boechat Universidade Federal Rural de Pernambuco Departamento de Estatística e Informática."— Transcrição da apresentação:

1 Sintaxe e Semântica Prof.: Gláucya Carreiro Boechat Universidade Federal Rural de Pernambuco Departamento de Estatística e Informática

2 Paradigmas de Programação - prof Gláucya Carreiro Boechat 2 Sintaxe e Semântica Provêm a definição da linguagem Sintaxe  A forma ou estrutura das expressões, das instruções e das unidades de programas Estrutura formada de acordo com Regras Gramaticais da Linguagem. (Estruturas Sintáticas) Exemplo (condição diferente)  Pascal ( <> ) ; C = ( != ) ; Ada ( /= ) Semântica  O significado das expressões, das instruções e das unidades de programas Identificação das seqüências de símbolos validos que constituem estruturas sintáticas

3 Paradigmas de Programação - prof Gláucya Carreiro Boechat 3 Sintaxe e Semântica Exemplo: comando if na linguagem C  Sintaxe if ( )  Semântica Se o valor da expressão for verdadeiro, a instrução será executada

4 Paradigmas de Programação - prof Gláucya Carreiro Boechat 4 Descrevendo a sintaxe: terminologia Uma linguagem é uma conjunto de sentenças Uma sentença é uma cadeia de tokens Um lexema é a unidade sintática de mais baixo nível de uma linguagem  Exemplos: *, sum, begin, if Um token é uma categoria dos lexemas  Seqüência de caracteres sobre um alfabeto  Exemplo: identificador, op_mult

5 Paradigmas de Programação - prof Gláucya Carreiro Boechat 5 Descrevendo a sintaxe: terminologia Exemplo (C)  Resultado = 45 + Cont * 5; LexemaToken resultadoidentificador =sinal_igual 45int_literal +op_soma ContIdentificador *op_mult 5int_literal ;ponto_e_virgula

6 Paradigmas de Programação - prof Gláucya Carreiro Boechat 6 Definição formal de linguagens Reconhecedores de linguagens  Dispositivo que recebe um token como entrada e verifica se o mesmo pertence a linguagem  Exemplo: Análise Sintática (parte de um compilador) Geradores de linguagens  Dispositivo que gera sentenças da linguagem  Determinando se a sintaxe de uma sentença em particular está correta Através de comparações com a estrutura da linguagem gerada If then

7 Paradigmas de Programação - prof Gláucya Carreiro Boechat 7 Métodos formais para descrever a sintaxe Forma de Backus-Naur (BNF)  Método mais usado para descrever a sintaxe das linguagens de programação  Uma metalinguagem é usada para descrever outras linguagens Extended Backus Naur Form (EBNF)  Por apresentar algumas inconveniências a BNF foi estendida  Aumenta Legibilidade e Capacidade escrita da BNF

8 Paradigmas de Programação - prof Gláucya Carreiro Boechat 8 Gramáticas Livres de Contexto  Desenvolvida por Noam Chomsky nos meados da década de 1950  Define uma classe de linguagens chamadas de linguagens livres de contexto  Objetivo Descrever a sintaxe das linguagens naturais São gramáticas onde as regras de produção são definidas de forma mais livre

9 Paradigmas de Programação - prof Gláucya Carreiro Boechat 9 Backus-Naur Form (BNF) Backus-Naur Form (1959)  Inventada por John Backus para descrever o Algol 58 (International Algorithmic Language)  BNF é equivalente a gramáticas livre de contexto  BNF é uma metalinguagem usada para descrever outras linguagens  Em BNF, abstrações são usadas para representar classes de estruturas sintáticas Agem como variáveis sintáticas (também chamadas de símbolos não-terminais)

10 Paradigmas de Programação - prof Gláucya Carreiro Boechat 10 BNF - Fundamentos Terminais: lexemas e tokens Não-terminais: BNF abstrações  Atual como variáveis Gramática: uma coleção de regras  Exemplos de regras BNF: Atribuição em C(Representada pela abstração) --> = -> identifier | identifier, -> if then -> if then else

11 Paradigmas de Programação - prof Gláucya Carreiro Boechat 11 Regras BNF Uma regra possui  um lado esquerdo (LHS - Left Hand Side) consiste de símbolos não-terminais  um lado direito (RHS - Right Hand Side), consiste de símbolos terminais e não-terminais Uma gramática é um conjunto não vazio de regras Uma abstração (ou símbolo não-terminal) pode ter mais de um RHS -> | begin end

12 Paradigmas de Programação - prof Gláucya Carreiro Boechat 12 Listas Sintáticas Listas sintáticas são descritas usando recursão ->ident | ident, Derivação  Aplicação de regras repetidas vezes, começando com um símbolo inicial finalizando com uma sentença (símbolos terminais)

13 Paradigmas de Programação - prof Gláucya Carreiro Boechat 13 Uma gramática para uma pequena linguagem -> begin end -> | ; -> = -> a | b | c | d -> + | - -> | const

14 Paradigmas de Programação - prof Gláucya Carreiro Boechat 14 Exemplo gramática para uma pequena linguagem => => = => a = => a = + => a = b + => a = b + const = a + const b

15 Paradigmas de Programação - prof Gláucya Carreiro Boechat 15 Uma gramática para instruções de atribuição simples -> = -> A | B | C -> + | * | ( ) |

16 Paradigmas de Programação - prof Gláucya Carreiro Boechat 16 Árvore de Análise (Parse Tree)

17 Paradigmas de Programação - prof Gláucya Carreiro Boechat 17 Ambigüidade em gramáticas Uma gramática é ambígua se e somente se ela gera uma sentença que possui duas ou mais árvores de análise distintas

18 Paradigmas de Programação - prof Gláucya Carreiro Boechat 18 Uma gramática ambígua para instruções de atribuição simples -> = -> + | * | ( ) | -> A | B | C

19 Paradigmas de Programação - prof Gláucya Carreiro Boechat 19 Duas árvores de análise para a mesma sentença A = B + C * A

20 Paradigmas de Programação - prof Gláucya Carreiro Boechat 20 Uma gramática não-ambígua para expressões indicar os níveis de precedência de operadores, não teremos ambigüidade -> = -> + | -> * | -> ( ) | -> A | B | C

21 Paradigmas de Programação - prof Gláucya Carreiro Boechat 21 A árvore de análise única para a expressão A = B + C * A

22 Paradigmas de Programação - prof Gláucya Carreiro Boechat 22 Exemplo – Sintaxe para expressões Calculadora simples Com -> Expr Expr -> Num | Expr + Num | Expr - Num | Expr * Num | Expr / Num Num -> Dig |Num Dig Dig -> 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

23 Paradigmas de Programação - prof Gláucya Carreiro Boechat 23 Exemplo2 – Priorização em linguagens de Programação 1ª Prioridade : *, /, and,... 2ª Prioridade : +, -, or,... 3ª Prioridade : =, >, <,... Expr -> tExpr | tExpr = tExpr | tExpr < tExpr | tExpr > tExpr

24 Paradigmas de Programação - prof Gláucya Carreiro Boechat 24 Exemplo2 – Priorização em linguagens de Programação tExpr -> sExpr | tExpr + sExpr | tExpr - sExpr | tExpr or sExpr sExpr -> pExpr | sExpr * pExpr | sExpr / pExpr | sExpr and pExpr pExpr -> Lit | Var | (Exp)

25 Paradigmas de Programação - prof Gláucya Carreiro Boechat 25 Associatividade de Operadores Associatividade de operadores podem ser indicados pela gramática  Exemplo A = B + C + A (adição é associativa) A = B / C / A (divisão não é associativa)

26 Paradigmas de Programação - prof Gláucya Carreiro Boechat 26 Associatividade de Operadores Exemplo  -> + | const (ambígua)  -> + const | const (não-ambígua)

27 Paradigmas de Programação - prof Gláucya Carreiro Boechat 27 Árvore de análise associatividade da adição A = B + C + A

28 Paradigmas de Programação - prof Gláucya Carreiro Boechat 28 BNF estendida Adição de novas extensões Uso de Colchetes [ ] no RHS  Partes opcionais -> ident [ ( ) ] -> if ( ) [else ];

29 Paradigmas de Programação - prof Gláucya Carreiro Boechat 29 BNF estendida Uso de parenteses ( ) no RHS  Opções de múltipla escolha, são colocadas dentro de parênteses e separadas por barras verticais -> ( + | - ) const -> for = ( to | downto ) do Uso de chaves { } no RHS  Indica zero ou repetição indefinida -> letter { letter | digit } -> {, }

30 Paradigmas de Programação - prof Gláucya Carreiro Boechat 30 BNF e EBNF BNF -> + | - | -> * | / | -> ** | -> ( ) | id EBNF -> { (+ | -) } -> { (* | / ) } -> { ** } -> ( ) | id

31 Paradigmas de Programação - prof Gláucya Carreiro Boechat 31 Exercícios Traduzir as seguintes seqüências  5 – 6 – 7  5 * 6 * 7  5 * 6 – 7  5 – 3 * 2 – 7  A and B = C  A or B = C

32 Paradigmas de Programação - prof Gláucya Carreiro Boechat 32 Exercícios Modificar a sintaxe previamente estabelecida para as expressões sejam avaliadas tendo as comparações com maior precedência (Ex.: A and (B=C)). Refaça a tradução das expressões considerando a nova sintaxe estabelecida.

33 Paradigmas de Programação - prof Gláucya Carreiro Boechat 33 Exercícios Adicionar os operadores unários ‘++’, ‘--’ e ‘not’. Os operadores ‘++’ e ‘--’ devem ter a mesma prioridade dos seus correspondentes binários, e devem ser permitidos como ‘pré’ ou ‘pós’. O operador ‘not’ deve possuir uma prioridade mais alta do que todos os operadores já definidos.  Represente as expressões ‘--a+b’, ‘a+b--’, ‘++a*b’ e ‘not A and B’


Carregar ppt "Sintaxe e Semântica Prof.: Gláucya Carreiro Boechat Universidade Federal Rural de Pernambuco Departamento de Estatística e Informática."

Apresentações semelhantes


Anúncios Google