Sintaxe e SemânticaProf. Iális CavalcanteEngenharia da Computação – UFC/Sobral
1.1 Introdução Descrição concisa e inteligível de uma linguagem; Problema da definição de uma linguagem: fazer- P bl      ...
1.1 Introdução if (<expr>) <instrução> Sintaxe de if em C; Semântica: se o valor total da expressão for verdadeiro, a inst...
1. 1 IntroduçãoLinguagens são conjuntos de seqüências decaracteres de algum alfabeto;◦ S üê i sentenças ou instruções.  Se...
1.1 IntroduçãoSímbolo (token): categoria de lexemasInstrução em C: index = 2 * cont + 17;          Lexemas     Símbolos   ...
1. 1 IntroduçãoDescrição da sintaxe da linguagem◦ Reconhecedor   linguagem L alfabeto Σ reconhecedor R              L,    ...
2. Métodos formais para descriçãoda sintaxe Tais mecanismos são chamados de gramáticas. Noam Chomsky descreveu, na década ...
2. Métodos formais para descriçãoda sintaxe John Backus, 1959 ◦ Descrição do ALGOL 58, notação formal para   especificar a...
2. Métodos formais para descrição da sintaxe  BNF é a metalinguagem das linguagens de programação;  Usa abstrações para es...
2. Métodos formais para descriçãoda sintaxe Gramática para uma pequena linguagem:   <programa> -> begin <lista_inst> end  ...
2. Métodos formais para descrição  da sintaxe Uma d i ã d U derivação de um programa nessa linguagem:                     ...
2. Métodos formais para descriçãoda sintaxe        <atribuição> -> <id> = <expr>        <id> -> A | B | C        <expr> ->...
2. Métodos formais para descriçãoda sintaxe<atribuição> => <id> = <expr>               => A = <expr>               => A = ...
2. Métodos formais para descriçãoda sintaxe Árvore de análise (parse tree)          <atribuição>         <id>   =        <...
2. Métodos formais para descrição dasintaxe BNF Estendida (Extended BNF – EBNF)  ◦ Não aumenta o poder descritivo das expr...
2. Métodos formais para descriçãoda sintaxe BNF:    <expr> -> <expr> + <termo>                  |   <expr> - <termo>      ...
2. Métodos formais para descrição da sintaxe                   p    Grafo de sintaxe: BNF e EBNF representados por grafos ...
3. 3 Gramática de atributosExtensão de uma gramática livre de contexto.Uma das soluções para descrição dasemântica estátic...
3.3 Gramática de atributos São gramáticas com a adição de: ◦ Atributos: símbolos gramaticais; ◦ Funções de computação de a...
3.3 Gramática de atributos Procedimento em Ada (aplicação da semântica estática): ◦ Regra de sintaxe: <def_proc>  ‐>  proc...
3. Gramática de atributos1. Regra de sintaxe: <atribuição> -> <var> = <expr>   Regra semântica: <expr>.tipo_esperado <- <v...
3.3 Gramática de atributosUm conjunto de atributos A(X) está associado a cada símbolo gramatical X                        ...
3.     3 Gramática de atributos                                <atribuição>                                      tipo_espe...
3.    3 Gramática de atributos                             <atribuição>                                                   ...
4. 4 Semântica dinâmicaNenhuma notação universalmente aceita;4.1. Semântica operacionalDescrever o significado d um progra...
4.4 Semântica dinâmicaDescrição da semântica de uma linguagemL por um método operacional:◦ T d t das i t õ em L para uma  ...
4.4 Semântica dinâmica 4.2. 4 2 Semântica axiomática Baseada na lógica formal, foi idealizada como ferramenta para provar ...
4.4 Semântica dinâmica4.3.4 3 Semântica denotacionalObjetos matemáticos são usados pararepresentar os significados das con...
4. 4 Semântica dinâmica            Mbin(‘0’)  =  0            Mbin(‘1’)  =  1            Mbin(<num bin> ‘0’) = 2*Mbin(<num...
5.5 Revisão Sintaxe e semântica; Lexema, token e gramática; Gramática livre de contexto e BNF; Gramática de atributos; Sem...
Upcoming SlideShare
Loading in...5
×

Unidade03

800

Published on

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
800
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
55
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Unidade03"

  1. 1. Sintaxe e SemânticaProf. Iális CavalcanteEngenharia da Computação – UFC/Sobral
  2. 2. 1.1 Introdução Descrição concisa e inteligível de uma linguagem; Problema da definição de uma linguagem: fazer- P bl d d fi i ã d li f se entender sua descrição; Manual de referência da linguagem; Estudo das linguagens de programação: ◦ Sintaxe: regras de definição das expressões, instruções e unidades de programa; ◦ Semântica: verificação do significado do que foi estruturado na sintaxe.
  3. 3. 1.1 Introdução if (<expr>) <instrução> Sintaxe de if em C; Semântica: se o valor total da expressão for verdadeiro, a instrução incorporada verdadeiro será selecionada para execução (ufa!!!); if   x > 0   y = 1/x; if 0 1/ Erro de sintaxe! if   (x == 0)   y = 1/x; ( ) y / ; Erro de semântica! Correto: if (x > 0) y = 1/x;
  4. 4. 1. 1 IntroduçãoLinguagens são conjuntos de seqüências decaracteres de algum alfabeto;◦ S üê i sentenças ou instruções. Seqüências: i õRegras de sintaxe especificam quais seqüências g p q qfazem parte da linguagem.Uma análise léxica descreve que lexema fazemparte da descrição da linguagem;Lexemas: identificadores, literais, operadores eppalavras especiais. p
  5. 5. 1.1 IntroduçãoSímbolo (token): categoria de lexemasInstrução em C: index = 2 * cont + 17; Lexemas Símbolos index identificador = sinal_igual 2 int_literal * op_mult cont identificador + op_soma op soma 17 int_literal ; p ponto_e_virgula g
  6. 6. 1. 1 IntroduçãoDescrição da sintaxe da linguagem◦ Reconhecedor linguagem L alfabeto Σ reconhecedor R L, Σ, R. R identifica se seqüência criada a partir de Σ pertence a L.◦ Gerador Estrutura com regras d formação para geração de novas Et t de f ã ã d seqüências.
  7. 7. 2. Métodos formais para descriçãoda sintaxe Tais mecanismos são chamados de gramáticas. Noam Chomsky descreveu, na década de N Ch k d dé d d 50, quatro gramáticas para definir novas classes d linguagens. l de li ◦ Dentre elas: gramática livre de contexto. Busca da natureza teórica das linguagens B d ó d l naturais. ◦ Li Linguagens i i d programação podem inteiras de ã d ser descritas por ela.
  8. 8. 2. Métodos formais para descriçãoda sintaxe John Backus, 1959 ◦ Descrição do ALGOL 58, notação formal para especificar a sintaxe de uma LP; Peter Naur, 1960 ◦ Modificou a notação de Backus para o ALGOL 60 ◦ O método revisado tornou-se conhecido como forma de Backus-Naur ou BNF. ◦ BNF é quase idêntica à idéia de gramática livre de contexto.
  9. 9. 2. Métodos formais para descrição da sintaxe BNF é a metalinguagem das linguagens de programação; Usa abstrações para estruturas sintáticas (regra ou produção): ◦ <atribuição> -> <var> = <expressão> ç p símbolos símbolos não-terminais terminais ◦ total = sub1 + sub2 l b1 b2 Gramática: conjunto de regras; if em C: ◦ <inst_if> -> if <expr_lógica> <inst> <inst_if> -> if <expr_lógica> <inst> else <inst> _ p_ g Ou ◦ <inst_if> -> if <expr_lógica> <inst> | if <expr_lógica> <inst> else <inst>
  10. 10. 2. Métodos formais para descriçãoda sintaxe Gramática para uma pequena linguagem: <programa> -> begin <lista_inst> end <lista_inst> -> <inst> | <inst>; <lista_inst> <inst> -> <var> = <expressão> <var> -> A | B | C <expressão> -> <var> + <var> | <var> - <var> | <var>
  11. 11. 2. Métodos formais para descrição da sintaxe Uma d i ã d U derivação de um programa nessa linguagem: li<programa> => begin <lista_inst> end => begin <inst>; <lista inst> end > <lista_inst> => begin <var> = <expressão>; <lista_inst> end => begin A = <expressão>; <lista_inst> end => begin A = <var> + <var>; <lista_inst> end => begin A = B + <var>; <lista_inst> end => begin A = B + C; <lista inst> end <lista_inst> => begin A = B + C; <inst> end => begin A = B + C; <var> = <expressão> end => begin A = B + C; B = <expressão> end => begin A = B + C; B = <var> end => b i A = B + C; B = C end begin C d
  12. 12. 2. Métodos formais para descriçãoda sintaxe <atribuição> -> <id> = <expr> <id> -> A | B | C <expr> -> <id> + <expr> | <id> * <expr> | ( <expr> ) | <id> Com a gramática acima, como alcançar a instrução a seguir? A = B * (A + C )
  13. 13. 2. Métodos formais para descriçãoda sintaxe<atribuição> => <id> = <expr> => A = <expr> => A = <id> * <expr> => A = B * <expr> => A = B * ( <expr> ) => A = B * ( <id> + <expr> ) => A = B * ( A + < <expr> ) > => A = B * ( A + <id> ) => A = B * ( A + C ) >
  14. 14. 2. Métodos formais para descriçãoda sintaxe Árvore de análise (parse tree) <atribuição> <id> = <expr> A <id> * <expr> B ( <expr> ) Procedência P dê i de operadores <id> + p <expr> A <id> C
  15. 15. 2. Métodos formais para descrição dasintaxe BNF Estendida (Extended BNF – EBNF) ◦ Não aumenta o poder descritivo das expressões, mas sua legibilidade e capacidade de escrita; 1ª extensão: parte opcional com uso de colchetes <seleção> -> if ( <expressão> ) <instrução> [ else > <instrução> ]; 2ª extensão: uso de chaves indicando repetição p ç indefinida ou omissão <lista_ident> -> <identificador> { , <identificador> }; 3ª extensão: múltipla escolha entre parênteses. Uso do operador | , OU <inst_for> -> for <var> := <expr> (to | downto) <expr> do <inst>
  16. 16. 2. Métodos formais para descriçãoda sintaxe BNF: <expr> -> <expr> + <termo> | <expr> - <termo> p | <termo> <termo> -> <termo> * <fator> | <termo> / <fator> | <fator> fator EBNF: <expr> -> <termo> { (+ | -) <termo> } <termo> -> <f t > { (* | /) <f t > } <t > > <fator> <fator>
  17. 17. 2. Métodos formais para descrição da sintaxe p Grafo de sintaxe: BNF e EBNF representados por grafos dirigidos (de arestas direcionais)inst_if if condição then inst end_if end if ; else_if else instelse_if else_if condição then inst <inst_if > -> if <condição> then <inst> { <else_if> } [ else <inst> ] end if <else_if> -> elseif <condição> then <inst> _ ç Grafo de sintaxe e descrição EBNF da instrução Ada if.
  18. 18. 3. 3 Gramática de atributosExtensão de uma gramática livre de contexto.Uma das soluções para descrição dasemântica estática com a BNF... â ti táti BNFSemântica estática◦ Se relaciona indiretamente com o significado do programa em execução... p g ç◦ Verificação com as formas legais do programa Restrição e compatibilidade de tipos; Tempo de compilação (estática!). Exemplo em Java: double x = 4; int y = 4 5; 4.5;
  19. 19. 3.3 Gramática de atributos São gramáticas com a adição de: ◦ Atributos: símbolos gramaticais; ◦ Funções de computação de atributos: (ou funções semânticas) especificam a computação dos valores dos atributos; ◦ Funções predicadas: declaram a sintaxe ç p relacionadas às regras gramaticais.
  20. 20. 3.3 Gramática de atributos Procedimento em Ada (aplicação da semântica estática): ◦ Regra de sintaxe: <def_proc>  ‐>  procedure <nome_proc>[1]   <corpo_do_proc> end <nome_proc>[2] ◦ Regra de semântica: <nome_proc>[1] = <nome_proc>[2]
  21. 21. 3. Gramática de atributos1. Regra de sintaxe: <atribuição> -> <var> = <expr> Regra semântica: <expr>.tipo_esperado <- <var>.tipo_efetivo2.2 Regra de sintaxe: <expr> -> <var>[2] + <var>[3] 2 3 Regra semântica: <expr>.tipo_efetivo <- if ( <var>[2].tipo efetivo = int ) e var [2].tipo_efetivo ( <var>[3].tipo_efetivo = int ) then int Pesquisa nome de variável na tabela d iá l b l de else real símbolos e retorna o end if tipo da mesma Predicado: <expr> tipo efetivo = <expr>.tipo_esperado <expr>.tipo_efetivo <expr> tipo esperado3. Regra de sintaxe: <expr> -> <var> Regra semântica: <expr>.tipo_efetivo <- <var>.tipo_efetivo Predicado: <expr>.tipo_efetivo <- <var>.tipo_esperado4. Regra de sintaxe: <var> -> A | B | C Regra semântica: <var>.tipo_efetivo < look up ( <var> string ) <var> tipo efetivo <- look-up <var>.string
  22. 22. 3.3 Gramática de atributosUm conjunto de atributos A(X) está associado a cada símbolo gramatical X X. <atribuição> <expr> S(X) – atributo sintetizado <var> <var>[2] <var>[3] I(X) – atributo ( ) herdado A = A + B
  23. 23. 3. 3 Gramática de atributos <atribuição> tipo_esperado <expr> tipo_efetivo tipo_efetivo<var> <var>[2] <var>[3] tipo_efetivo tipo_efetivo A = A + B Fluxo dos atributos na árvore árvore.
  24. 24. 3. 3 Gramática de atributos <atribuição> tipo_esperado = tipo_real <expr> tipo_efetivo = tipo_realtipo_efetivotipo efetivo = <var> <var>[2] tipo efetivo = tipo_efetivo <var>[3] tipo efetivo = tipo_efetivo tipo_real tipo_real tipo_int A = A + B Árvore de análise completamente atribuída.
  25. 25. 4. 4 Semântica dinâmicaNenhuma notação universalmente aceita;4.1. Semântica operacionalDescrever o significado d um programa aoD i ifi d deexecutar suas instruções em uma máquina, real ousimulada;Isso exige a construção de uma máquina paraexecução do interpretador do código de máquina;Essa máquina pode ser virtual◦ para simular os efeitos de uma máquina real;◦ Evita conflito com configurações do sistema operacional e/ou hardware.
  26. 26. 4.4 Semântica dinâmicaDescrição da semântica de uma linguagemL por um método operacional:◦ T d t das i t õ em L para uma Tradutor d instruções linguagem de baixo nível;◦ C nstr çã da má ina virtual para a Construção máquina irt al ara simulação do software: registradores, memória, memória informações de status e processo de execução.Depende de algoritmos não da algoritmos,matemática.
  27. 27. 4.4 Semântica dinâmica 4.2. 4 2 Semântica axiomática Baseada na lógica formal, foi idealizada como ferramenta para provar a exatidão dos programas; p g ; soma = 2 * x + 1 { soma > 1 } predicado pré- e ou asserção pós-condição
  28. 28. 4.4 Semântica dinâmica4.3.4 3 Semântica denotacionalObjetos matemáticos são usados pararepresentar os significados das construções g g ;de linguagens;Exemplo: sintaxe dos números binários <num_bin>  ‐>  0 <n m bin> > 0 |   1 |   <num_bin>  0 | bi 0 |   <num_bin>  1
  29. 29. 4. 4 Semântica dinâmica Mbin(‘0’)  =  0 Mbin(‘1’)  =  1 Mbin(<num bin> ‘0’) = 2*Mbin(<num bin>) (<num_bin>  0 )  = 2 M (<num_bin>) Mbin(<num_bin> ‘1’)  = 2*Mbin(<num_bin>) + 1 6 <num_bin> <num_bin> 3 <num_bin> <num bin> 0 <num_bin> <num bin> 0 1<num_bin> 1 <num_bin> 1 1 1Árvore de análise para p Árvore de análise com objetos jo número binário 110. denotados para 110.
  30. 30. 5.5 Revisão Sintaxe e semântica; Lexema, token e gramática; Gramática livre de contexto e BNF; Gramática de atributos; Semântica dinâmica.
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×