Aula 3 linguagens e gramaticas

3,160 views

Published on

Published in: Education
1 Comment
2 Likes
Statistics
Notes
No Downloads
Views
Total views
3,160
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
92
Comments
1
Likes
2
Embeds 0
No embeds

No notes for slide

Aula 3 linguagens e gramaticas

  1. 1. Curso: Ciência da Computação Turma: 4º/5º SérieAspectos Teóricos da Computação Aula 3 Linguagens e Gramáticas
  2. 2. LinguagemO Dicionário Aurélio define linguagem como:o uso da palavra articulada ou escrita como meio de expressão e comunicação entre as pessoas.Entretanto, esta definição não é suficientemente precisa para permitir o desenvolvimento matemático de uma teoria baseada em linguagens.Precisamos de uma definição mais objetiva e ampla.Uma linguagem é composta de de palavras que formam um alfabeto. da Computação Aspectos Teóricos 2
  3. 3. AlbabetoUm alfabeto é um conjunto finito de símbolos ou caracteres.Portanto: ● Um conjunto infinito não é um alfabeto; ● o conjunto vazio é um alfabeto.Exemplo: {a,b,c} ou {} são alfabetos N não é um alfabeto {a,b,aa,ab,bb,ba,bb....} não é um alfabeto Aspectos Teóricos da Computação 3
  4. 4. Alfabeto de uma Linguagem de ProgramaçãoO alfabeto de uma linguagem de programação como Pascal é o conjunto de todos os símbolos usados na construção de programas, incluindo letras, dígitos, caracteres especiais, espaço. Aspectos Teóricos da Computação 4
  5. 5. PalavraUma Palavra, Cadeia de Caracteres ou Sentença sobre um alfabeto é uma sequência finita de símbolos do alfabeto justapostos.O símbolo ε denota a palavra ou cadeia vazia. Aspectos Teóricos da Computação 5
  6. 6. Prefixo, Sufixo e SubpalavraUm Prefixo ou Sufixo de uma palavra é qualquer sequência inicial respectivamente final de símbolos da palavra.Uma Subpalavra é qualquer sequência de símbolos contíguos da palavra.Exemplos:abcb é uma palavra do alfabeto {a,b,c}Relativamente à palavra abcb, vale que: ε , a, ab, abc, abcb são todos os prefixos; ε, b, cb, bcb, abcb são todos os sufixo; Qualquer prefixo ou sufixo é uma subpalavra; Aspectos Teóricos da Computação 6
  7. 7. Palavra: Linguagem de ProgramaçãoEm uma linguagem de programação como Pascal, uma palavra é um programa. Aspectos Teóricos da Computação 7
  8. 8. ConcatenaçãoA Concatenação de Palavras ou simplesmente Concatenação é uma operação binária definida sobre um conjunto de palavras, a qual associa a cada par de palavras uma palavra formada pela justaposição de primeira com a segunda.Propriedades suponha v,w,t palavras quaisquer a) Associativa. v(wt) = (vw)t b) Elemento neutro. εw = wεExemplo: Suponha o alfabeto Σ = {a,b}. Então, para as palavras v = baaaa e w = bb vale que: vw = baaaabb vε = baaaaConcatenação sucessiva de uma palavra..Se w = a o que seria w5? Aspectos Teóricos da Computação 8
  9. 9. Concatenação SucessivaA Concatenação Sucessiva é representada na forma de um expoente,wn onde n representa o número de concatenações sucessivas é definida indutivamente a partir da operação de concatenção binária, como segue:w0 = εwn = wwn-1 n>0Exemplo Seja w uma palavra e a um símbolo, Então: w3 = www w1 = w a5 = aaaaa an = aaaa..a (o símbolo repetido n vezes) Aspectos Teóricos da Computação 9
  10. 10. AlfabetoSe Σ representa o alfabeto, então:Σ* denota o conjunto de todas as palavras possíveis sobre Σ.Σ+ denota Σ* - {ε }Conjunto de todas as palavras.Seja Σ um alfabeto. Então o conjunto de toda as palavras Σ* é indutivamente definido como segue:a. Base da indução: ε є Σ* para qualquer x є ∑, vale x є ∑*b. Passo da indução: Se u e v são palavras de ∑* então a concatenação uv é uma palavra de ∑* Aspectos Teóricos da Computação 10
  11. 11. Exemplo: Conjunto de todas as palavras● Se ∑ = {a,b}, então: ● ∑+ = {a,b,aa,ab,ba,bb,aaa,...} ● ∑* = {ε, a,b,aa,ab,ba,bb,aaa,...} Aspectos Teóricos da Computação 11
  12. 12. Comprimento, tamanho de uma palavra● O comprimento ou Tamanho de uma palavra w, representado por |w|, é o número de símbolos que compõem a palavra. Portanto, para um dado alfabeto ∑ , comprimento é uma função com domínio em ∑* e codomínio em N. a. |abc| = 3 b. | ε | = 0 Aspectos Teóricos da Computação 12
  13. 13. Linguagem FormalUma linguagem formal ou simplesmenteLinguagem L sobre um alfaberto ∑ é umconjunto de palavras sobre ∑, ou seja:L ⊆ ∑* Aspectos Teóricos da Computação 13
  14. 14. Exemplo de Linguagem Formal● O conjunto Ø e o conjunto formado pela palavra vazia { ε } são linguagens sobre qualquer alfabeto. Obviamente, vale que: Ø≠{ε}● Os conjuntos ∑* e ∑+ são linguagens sobre um alfabeto ∑ qualquer. Obviamente, vale que: ∑* ≠ ∑+ Aspectos Teóricos da Computação 14
  15. 15. Exercício● Suponha o alfabeto ∑ = {a,b}. Então, o conjunto de palíndromos (palavras que tem a mesma leitura da esquerda para a direita e vice-versa) sobre ∑ é um exemplo de linguagem infinita. Quais são os elementos dessa linguagem? Aspectos Teóricos da Computação 15
  16. 16. Exemplo de Linguagem Formal● Suponha o alfabeto ∑ = {a,b}. Então, o conjunto de palíndromos (palavras que tem a mesma leitura da esquerda para a direita e vice-versa) sobre ∑ é um exemplo de linguagem infinita. Assim, são palavras dessa linguagem: , a, b, aa, bb, aaa, aba, bab, bbb, aaa, ... Aspectos Teóricos da Computação 16
  17. 17. Exemplo: Linguagem Formal: Linguagem de Programação● Um linguagem de programação como C é formalmente definida pelo conjunto de todos os programas (palavras) da linguagem. Aspectos Teóricos da Computação 17
  18. 18. GramáticaComo definir todos os programas de umadeterminada linguagem se torna inviável pois éinfinito criou-se uma nova maneira de especificarlinguagem de maneira finita, a gramática. Uma gramática é, basicamente, um conjunto finito de regras as quais, quando aplicadas sucessivamente, geram palavras. O conjunto de todas a palavras geradas por uma gramática define as linguagens. Aspectos Teóricos da Computação 18
  19. 19. GramáticaExemplo de Gramática: S→A A→0A1 A→εUma gramática consiste de uma coleção de regras queespecificam como derivar strings de uma linguagem.As regras de produção envolvem símbolos da linguagem(ou terminais) e variáveis (ou símbolos não-terminais),que representam conjuntos de strings.Uma das variáveis é distinguida como símbolo inicial. Aspectos Teóricos da Computação 19
  20. 20. Exemplo de Derivação de StringSeja G1 a seguinte gramática: S→A A → 0A1 A →εExemplo de derivação de string usando G1 : S ⇒ A ⇒ 0A1 ⇒ 00A11 ⇒ 000A111 ⇒ 000111A sequência de substituições é chamada de derivação.O conjunto de todos os strings de terminais gerados desta formaconstitui a linguagem especificada pela gramática.Escrevemos L(G) para denotar a linguagem gerada pela gramáticaG. Portanto, L(G1 ) = {0n1n | n ≥ 0 }000111 é chamada de string terminal pois não tem como substituir maisnenhuma variável nela. Aspectos Teóricos da Computação 20
  21. 21. GramáticaUma gramática de Chomsky, Gramática Irrestrita ou simplesmenteGramática é uma quadrupla ordenada: G = {V, ∑,P,S} na qual:a. V, um conjunto finito de símbolos variáveis ou não terminais;b. ∑, um conjunto finito de símbolos terminais ou constantes disjunto deV;c. P: (V U ∑ )+ → (V U ∑ )* é uma relação finita (ou seja, P é um conjuntofinito de pares), denominada de Relação de Produções ou simplesmenteproduções. Cada par da relação é denominado de regra de produção ousimplesmente produção; P pode ser considerada a função que leva umelemento x a um elemento y.d. S, um elemento distinguido de V denominado símbolo inicial ouvariável inicial. Aspectos Teóricos da Computação 21
  22. 22. Exemplo de GramáticaG = ({S, A}, {0, 1}, R, S) onde R: S→A A → 0A1 A→ε Aspectos Teóricos da Computação 22
  23. 23. Exercício de GramáticaFormule uma outra gramáticabaseada na gramática do exemploG = ({S, A}, {0, 1}, R, S) onde R: S→A A → 0A1 A→ε15 minutos em grupo Aspectos Teóricos da Computação 23
  24. 24. Derivação● Se u, v , w ∈ (V ∪ ∑ )∗ (i.e., são strings de variáveis e terminais) e α → β ∈ R (i.e., é uma regra da gramática) então dizemos que uαv deriva uβv, escrito como uαv ⇒ uβv .● Podemos também dizer que uβv é derivado diretamente de uαv usando a regra α → β● u ⇒k v se existe uma sequência finita u0 , u1 , . . . , uk ∈ (V ∪ ∑ )∗ , para k > 0, tal que u = u 0 ⇒ u1 ⇒ . . . ⇒ u k = v● Também dizemos que u0 , u1 , . . . , uk é uma derivação de v a partir de u● Escrevemos u ⇒∗ v se u = v ou u ⇒k v para algum k > 0 Aspectos Teóricos da Computação 24
  25. 25. Linguagem Especificada por uma GramáticaSeja G = (V , Σ, R, S) uma gramática.A linguagem especificada por G é L(G) = {w ∈ Σ∗ | S ⇒∗ w } Aspectos Teóricos da Computação 25
  26. 26. Tipos de Regras Aspectos Teóricos da Computação 26
  27. 27. Tipos de Gramática – Hierarquia de Chomsky Aspectos Teóricos da Computação 27
  28. 28. NotaçãoPara distinguir não-terminais de terminais,frequentemente usamos não-terminais entre < > eterminais entre aspas ” ”.Se duas ou mais regras têm o mesmo ladoesquerdo, por exemplo:A → 0A1 e A →εpodemos escrever, de forma mais compactaA → 0A1 | ε.Obs. Só use essa regra quando tudo estivermuito claro na sua cabeça. Aspectos Teóricos da Computação 28
  29. 29. Gramática Livre de Contexto G2A gramática G2 a seguir especifica um fragmento da língua inglesa:<SENTENCE> → <NOUN_PHRASE><VERB_PHRASE><NOUN_PHRASE> → <CP_NOUN> | <CP_NOUN><PREP_PHRASE><VERB_PHRASE> → <CP_VERB> | <CP_VERB><PREP_PHRASE><PREP_PHRASE> → <PREP><CP_NOUN><CP_NOUN> → <ARTICLE><NOUN><CP_VERB> → <VERB> | <VERB><NOUN_PHRASE><ARTICLE> → a | the<NOUN> → boy | girl | flower<VERB> → touches | likes | sees<PREP> → with Aspectos Teóricos da Computação 29
  30. 30. Gramática Livre de Contexto G2Note que:A CFG(Gramática livre de contexto) G2 tem 10 variáveis (escritas emletras maiúsculas e entra < >) e 9 não-terminais (escritos no alfabetopadrão), mais um caractere de espaço.A CFG G2 tem 18 regras.Exemplos de strings que pertencem a L(G2):a boy seesthe boy sees a flowera girl with a flower likes the boy Aspectos Teóricos da Computação 30
  31. 31. Exemplo de Derivação em G2<SENTENCE> ⇒ <NOUN_PHRASE><VERB_PHRASE> ⇒ <CP_NOUN><VERB_PHRASE> ⇒ <ARTICLE><NOUN><VERB_PHRASE> ⇒ a <NOUN><VERB_PHRASE> ⇒ a boy <VERB_PHRASE> ⇒ a boy <CP_VERB> ⇒ a boy <VERB> ⇒ a boy sees Aspectos Teóricos da Computação 31
  32. 32. Regras LinearesSeja G = (V , Σ, R, S) uma CFG e A → w ∈ R,onde A ∈ V . ● r é linear se w ∈ Σ∗VΣ∗ ● r é linear à direita se w ∈ Σ∗V ● r é linear à esquerda se w ∈ VΣ∗ ● r é terminal se w ∈ Σ∗ Aspectos Teóricos da Computação 32
  33. 33. Exemplo de Gramática Linear à Direita G = ({A, B}, {0, 1}, {A → 0A | B, B → 1B | ε }, A) Aspectos Teóricos da Computação 33
  34. 34. Exemplo de Gramática Linear à Direita G = ({A, B}, {0, 1}, {A → 0A | B, B → 1B | ε}, A) Exemplo de derivação em G: A ⇒ 0A ⇒ 00A ⇒ 00B ⇒ 001B ⇒ 0011B ⇒ 00111B ⇒ 00111● Qual é a linguagem especificada por G? Aspectos Teóricos da Computação 34
  35. 35. Exemplo de Gramática Linear à Direita G = ({A, B}, {0, 1}, {A → 0A | B, B → 1B | ε}, A) Exemplo de derivação em G: A ⇒ 0A ⇒ 00A ⇒ 00B ⇒ 001B ⇒ 0011B ⇒ 00111B ⇒ 00111● Qual é a linguagem especificada por G? L(G) = 0*1* Aspectos Teóricos da Computação 35
  36. 36. Para a Próxima AulaLer capítulo 2 do livro texto. Aspectos Teóricos da Computação 36

×