SlideShare ist ein Scribd-Unternehmen logo
1 von 30
Downloaden Sie, um offline zu lesen
Sintaxe e Semântica
Prof. Iális Cavalcante

Engenharia 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      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.
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;
1.
 1 Introdução
Linguagens são conjuntos de seqüências de
caracteres de algum alfabeto;
◦ S üê i sentenças ou instruções.
  Seqüências:         i      õ
Regras de sintaxe especificam quais seqüências
   g                p           q        q
fazem parte da linguagem.
Uma análise léxica descreve que lexema fazem
parte da descrição da linguagem;
Lexemas: identificadores, literais, operadores e
p
palavras especiais.
           p
1.
1 Introdução
Símbolo (token): categoria de lexemas
Instruçã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
1.
 1 Introdução
Descriçã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.
2. Métodos formais para descrição
da 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.
2. Métodos formais para descrição
da 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.
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>
2. Métodos formais para descrição
da 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>
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
2. Métodos formais para descrição
da 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 )
2. Métodos formais para descrição
da 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 )
                >
2. Métodos formais para descrição
da 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
2. Métodos formais para descrição da
sintaxe
 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>
2. Métodos formais para descrição
da 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>
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      inst


else_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.
3.
 3 Gramática de atributos
Extensão de uma gramática livre de contexto.
Uma das soluções para descrição da
semântica estática com a BNF...
    â ti      táti          BNF
Semâ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;
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.
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]
3. Gramática de atributos
1. Regra de sintaxe: <atribuição> -> <var> = <expr>
   Regra semântica: <expr>.tipo_esperado <- <var>.tipo_efetivo
2.
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 esperado
3. Regra de sintaxe: <expr> -> <var>
   Regra semântica: <expr>.tipo_efetivo <- <var>.tipo_efetivo
   Predicado: <expr>.tipo_efetivo <- <var>.tipo_esperado
4. Regra de sintaxe: <var> -> A | B | C
   Regra semântica: <var>.tipo_efetivo < look up ( <var> string )
                      <var> tipo efetivo <- look-up <var>.string
3.
3 Gramática de atributos
Um 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
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.
3.
    3 Gramática de atributos
                             <atribuição>


                                                      tipo_esperado = tipo_real
                                             <expr> tipo_efetivo = tipo_real




tipo_efetivo
tipo 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.
4.
 4 Semântica dinâmica
Nenhuma notação universalmente aceita;
4.1. Semântica operacional
Descrever o significado d um programa ao
D              i ifi d de
executar suas instruções em uma máquina, real ou
simulada;
Isso exige a construção de uma máquina para
execuçã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.
4.
4 Semântica dinâmica
Descrição da semântica de uma linguagem
L 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.
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
4.
4 Semântica dinâmica
4.3.
4 3 Semântica denotacional
Objetos matemáticos são usados para
representar 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
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
                                                              j
o número binário 110.                     denotados para 110.
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.

Weitere ähnliche Inhalte

Andere mochten auch

A gramática nos livros didáticos
A gramática nos livros didáticosA gramática nos livros didáticos
A gramática nos livros didáticosJamille Rabelo
 
Análise da Gramática Reflexiva de Cereja e Cochar
Análise da Gramática Reflexiva de Cereja e CocharAnálise da Gramática Reflexiva de Cereja e Cochar
Análise da Gramática Reflexiva de Cereja e CocharWendell Santos
 
Estudos CACD Missão Diplomática - Gramática Aula 03 - Conceitos de Semântica
Estudos CACD Missão Diplomática - Gramática Aula 03 - Conceitos de SemânticaEstudos CACD Missão Diplomática - Gramática Aula 03 - Conceitos de Semântica
Estudos CACD Missão Diplomática - Gramática Aula 03 - Conceitos de Semânticamissaodiplomatica
 
A gramática portuguesa
A gramática portuguesaA gramática portuguesa
A gramática portuguesaJoão Patacão
 

Andere mochten auch (8)

