1 / 21

I - Noções dum compilador

I - Noções dum compilador. DEI. Gramáticas Árvores de derivação Hierarquia de Chomsky Autómatos de pilha Bibliografia aconselhada: Apontamentos. Jorge Morais. LFA 1999/2000 - 1. Gramática. DEI. Uma gramática é um vector G = (V, , P, S) onde:

thanh
Download Presentation

I - Noções dum compilador

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. I - Noções dum compilador DEI • Gramáticas • Árvores de derivação • Hierarquia de Chomsky • Autómatos de pilha • Bibliografia aconselhada: • Apontamentos Jorge Morais LFA 1999/2000 - 1

  2. Gramática DEI • Uma gramática é um vector G = (V, , P, S) onde: • V conjunto finito - variáveis (símbolos não terminais) •   conjunto finito - alfabeto • P  (V  )+ x (V  )* - conjunto de produções • S  V - símbolo inicial Jorge Morais LFA 1999/2000 - 2

  3. Produções duma gramática DEI • Uma produção representa-se habitualmente na forma  • Escrevemos que u  v, se u=xy e v=xy, com x,y  (V  )* e   P • Escrevemos que u * v (v deriva de u), se u = v ou se u  w1  w2  ...  wn-1  v, onde w1, w2, ..., wn-1  (V  )+ Jorge Morais LFA 1999/2000 - 3

  4. Linguagem duma gramática DEI • Definimos a linguagem gerada pela gramática L(G) = {u  *: S * u} • BNF (Backus NaurForm): • Variáveis são iniciados com letra maíuscula • Símbolos do alfabeto com letra minúscula •  para representar produções • 1 | 2 | ... | n (produções alternativas) •  Jorge Morais LFA 1999/2000 - 4

  5. Gramáticas sensíveis ao contexto DEI • Dizemos que uma gramática é sensível ao contexto se todas as produções são da forma: • S, ou; • , onde: • ||  ||; • S  cont() Jorge Morais LFA 1999/2000 - 5

  6. Gramáticas independentes de contexto DEI • Dizemos que uma gramática é independente de contexto se todas as produções são da forma: • A, onde: • A  V; •   (V  )* Jorge Morais LFA 1999/2000 - 6

  7. Árvore de derivação DEI • Seja G = (V, , P, S) uma gramática independente de contexto e seja S * u uma derivação em G. • Numa árvore de derivação tem-se: • o nó principal é o símbolo inicial S; • as variáveis são nós interiores; • os símbolos do alfabeto são folhas. Jorge Morais LFA 1999/2000 - 7

  8. Gramáticas regulares DEI • Dizemos que uma gramática é regular se for linear à esquerda ou à direita: Jorge Morais LFA 1999/2000 - 8

  9. Hierarquia de Chomsky DEI Jorge Morais LFA 1999/2000 - 9

  10. Exemplo 1 DEI • L(G) = {u  *: u = anbncn, n  1},G= (V, , P, S), V = {S, A, B},  = {a,b,c} • Produções: • S  aSBA | abA • AB  BA • bB  bb • bA  bc • cA  cc • aB  ab Jorge Morais LFA 1999/2000 - 10

  11. Exemplo 1 (cont.) DEI • Derivação de a2b2c2 = aabbcc: • S  aSBA  aabABA  aabBAA aabbAA  aabbcA  aabbcc Jorge Morais LFA 1999/2000 - 11

  12. Exemplo 2 DEI • L(G) = {u  *: u = an(a+b+c)bn, n  1},G= (V, , P, S), V = {S, T},  = {a, b, c} • Produções: • S  aSb | T • T  a | b | c Jorge Morais LFA 1999/2000 - 12

  13. Exemplo 2 (cont.) DEI • Derivação de a3cb3 = aaacbbb: • S  aSb  aaSbb  aaaSbbb aaaTbbb  aaacbbb Jorge Morais LFA 1999/2000 - 13

  14. Autómato de Pilha DEI • Um autómato de pilha é um vectorA = (S, , , , i, z, F), onde: • S conjunto finito de estados •   conjunto finito - alfabeto de entrada •   conjunto finito - alfabeto da pilha • : S x {} x   S x * • i  S estado inicial • z   símbolo inicialmente no topo da pilha • F  S conjunto de estados finais Jorge Morais LFA 1999/2000 - 14

  15. Linguagem do Autómato de Pilha DEI • Num autómato de pilha a linguagem pode ser reconhecida de forma equivalente por estados finais ou por pilha vazia • LF(A) = {u  *: u é o rótulo de um caminho bem sucedido} • LV(A) = {u  *: u é o rótulo de um caminho que termina com a pilha vazia} Jorge Morais LFA 1999/2000 - 15

  16. Exemplo DEI • L(A) = {u  *: u = x 3 xi, x é uma sequência de 1’s e 2’s e xi é a mesma sequência invertida } • A = (S, , , , i, z, F) • S={i,m,f}, •  = {1, 2, 3}, •  = {a, b, z} • F ={f} Jorge Morais LFA 1999/2000 - 16

  17. Exemplo (cont.) DEI •  ={ (i,1,z,i,az), (i,1,a,i,aa), (i,1,b,i,ab), (i,2,z,i,bz), (i,2,a,i,ba), (i,2,b,i,bb), (i,3,z,m,z), (i,3,a,m,a), (i,3,b,m,b), (m,1,a,m, ), (m,2,b,m,), (m,,z,f,)} Jorge Morais LFA 1999/2000 - 17

  18. Equivalência entre linguagens DEI • As linguagens reconhecidas por autómatos finitos, expressões regulares e gramáticas regulares são todas do tipo 3, isto é, regulares. • As linguagens reconhecidas por gramáticas independentes de contexto e autómatos de pilha são do tipo 2, isto é, independentes de contexto. Jorge Morais LFA 1999/2000 - 18

  19. Prova construtiva DEI • Para determinar que uma linguagem é do tipo 3 ou do tipo 2, basta usar uma das formas anteriores. • Para provar que não é do tipo 3 ou 2, é preciso provar que não é possível encontrar nenhuma dessas formas. Jorge Morais LFA 1999/2000 - 19

  20. Lema de repetição para LR’s DEI • Se L é uma linguagem regular, existe um inteiro n tal que todo o x  L com |x|  n pode ser escrito na forma x = uvw com: |uv|  n |v|  1  m  0 a palavra uvmw pertence a L A constante n não excede o número de estados do menor autómato finito que reconhece L. Jorge Morais LFA 1999/2000 - 20

  21. Lema de repetição para LIC’s DEI • Se L é uma linguagem independente de contexto, existe um inteiro n apenas dependente de L tal que, se z  L e |z|  n, z pode ser escrito da forma z = uvwxy onde: |vx|  1 |vwx|  n  i  0 a palavra uviwxiy pertence a L Jorge Morais LFA 1999/2000 - 21

More Related