Linguagens, sintaxe e semântica


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í...
Em princípio não existem regras
    para construir uma linguagem.
 Entretanto, ao criar uma linguagem,
    estamos cheios ...
Atenção!
Um símbolo é
                          Termos
uma entidade
                         técnicos
  atômica

         ...
Exemplo
  Coleção de símbolos para
     descrever jogos de
          baralho




{ ,,,, A, 2, 3, 4, 5, 6, 7, 8, 9, 10,...
Exemplo – continuação

           Strings
                     , , 8, 9, A, 2, A23,
                     , 55555, ...
Envolve a atribuição de
 um significado a cada
string de uma linguagem
Gramática
Gramática


Uma forma de definir uma
   linguagem formal L
 a partir de um alfabeto 
Gramática
Componentes
  de uma
 gramática               N – um conjunto de
                       símbolos não-terminais

...
Os não-terminais ...
                             As classes
                            gramaticais
                     ...
Os lexemas da          Os terminais ...
  linguagem

       O conjunto T dos
      símbolos terminais




                ...
As produções ...
                           As regras
                          gramaticais

       O conjunto P das
     ...
Uma derivação ...
Produções

                                         naipe?
carta: um valor seguido de um naipe
mão : um conjunto de 3 cart...
As wff’s




Assim, a linguagem formal
  é o conjunto de todas
      as suas wff ’s      Apenas um nome
                  ...
Alfabeto de uma linguagem
                                             Exemplo
  para descrever datas no
        calendári...
Produções
 data: o dia, seguido do mês, seguido do ano;
              separados pela barra


                             ...
Metalinguagem -BNF
Metalinguagem

  Linguagem auxiliar utilizada
para descrever mais claramente
      a linguagem formal


           {   }  ...
Metalinguagem


                        Pode ser uma
                     linguagem natural
                     como o po...
John Warner Backus




  • O “pai” do FORTRAN;
  • Participou decisivamente
    na criação do ALGOL.
Peter Naur




Criador do ALGOL, junto com
       Backus e outros
O formalismo de Backus-Naur

 J. W. Backus desenvolveu, especificamente para a ALGOL 58, um
método para descrever linguage...
Noam Chomsky




               Filadelfia, 07/12/1928
                  Professor do MIT
Exemplo

                                      Símbolo
                                      terminal


 dígito   0 |...
Exemplo – produção

   dígito   0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

 natural    dígito  |  dígito   natu...
Regras de produção
       Os elementos são escolhidos
              de uma lista;
          a ordem não importa

 dígito ...
A EBNF e os diagramas de caminho
EBNF


O EBNF não é mais poderoso que o BNF;
 apenas é mais facilitador – mais prático.
Nele são incluídas notações para r...
A EBNF

           Um elemento opcional é escrito
                 entre colchetes [ a ];
     O elemento a pode ser inclu...
Exemplo
    dígito  “0” | “1” | ... | “9”

    inteiro  [ “ - ” | “ + ” ] dígito ( dígito )*


São produções de inte...
Apesar da notação usada ser praticamente a mesma, há uma grande
diferença entre o significado de definições léxicas e sint...
EBNF e diagramas sintáticos


                        Representação gráfica
Representação gráfica

                       ...
EBNF
                        e diagramas
Representação gráfica    sintáticos
              A

              B

EBNF

     ...
EBNF e diagramas sintáticos


Representação gráfica       Representação gráfica


              A
                        ...
EBNF e diagramas sintáticos

                            Representação gráfica

Representação gráfica
                    ...
Exemplo                      Um número binário pode ser
                              constituído por apenas um
          ...
Python, EBNF e
diagramas de sintaxe

Mais adiante no curso, teremos a oportunidade
 de trabalhar com a EBNF para definição...
A definição de nome em Python

letra_min   a

            b
                       nome ::= letra_min ( letra_min | “_” )*...
O comando print




                             expr   ,          ,
                    expr
cmd_print   print
          ...
O comando print


 O comando print avalia uma expressão por vez e escreve o objeto resultante
     na saída padrão (veja a...
O comando if




cmd_if     if    expr    :    seq


          elif   expr    :    seq


          else    :     seq
O comando if



       O comando if é usado para execução condicional.

   Ele seleciona exatamente uma das sequências ava...
Upcoming SlideShare
Loading in...5
×

Python 03 - Sintaxe

1,186

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,186
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
25
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Python 03 - Sintaxe

  1. 1. Linguagens, sintaxe e semântica LNCC UFRJ
  2. 2. Linguagens naturais e formais
  3. 3. Linguagens naturais
  4. 4. Linguagem formal Um conjunto finito e não-vazio  cujos elementos são símbolos Qualquer cadeia finita de símbolos justapostos – inclusive a vazia,  Coleção de todas as strings construídas a partir de  Qualquer subconjunto L de *
  5. 5. Em princípio não existem regras para construir uma linguagem. Entretanto, ao criar uma linguagem, estamos cheios de segundas intenções – e assim precisaremos de regras para atingi-las! Para  = { 0, 1 }, temos  = { , 0, 1, 00, 01, 10, 11, 000, 001, ... }. A partir daí poderemos construir diversas linguagens, que serão muito úteis, conforme veremos.
  6. 6. Atenção! Um símbolo é Termos uma entidade técnicos atômica Uma string é só uma cadeia de símbolos Uma linguagem formal é só um conjunto de strings
  7. 7. Exemplo Coleção de símbolos para descrever jogos de baralho { ,,,, A, 2, 3, 4, 5, 6, 7, 8, 9, 10, J, Q, K, [, ] }
  8. 8. Exemplo – continuação Strings , , 8, 9, A, 2, A23, , 55555, JQKA, 4, 7, A, 7, 10JQKA, [A,K], etc { A, 2, ... , 7, J, Q, K, A, 2, ... , 7, J, Q, K, A, 2, ... , 7, J, Q, K, A, 2, ... , 7, J, Q, K, Uma [A,A,2], ... , [7, Q,5 ], linguagem etc }
  9. 9. Envolve a atribuição de um significado a cada string de uma linguagem
  10. 10. Gramática
  11. 11. Gramática Uma forma de definir uma linguagem formal L a partir de um alfabeto 
  12. 12. Gramática Componentes de uma gramática N – um conjunto de símbolos não-terminais T – um conjunto de N T   símbolos terminais S – um símbolo especial: o símbolo de partida P – um conjunto de produções
  13. 13. Os não-terminais ... As classes gramaticais Em inglês, O conjunto N dos tokens símbolos não-terminais
  14. 14. Os lexemas da Os terminais ... linguagem O conjunto T dos símbolos terminais Apesar dos não-terminais serem usados na construção, eles não aparecem na sentença acabada
  15. 15. As produções ... As regras gramaticais O conjunto P das produções
  16. 16. Uma derivação ...
  17. 17. Produções naipe? carta: um valor seguido de um naipe mão : um conjunto de 3 cartas (p/ex.) valor? , 3A, 17, [J, K, A] , 2, 7, A, [3, J, K] Strings não São strings admissíveis em admissíveis em linguagens para linguagens para jogos de baralho jogos de baralho
  18. 18. As wff’s Assim, a linguagem formal é o conjunto de todas as suas wff ’s Apenas um nome mais enfático para as strings produzidas
  19. 19. Alfabeto de uma linguagem Exemplo para descrever datas no calendário { /, jan, fev, ..., dez, 0, 1 2, 3, 4, 5, 6, 7, 8, 9 }
  20. 20. Produções data: o dia, seguido do mês, seguido do ano; separados pela barra Dia? Mês? Ano? 6/jan/2009, 1/abr/1998, 14/jul/1872 Datas são wff’s (strings 46/jan/2009, abr/1/1998 admissíveis) no calendário gregoriano Não são wff’s
  21. 21. Metalinguagem -BNF
  22. 22. Metalinguagem Linguagem auxiliar utilizada para descrever mais claramente a linguagem formal { } ,
  23. 23. Metalinguagem Pode ser uma linguagem natural como o português ou inglês, ou outra linguagem formal O formalismo de Backus-Naur (BNF)
  24. 24. John Warner Backus • O “pai” do FORTRAN; • Participou decisivamente na criação do ALGOL.
  25. 25. Peter Naur Criador do ALGOL, junto com Backus e outros
  26. 26. O formalismo de Backus-Naur J. W. Backus desenvolveu, especificamente para a ALGOL 58, um método para descrever linguagens de programação, que veio a ser conhecido como a forma normal de Backus. Tal método foi revisado e expandido por Peter Naur para a ALGOL 60; por sugestão de Donald Knuth, foi renomeado como a forma normal de Backus-Naur
  27. 27. Noam Chomsky Filadelfia, 07/12/1928 Professor do MIT
  28. 28. Exemplo Símbolo terminal  dígito   0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 Separador de Nome do alternativas identificador da classe
  29. 29. Exemplo – produção  dígito   0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9  natural    dígito  |  dígito   natural  Observe que a definição de natural é recursiva
  30. 30. Regras de produção Os elementos são escolhidos de uma lista; a ordem não importa  dígito   0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9  natural    dígito  |  dígito   natural  Os elementos são escritos sequencialmente da esquerda para a direita
  31. 31. A EBNF e os diagramas de caminho
  32. 32. EBNF O EBNF não é mais poderoso que o BNF; apenas é mais facilitador – mais prático. Nele são incluídas notações para repetição e para elementos opcionais No EBNF os símbolos terminais são escritos entre aspas “ ” e os não-terminais diretamente, sem os  
  33. 33. A EBNF Um elemento opcional é escrito entre colchetes [ a ]; O elemento a pode ser incluído ou descartado A repetição de um ou mais elementos é descrita pela utilização de chaves: • ( a )+ indica a repetição do a pelo menos uma vez; • ( a )* indica a repetição do a zero ou mais vezes.
  34. 34. Exemplo dígito  “0” | “1” | ... | “9” inteiro  [ “ - ” | “ + ” ] dígito ( dígito )* São produções de inteiro: -1, +21, 9, 12047, etc inteiro  [ “ - ” | “ + ” ] ( dígito )+
  35. 35. Apesar da notação usada ser praticamente a mesma, há uma grande diferença entre o significado de definições léxicas e sintáticas: uma definição léxica opera sobre os caracteres individuais do fluxo de entrada, ao passo que uma definição sintática opera no fluxo de tokens gerado pela análise léxica. Todas as utilizações da BNF no próximo capítulo, Análise léxica, são definições léxicas; já nos capítulos subsequentes são definições sintáticas.
  36. 36. EBNF e diagramas sintáticos Representação gráfica Representação gráfica A A B EBNF EBNF AB [A] Significado Significado A seguido de B A ou nada
  37. 37. EBNF e diagramas Representação gráfica sintáticos A B EBNF A|B Significado ou A ou B
  38. 38. EBNF e diagramas sintáticos Representação gráfica Representação gráfica A A EBNF EBNF ( A )* ( A )+ Significado Significado Sequência de zero Sequência de um ou mais A ’s ou mais A ’s
  39. 39. EBNF e diagramas sintáticos Representação gráfica Representação gráfica a a b EBNF a z Significado Símbolo EBNF terminal a | b | ... | z
  40. 40. Exemplo Um número binário pode ser constituído por apenas um bit, como 0 ou 1, ou por vários, como 110. 0 bit Para gerar 110: 1 • Você sai de número binário no diagrama, passa por bit e escolhe 0. + • Volta, passa novamente por bit sinal e escolhe 1. - • Torna a voltar, passa por bit mais uma vez e escolhe 1. sinal número bit binário Diagrama sintático
  41. 41. Python, EBNF e diagramas de sintaxe Mais adiante no curso, teremos a oportunidade de trabalhar com a EBNF para definição da sintaxe da Linguagem Python. Todo o manual de referência da linguagem, em The Python Language Reference é construído utilizando a EBNF; confira em Python v2.6.5 documentation A seguir exibiremos alguns exemplos.
  42. 42. A definição de nome em Python letra_min a b nome ::= letra_min ( letra_min | “_” )* letra_min ::= “a”...”z” z nome letra_min letra_min _
  43. 43. O comando print expr , , expr cmd_print print >> expr , expr ,
  44. 44. O comando print O comando print avalia uma expressão por vez e escreve o objeto resultante na saída padrão (veja a seguir). Se um objeto não é uma string ele é convertido antes numa string, usando as regras para conversão de strings. Então ela é escrita (a resultante ou a original). É colocado (escrito) um espaço antes que cada objeto seja (convertido e) escrito, a menos que o sistema de saída acredite que foi posicionado no início de uma linha. Este é o caso quando: 1. ainda foi escrito nenhum caractere na saída padrão 2. o último caractere escrito na saída padrão é ‘ n’ , ou 3. a última operação de escrita na saída padrão não foi um comando print. (Por essa razão, em alguns casos pode ser funcional escrever uma string vazia para a saída).
  45. 45. O comando if cmd_if if expr : seq elif expr : seq else : seq
  46. 46. O comando if O comando if é usado para execução condicional. Ele seleciona exatamente uma das sequências avaliando as expressões uma a uma até achar uma que seja verdadeira (true – veja a seção Operações booleanas para as definições de true e false); então essa sequência é executada (e nenhuma outra parte do comando if é executado ou avaliado). Se todas as expressões são falsas, é executada a sequência associada à clausula else (caso esteja presente).
  1. A particular slide catching your eye?

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

×