A gramática nos livros didáticos
A gramática nos livros didáticosA gramática nos livros didáticos
A gramática nos livros didáticos
 
Análise da Gramática Reflexiva de Cereja e Cochar
Análise da Gramática Reflexiva de Cereja e CocharAnálise da Gramática Reflexiva de Cereja e Cochar
Análise da Gramática Reflexiva de Cereja e Cochar
 
Coesao textual 1
Coesao textual 1Coesao textual 1
Coesao textual 1
 
GramáTica E LíNgua
GramáTica E LíNguaGramáTica E LíNgua
GramáTica E LíNgua
 
Estudos CACD Missão Diplomática - Gramática Aula 03 - Conceitos de Semântica
Estudos CACD Missão Diplomática - Gramática Aula 03 - Conceitos de SemânticaEstudos CACD Missão Diplomática - Gramática Aula 03 - Conceitos de Semântica
Estudos CACD Missão Diplomática - Gramática Aula 03 - Conceitos de Semântica
 
Semântica
SemânticaSemântica
Semântica
 
A gramática portuguesa
A gramática portuguesaA gramática portuguesa
A gramática portuguesa
 
Classe de palavras
Classe de palavrasClasse de palavras
Classe de palavras
 

Ähnlich wie Sintaxe Semântica Linguagens Programação

Estrutura de linguagem de programação - Aula 2.pptx
Estrutura de linguagem de programação - Aula 2.pptxEstrutura de linguagem de programação - Aula 2.pptx
Estrutura de linguagem de programação - Aula 2.pptxMarceloRosenbrock1
 
Estruturação de Linguagens de Programação (Pascal e C++)
Estruturação de Linguagens de Programação (Pascal e C++)Estruturação de Linguagens de Programação (Pascal e C++)
Estruturação de Linguagens de Programação (Pascal e C++)Mauricio Volkweis Astiazara
 
Aula 6 1 linguagem pascal-parte_1
Aula 6   1 linguagem pascal-parte_1Aula 6   1 linguagem pascal-parte_1
Aula 6 1 linguagem pascal-parte_1Duane Bertoldo
 
Paradigmas de Linguagens de Programação - Expressões e Instruções de Atribuição
Paradigmas de Linguagens de Programação - Expressões e Instruções de AtribuiçãoParadigmas de Linguagens de Programação - Expressões e Instruções de Atribuição
Paradigmas de Linguagens de Programação - Expressões e Instruções de AtribuiçãoAdriano Teixeira de Souza
 
Aula de programacao_final.dizando
Aula de programacao_final.dizandoAula de programacao_final.dizando
Aula de programacao_final.dizandoJoão Gomes
 
Pymordida0 Semana de computação da SOCIESC - 2008/10
Pymordida0 Semana de computação da SOCIESC - 2008/10Pymordida0 Semana de computação da SOCIESC - 2008/10
Pymordida0 Semana de computação da SOCIESC - 2008/10Marco Mendes
 
Tradutor de Pig Latin
Tradutor de Pig LatinTradutor de Pig Latin
Tradutor de Pig LatinElen Arantza
 
LIA - Linguagem Interpretada de Algoritmos
LIA - Linguagem Interpretada de AlgoritmosLIA - Linguagem Interpretada de Algoritmos
LIA - Linguagem Interpretada de AlgoritmosRafael Martins
 
Linguagem de Programação PERL
Linguagem de Programação PERLLinguagem de Programação PERL
Linguagem de Programação PERLTiago R. Sampaio
 
ANTLR-ANother Tool for Language Recognition
ANTLR-ANother Tool for Language RecognitionANTLR-ANother Tool for Language Recognition
ANTLR-ANother Tool for Language Recognitionelliando dias
 

Ähnlich wie Sintaxe Semântica Linguagens Programação (19)

Estrutura de linguagem de programação - Aula 2.pptx
Estrutura de linguagem de programação - Aula 2.pptxEstrutura de linguagem de programação - Aula 2.pptx
Estrutura de linguagem de programação - Aula 2.pptx
 
JavaCC
JavaCCJavaCC
JavaCC
 
Aula 1 | Introdução a C++
Aula 1 | Introdução a C++Aula 1 | Introdução a C++
Aula 1 | Introdução a C++
 
Estruturação de Linguagens de Programação (Pascal e C++)
Estruturação de Linguagens de Programação (Pascal e C++)Estruturação de Linguagens de Programação (Pascal e C++)
Estruturação de Linguagens de Programação (Pascal e C++)
 
Trabalho
TrabalhoTrabalho
Trabalho
 
Visual g apostila de algoritmo
Visual g   apostila de algoritmoVisual g   apostila de algoritmo
Visual g apostila de algoritmo
 
Aula 6 1 linguagem pascal-parte_1
Aula 6   1 linguagem pascal-parte_1Aula 6   1 linguagem pascal-parte_1
Aula 6 1 linguagem pascal-parte_1
 
Paradigmas de Linguagens de Programação - Expressões e Instruções de Atribuição
Paradigmas de Linguagens de Programação - Expressões e Instruções de AtribuiçãoParadigmas de Linguagens de Programação - Expressões e Instruções de Atribuição
Paradigmas de Linguagens de Programação - Expressões e Instruções de Atribuição
 
Python Emsl2009
Python Emsl2009Python Emsl2009
Python Emsl2009
 
Aula de programacao_final.dizando
Aula de programacao_final.dizandoAula de programacao_final.dizando
Aula de programacao_final.dizando
 
Ed1
Ed1Ed1
Ed1
 
Pymordida0 Semana de computação da SOCIESC - 2008/10
Pymordida0 Semana de computação da SOCIESC - 2008/10Pymordida0 Semana de computação da SOCIESC - 2008/10
Pymordida0 Semana de computação da SOCIESC - 2008/10
 
Tradutor de Pig Latin
Tradutor de Pig LatinTradutor de Pig Latin
Tradutor de Pig Latin
 
Mini R
Mini R Mini R
Mini R
 
Linguagem R
Linguagem RLinguagem R
Linguagem R
 
LIA - Linguagem Interpretada de Algoritmos
LIA - Linguagem Interpretada de AlgoritmosLIA - Linguagem Interpretada de Algoritmos
LIA - Linguagem Interpretada de Algoritmos
 
Linguagem de Programação PERL
Linguagem de Programação PERLLinguagem de Programação PERL
Linguagem de Programação PERL
 
ANTLR-ANother Tool for Language Recognition
ANTLR-ANother Tool for Language RecognitionANTLR-ANother Tool for Language Recognition
ANTLR-ANother Tool for Language Recognition
 
Algoritmo
AlgoritmoAlgoritmo
Algoritmo
 

Mehr von Ialis Cavalcante (15)

Assembleia com os Discentes - SACEC
Assembleia com os Discentes - SACECAssembleia com os Discentes - SACEC
Assembleia com os Discentes - SACEC
 
Minicurso Ercemapi 2011
Minicurso Ercemapi 2011Minicurso Ercemapi 2011
Minicurso Ercemapi 2011
 
Unidade7 1
Unidade7 1Unidade7 1
Unidade7 1
 
Programacao logica
Programacao logicaProgramacao logica
Programacao logica
 
05 poo-ii
05   poo-ii05   poo-ii
05 poo-ii
 
Unidade06
Unidade06Unidade06
Unidade06
 
Introducao ao greenfoot
Introducao ao greenfootIntroducao ao greenfoot
Introducao ao greenfoot
 
Dinamicas
DinamicasDinamicas
Dinamicas
 
Interface grafica
Interface graficaInterface grafica
Interface grafica
 
Unidade05
Unidade05Unidade05
Unidade05
 
Unidade04
Unidade04Unidade04
Unidade04
 
Unidade02
Unidade02Unidade02
Unidade02
 
Técnicas de PDI com Java - Ercemapi 2009
Técnicas de PDI com Java - Ercemapi 2009Técnicas de PDI com Java - Ercemapi 2009
Técnicas de PDI com Java - Ercemapi 2009
 
CCT 23Maio2009 Sobral
CCT 23Maio2009 SobralCCT 23Maio2009 Sobral
CCT 23Maio2009 Sobral
 
Introducao ao LaTeX
Introducao ao LaTeXIntroducao ao LaTeX
Introducao ao LaTeX
 

Kürzlich hochgeladen

FCEE - Diretrizes - Autismo.pdf para imprimir
FCEE - Diretrizes - Autismo.pdf para imprimirFCEE - Diretrizes - Autismo.pdf para imprimir
FCEE - Diretrizes - Autismo.pdf para imprimirIedaGoethe
 
Gerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem OrganizacionalGerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem OrganizacionalJacqueline Cerqueira
 
Bingo da potenciação e radiciação de números inteiros
Bingo da potenciação e radiciação de números inteirosBingo da potenciação e radiciação de números inteiros
Bingo da potenciação e radiciação de números inteirosAntnyoAllysson
 
Habilidades Motoras Básicas e Específicas
Habilidades Motoras Básicas e EspecíficasHabilidades Motoras Básicas e Específicas
Habilidades Motoras Básicas e EspecíficasCassio Meira Jr.
 
DIA DO INDIO - FLIPBOOK PARA IMPRIMIR.pdf
DIA DO INDIO - FLIPBOOK PARA IMPRIMIR.pdfDIA DO INDIO - FLIPBOOK PARA IMPRIMIR.pdf
DIA DO INDIO - FLIPBOOK PARA IMPRIMIR.pdfIedaGoethe
 
trabalho wanda rocha ditadura
trabalho wanda rocha ditaduratrabalho wanda rocha ditadura
trabalho wanda rocha ditaduraAdryan Luiz
 
O Universo Cuckold - Compartilhando a Esposas Com Amigo.pdf
O Universo Cuckold - Compartilhando a Esposas Com Amigo.pdfO Universo Cuckold - Compartilhando a Esposas Com Amigo.pdf
O Universo Cuckold - Compartilhando a Esposas Com Amigo.pdfPastor Robson Colaço
 
Apresentação | Eleições Europeias 2024-2029
Apresentação | Eleições Europeias 2024-2029Apresentação | Eleições Europeias 2024-2029
Apresentação | Eleições Europeias 2024-2029Centro Jacques Delors
 
Programa de Intervenção com Habilidades Motoras
Programa de Intervenção com Habilidades MotorasPrograma de Intervenção com Habilidades Motoras
Programa de Intervenção com Habilidades MotorasCassio Meira Jr.
 
ABRIL VERDE.pptx Slide sobre abril ver 2024
ABRIL VERDE.pptx Slide sobre abril ver 2024ABRIL VERDE.pptx Slide sobre abril ver 2024
ABRIL VERDE.pptx Slide sobre abril ver 2024Jeanoliveira597523
 
Prática de interpretação de imagens de satélite no QGIS
Prática de interpretação de imagens de satélite no QGISPrática de interpretação de imagens de satélite no QGIS
Prática de interpretação de imagens de satélite no QGISVitor Vieira Vasconcelos
 
Currículo escolar na perspectiva da educação inclusiva.pdf
Currículo escolar na perspectiva da educação inclusiva.pdfCurrículo escolar na perspectiva da educação inclusiva.pdf
Currículo escolar na perspectiva da educação inclusiva.pdfIedaGoethe
 
HORA DO CONTO4_BECRE D. CARLOS I_2023_2024
HORA DO CONTO4_BECRE D. CARLOS I_2023_2024HORA DO CONTO4_BECRE D. CARLOS I_2023_2024
HORA DO CONTO4_BECRE D. CARLOS I_2023_2024Sandra Pratas
 
Simulado 1 Etapa - 2024 Proximo Passo.pdf
Simulado 1 Etapa - 2024 Proximo Passo.pdfSimulado 1 Etapa - 2024 Proximo Passo.pdf
Simulado 1 Etapa - 2024 Proximo Passo.pdfEditoraEnovus
 
Aula - 2º Ano - Cultura e Sociedade - Conceitos-chave
Aula - 2º Ano - Cultura e Sociedade - Conceitos-chaveAula - 2º Ano - Cultura e Sociedade - Conceitos-chave
Aula - 2º Ano - Cultura e Sociedade - Conceitos-chaveaulasgege
 
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptxSlides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptxLuizHenriquedeAlmeid6
 
William J. Bennett - O livro das virtudes para Crianças.pdf
William J. Bennett - O livro das virtudes para Crianças.pdfWilliam J. Bennett - O livro das virtudes para Crianças.pdf
William J. Bennett - O livro das virtudes para Crianças.pdfAdrianaCunha84
 
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdf
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdfBRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdf
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdfHenrique Pontes
 
A Arte de Escrever Poemas - Dia das Mães
A Arte de Escrever Poemas - Dia das MãesA Arte de Escrever Poemas - Dia das Mães
A Arte de Escrever Poemas - Dia das MãesMary Alvarenga
 

Kürzlich hochgeladen (20)

FCEE - Diretrizes - Autismo.pdf para imprimir
FCEE - Diretrizes - Autismo.pdf para imprimirFCEE - Diretrizes - Autismo.pdf para imprimir
FCEE - Diretrizes - Autismo.pdf para imprimir
 
Gerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem OrganizacionalGerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem Organizacional
 
Bingo da potenciação e radiciação de números inteiros
Bingo da potenciação e radiciação de números inteirosBingo da potenciação e radiciação de números inteiros
Bingo da potenciação e radiciação de números inteiros
 
Habilidades Motoras Básicas e Específicas
Habilidades Motoras Básicas e EspecíficasHabilidades Motoras Básicas e Específicas
Habilidades Motoras Básicas e Específicas
 
DIA DO INDIO - FLIPBOOK PARA IMPRIMIR.pdf
DIA DO INDIO - FLIPBOOK PARA IMPRIMIR.pdfDIA DO INDIO - FLIPBOOK PARA IMPRIMIR.pdf
DIA DO INDIO - FLIPBOOK PARA IMPRIMIR.pdf
 
trabalho wanda rocha ditadura
trabalho wanda rocha ditaduratrabalho wanda rocha ditadura
trabalho wanda rocha ditadura
 
O Universo Cuckold - Compartilhando a Esposas Com Amigo.pdf
O Universo Cuckold - Compartilhando a Esposas Com Amigo.pdfO Universo Cuckold - Compartilhando a Esposas Com Amigo.pdf
O Universo Cuckold - Compartilhando a Esposas Com Amigo.pdf
 
Apresentação | Eleições Europeias 2024-2029
Apresentação | Eleições Europeias 2024-2029Apresentação | Eleições Europeias 2024-2029
Apresentação | Eleições Europeias 2024-2029
 
Programa de Intervenção com Habilidades Motoras
Programa de Intervenção com Habilidades MotorasPrograma de Intervenção com Habilidades Motoras
Programa de Intervenção com Habilidades Motoras
 
ABRIL VERDE.pptx Slide sobre abril ver 2024
ABRIL VERDE.pptx Slide sobre abril ver 2024ABRIL VERDE.pptx Slide sobre abril ver 2024
ABRIL VERDE.pptx Slide sobre abril ver 2024
 
Prática de interpretação de imagens de satélite no QGIS
Prática de interpretação de imagens de satélite no QGISPrática de interpretação de imagens de satélite no QGIS
Prática de interpretação de imagens de satélite no QGIS
 
Currículo escolar na perspectiva da educação inclusiva.pdf
Currículo escolar na perspectiva da educação inclusiva.pdfCurrículo escolar na perspectiva da educação inclusiva.pdf
Currículo escolar na perspectiva da educação inclusiva.pdf
 
HORA DO CONTO4_BECRE D. CARLOS I_2023_2024
HORA DO CONTO4_BECRE D. CARLOS I_2023_2024HORA DO CONTO4_BECRE D. CARLOS I_2023_2024
HORA DO CONTO4_BECRE D. CARLOS I_2023_2024
 
Simulado 1 Etapa - 2024 Proximo Passo.pdf
Simulado 1 Etapa - 2024 Proximo Passo.pdfSimulado 1 Etapa - 2024 Proximo Passo.pdf
Simulado 1 Etapa - 2024 Proximo Passo.pdf
 
Aula - 2º Ano - Cultura e Sociedade - Conceitos-chave
Aula - 2º Ano - Cultura e Sociedade - Conceitos-chaveAula - 2º Ano - Cultura e Sociedade - Conceitos-chave
Aula - 2º Ano - Cultura e Sociedade - Conceitos-chave
 
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptxSlides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
 
William J. Bennett - O livro das virtudes para Crianças.pdf
William J. Bennett - O livro das virtudes para Crianças.pdfWilliam J. Bennett - O livro das virtudes para Crianças.pdf
William J. Bennett - O livro das virtudes para Crianças.pdf
 
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdf
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdfBRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdf
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdf
 
Em tempo de Quaresma .
Em tempo de Quaresma                            .Em tempo de Quaresma                            .
Em tempo de Quaresma .
 
A Arte de Escrever Poemas - Dia das Mães
A Arte de Escrever Poemas - Dia das MãesA Arte de Escrever Poemas - Dia das Mães
A Arte de Escrever Poemas - Dia das Mães
 

Sintaxe Semântica Linguagens Programação

  • 1. Sintaxe e Semântica Prof. Iális Cavalcante Engenharia da Computação – UFC/Sobral
  • 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. 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. 1. 1 Introdução Linguagens são conjuntos de seqüências de caracteres de algum alfabeto; ◦ S üê i sentenças ou instruções. Seqüências: i õ Regras de sintaxe especificam quais seqüências g p q q fazem parte da linguagem. Uma análise léxica descreve que lexema fazem parte da descrição da linguagem; Lexemas: identificadores, literais, operadores e p palavras especiais. p
  • 5. 1. 1 Introdução Símbolo (token): categoria de lexemas Instruçã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. 1. 1 Introdução Descriçã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. 2. Métodos formais para descrição da 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. 2. Métodos formais para descrição da 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. 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. 2. Métodos formais para descrição da 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. 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. 2. Métodos formais para descrição da 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. 2. Métodos formais para descrição da 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. 2. Métodos formais para descrição da 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. 2. Métodos formais para descrição da sintaxe 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. 2. Métodos formais para descrição da 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. 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 inst else_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. 3. 3 Gramática de atributos Extensão de uma gramática livre de contexto. Uma das soluções para descrição da semântica estática com a BNF... â ti táti BNF Semâ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. 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. 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. 3. Gramática de atributos 1. Regra de sintaxe: <atribuição> -> <var> = <expr> Regra semântica: <expr>.tipo_esperado <- <var>.tipo_efetivo 2. 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 esperado 3. Regra de sintaxe: <expr> -> <var> Regra semântica: <expr>.tipo_efetivo <- <var>.tipo_efetivo Predicado: <expr>.tipo_efetivo <- <var>.tipo_esperado 4. 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. 3. 3 Gramática de atributos Um 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. 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. 3. 3 Gramática de atributos <atribuição> tipo_esperado = tipo_real <expr> tipo_efetivo = tipo_real tipo_efetivo tipo 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. 4. 4 Semântica dinâmica Nenhuma notação universalmente aceita; 4.1. Semântica operacional Descrever o significado d um programa ao D i ifi d de executar suas instruções em uma máquina, real ou simulada; Isso exige a construção de uma máquina para execuçã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. 4. 4 Semântica dinâmica Descrição da semântica de uma linguagem L 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. 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. 4. 4 Semântica dinâmica 4.3. 4 3 Semântica denotacional Objetos matemáticos são usados para representar 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. 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 j o número binário 110. denotados para 110.
  • 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.