Conceitos de Análise Sintática
|
|
|
- Wagner Herman Terra Azevedo
- 8 Há anos
- Visualizações:
Transcrição
1 Conceitos de Análise Sintática Pro.f. Marcus Ramos UNIVASF Atualizado em 28 de outubro de 2016
2 The Theory of Parsing, Translation and Compiling Volume I: Parsing Alfred V. Aho Jeffrey D. Ullman Prentice Hall 1972 Programming Language Processors in Java Compilers and Interpreters D. A. Watt D. F. Brown Pearson Education 2000
3 Os movimentos do reconhecedor correspondem ao uso de derivações mais à esquerda; A árvore de sintaxe é montada de cima para baixo (da raiz em direção às folhas); Caracteriza a classe das gramáticas (e linguagens) LL(k); Leitura do arquivo-fonte da esquerda para a direita; Emprego de derivações mais à esquerda (na ordem direta); Uso de no máximo k símbolos de lookahead.
4 Os movimentos do reconhecedor correspondem ao uso de derivações mais à direita; A árvore de sintaxe é montada de baixo para cima (das folhas em direção à raiz); Caracteriza a classe das gramáticas (e linguagens) LR(k); Leitura do arquivo-fonte da esquerda para a direita; Emprego de derivações mais à direita (na ordem inversa), ou seja, reduções mais à esquerda (na ordem direta); Uso de no máximo k símbolos de lookahead.
5 Seja G=(V,, P, S) uma gramática livre de contexto, V * e k inteiro. first k ( ) = {w * ( * w e w <k) ou ( * wx e w =k para algum x)} first k ( ) é um conjunto de cadeias de símbolos terminais. Ele é formado por: prefixos de comprimento k de todas as cadeias que podem ser geradas a partir de pela aplicação das regras de G; todas as cadeias de comprimento menor que k que são geradas por pela aplicação das regras de G.
6 Seja G=(V,, P, S) uma gramática livre de contexto. G é dita LL(k), para algum inteiro k, se, para quaisquer duas seqüências de derivações mais à esquerda: 1. S * wa w * wx 2. S * wa w * wy tais que first k (x) = first k (y), isso implicar =. A escolha da derivação para o símbolo não-terminal A na forma sentencial wa é feita de maneira unívoca a partir da análise dos k primeiros símbolos terminais gerados por A. Em outras palavras: sempre que houver uma única regra em G que permita gerar os k primeiros símbolos terminais de x a partir de A na forma sentencial wa.
7 Considere a seqüência de derivações mais à esquerda e o uso da regra A : S * wa w * wx * wxy (w,x,y *, S, A N e V * ) S A w x y k símbolos
8 Sentence::= Subject Verb Object. Subject ::= I a Noun the Noun Noun ::= rat car dog Verb ::= is see sees like Object ::= me a Noun the Noun
9 the cat sees a dog. Sentence Subject Verb Object. O lookahead the é usado para selecionar a regra: Sentence Subject Verb Object.
10 the cat sees a dog. Sentence Subject Verb Object.
11 the cat sees a dog. Sentence Subject Verb Object the Noun Verb Object. O lookahead the é usado para selecionar a regra: Subject the Noun
12 the cat sees a dog. Sentence Subject Verb Object. the Noun
13 the cat sees a dog. Sentence Subject Verb Object the Noun Verb Object. the cat Verb Object. O lookahead cat é usado para selecionar a regra: Noun cat
14 the cat sees a dog. Sentence Subject Verb Object. the Noun cat
15 the cat sees a dog. Sentence Subject Verb Object the Noun Verb Object. the cat Verb Object. the cat sees Object. O lookahead sees é usado para selecionar a regra: Verb sees
16 the cat sees a dog. Sentence Subject Verb Object. the Noun sees cat
17 the cat sees a dog. Sentence Subject Verb Object the Noun Verb Object. the cat Verb Object. the cat sees Object. the cat sees a Noun. O lookahead a é usado para selecionar a regra: Object a Noun
18 the cat sees a dog. Sentence Subject Verb Object. the Noun sees a Noun cat
19 the cat sees a dog. Sentence Subject Verb Object the Noun Verb Object. the cat Verb Object. the cat sees Object. the cat sees a Noun. the cat sees a dog. O lookahead dog é usado para selecionar a regra: Noun dog
20 the cat sees a dog. Sentence Subject Verb Object. the Noun sees a Noun cat dog
21 Em outras palavras: sempre que houver uma única regra em G que permite gerar os k primeiros símbolos terminais de w a partir de A na forma sentencial wa. Seja G=(V,, P, S) uma gramática livre de contexto. G é dita LR(k), para algum inteiro k, se, para quaisquer duas seqüências de derivações mais à direita: 1. S * Aw w 2. S * Bx y tais que first k (w) = first k (y), isso implicar =, A=B e x=y. Uma vez identificada, a escolha da redução para a cadeia é feita de maneira unívoca a partir da análise dos k primeiros símbolos terminais de w.
22 Considere a seqüência de reduções mais à esquerda: w * X * S (, *, S, X N e, V * ) S X k símbolos
23 the cat sees a dog. Nenhuma redução é possível com o símbolo the apenas; O cursor avançar para o próximo símbolo.
24 the cat sees a dog. cat é reduzido para Noun ; O cursor avança para o próximo símbolo. the cat sees a dog. the Noun sees a dog.
25 the cat sees a dog. the Noun pode ser reduzido para Subject ou para Object ; O lookahead sees, no entanto, ocorre apenas depois de Subject ; Assim, a redução é feita para Subject ; O cursor avança para o próximo símbolo. the cat sees a dog. the Noun sees a dog. Subject sees a dog.
26 the cat sees a dog. sees é reduzido para Verb ou para Object ; O cursor avança para o próximo símbolo. the cat sees a dog. the Noun sees a dog. Subject sees a dog. Subject Verb a dog.
27 the cat sees a dog. sees é reduzido para Verb ou para Object ; O cursor avança para o próximo símbolo. the cat sees a dog. the Noun sees a dog. Subject sees a dog. Subject Verb a dog.
28 Noun the cat sees a dog.
29 Subject Noun the cat sees a dog.
30 Subject Noun Verb the cat sees a dog.
31 Subject Noun Verb Noun the cat sees a dog.
32 Sentence Subject Object. Noun Verb Noun the cat sees a dog
33 LL(k): Leitura da entrada da esquerda para a direita; Ordem direta das derivações mais à esquerda; LR(k): Leitura da entrada da esquerda para a direita; Ordem inversa das derivações mais à direita (ou ordem direta das reduções mais à esquerda); RR(k): Leitura da entrada da direita para a esquerda; Ordem direta das derivações mais à direita; RL(k): Leitura da entrada da direita para a esquerda; Ordem inversa das derivações mais à esquerda (ou ordem direta das reduções mais à direita).
34 LLC LR(k) LL(k)
35 Gramática LL(k) é aquela que gera uma linguagem cujas sentenças podem ser analisadas de forma descendente, ou topdown ; Gramática LR(k) é aquela que gera uma linguagem cujas sentenças podem ser analisadas de forma ascendente, ou bottom-up ; Uma linguagem é dita LL(k) (ou LR(k)) se existir pelo menos uma gramática LL(k) (ou LR(k)) que a gere.
36 Nem toda LLC pode ser analisada de forma determinística; O maior subconjunto das LLCs que podem ser analisadas de forma determinística corresponde ao conjunto das linguagens LR(k); Toda linguagem que é analisada de forma descendente pode também ser analisada de forma ascendente; Nem toda linguagem que é analisada de forma ascendente por ser analisada de forma descendente; As linguagens regulares formam um subconjunto próprio das linguagens LL(k); Gramáticas LL(k) e LR(k) são não-ambíguas.
37 Uma CFG G=(V,, P, S) é dita LL(k) se e somente se: Para cada forma sentencial wa tal que S * wa por meio do uso exclusivo de derivações mais à esquerda, se A, A P, então first k ( ) = first k ( ) implicar =. Em outras palavras, a escolha da substituição a ser aplicada ao símbolo não-terminal A pode ser feita de forma determinística levando-se em conta a configuração corrente do reconhecedor (wa ) e os k primeiros símbolos terminais gerados pela cadeia A.
38 Com base na definição anterior: Suponha A 1... n Determinar todas as formas sentenciais wa em que o não-terminal A possa comparecer; Verificar, para cada uma delas, se first k ( i ) first k ( j ) = para 1 i, j n, i j.
39 Dificuldades decorrentes: Determinar todas as formas sentenciais wa em que A possa comparecer; Determinar first k ( i ), especialmente quando i não gera cadeias de terminais de comprimento k.
40 Exemplo: S ax bx X cx d Considere a derivação do não-terminal X. Em quais formas sentenciais ele comparece? Resposta: ax, bx, acx, bcx,accx, bccx, acccx, bccccx etc.
41 ax: Se X cx, então ax acx e first 1 (cx)={c} Se X d, então ax ad e first 1 (d)={d} Como {c} {d}=, então a condição LL(1) é válida para a forma sentencial ax; bx: Se X cx, então bx bcx e first 1 (cx)={c} Se X d, então bx bd e first 1 (d)={d} Como {c} {d}=, então a condição LL(1) é válida para a forma sentencial bx;
42 Situações idênticas acontecem com todas as demais formas sentenciais (acx, bcx,accx, bccx, acccx, bccccx etc); Portanto: Forma sentencial ax, não-terminal X, símbolo corrente c: devese escolher a regra X cx Forma sentencial ax, não-terminal X, símbolo corrente d: devese escolher a regra X d Forma sentencial bx, não-terminal X, símbolo corrente c: devese escolher a regra X cx Forma sentencial bx, não-terminal X, símbolo corrente d: devese escolher a regra X d etc.
43 Por outro lado, cabe observar que a escolha da primeira regra (X cx) gera cadeias que começam sempre pelo símbolo c, independentemente da forma sentencial considerada; da mesma forma, a escolha da segunda regra (X d) gera cadeias que iniciam com d ; De fato, na lista anterior pode-se perceber que a forma sentencial corrente é irrelevante para se tomar a decisão correta sobre a regra que deve ser aplicada ao não-terminal A; Isso sugere para esse caso, portanto, uma simplificação do processo, desconsiderando a forma sentencial corrente e levando em conta apenas o símbolo não-terminal que está sendo derivado e o lookahead.
44 Ou seja (válido para esse caso apenas): A escolha da regra X cx poderá ser feita sempre que o símbolo corrente for c, assim como a escolha será pela regra X d quando o símbolo corrente for d, sem precisar levar em conta a forma sentencial em que A está sendo derivado.
45 Exemplo: S aaab babb A a ab B ab a Considere a derivação do não-terminal A. Em quais formas sentenciais ele comparece? Resposta: aaab e babb.
46 aaab: Se A a, então aaab aaab e first 1 (aab)={a} Se A ab, então aaab aabab e first 1 (abab)={a} Como {a} {a}, então a condição LL(1) não é válida para a forma sentencial aaab; babb : Se A a, então babb babb e first 1 (abb)={a} Se A ab, então babb babbb e first 1 (abbb)={a} Como {a} {a}, então a condição LL(1) não é válida para a forma sentencial babb;
47 aaab: Se A a, então aaab aaab e first 2 (aab)={aa} Se A ab, então aaab aabab e first 2 (abab)={ab} Como {aa} {ab}=, então a condição LL(2) é válida para a forma sentencial aaab; babb : Se A a, então babb babb e first 2 (abb)={ab} Se A ab, então babb babbb e first 1 (abbb)={ab} Como {ab} {ab}, então a condição LL(2) não é válida para a forma sentencial babb;
48 babb : Se A a, então babb babb e first 3 (abb)={aba} Se A ab, então babb babbb e first 1 (abbb)={abb} Como {aba} {abb}=, então a condição LL(3) é válida para a forma sentencial babb; A derivação do não-terminal A requer o lookahead de, no máximo, 3 símbolos.
49 Em resumo: aaab com A a {aa} (para k=2) ou {aaa} (para k=3) aaab com A ab {ab} (para k=2) ou {aba} (para k=3) babb com A a {aba} babb com A ab {abb}
50 Seria possível desconsiderar a forma sentencial corrente nesse caso? aaab com A a {aaa} aaab com A ab {aba} {aaa,aba} {aba,abb} babb com A a {aba} babb com A ab {abb}
51 Como {aaa,aba} {aba,abb}, nesse caso não seria possível fazer uma escolha determinística da regra a ser aplicada, sem levar em consideração a forma sentencial corrente. Uma alternativa seria verificar se a condição LL(k) seria verificada para valores de k 4, sem levar em conta a informação de forma sentencial corrente.
52 k=4 aaab com A a {aaa } aaab com A ab {abaa} {aaa,abaa,aba } {abaa,abba} babb com A a {abaa, aba } babb com A ab {abba}
53 k=5 aaab com A a {aaa, aaaa,aaaaa} aaab com A ab {abaa, abaaa} {aaa, aaaa,aaaaa, aba,abaa,abaaa} {abaa, abaaa, abba,abbaa} babb com A a {aba,abaa,abaaa} babb com A ab {abba,abbaa}
54 Obtendo uma gramática equivalente LL(4): A a ab B aa* S a (a ab) aaa* b (a ab) baa* S (aa aab) aaa* (ba bab) baa* S aaaaa* aabaaa* babaa* babbaa* first 4 (aaaaa*) = {aaaa} first 4 (aabaaa*) = {aaba} first 4 (babaa* ) = {baba} first 4 (babbaa*) = {babb}
55 Obtendo uma gramática equivalente LL(1): S aaaaa* aabaaa* babaa* babbaa* S a (aaaa* abaaa*) b (abaa* abbaa*) S a (a (aaa* baaa*)) b (a (baa* bbaa*)) S a (a (aaa* baaa*)) b (a (b (aa* baa*)))
56 Quando então usar ou não usar a informação da forma sentencial corrente para fazer a escolha da regra a ser aplicada? Considerar o conjunto de formas sentenciais em que A comparece: i A j, 1 i m, 1 j n Considerar A 1... k Seja X 1 = first 1 ( 1 1 )... first 1 ( 1 m )... Seja X k = first 1 ( k 1 )... first 1 ( k m ) Se X i X j =, 1 i,j k, i j, então a forma sentencial é irrelevante para a tomada de decisão.
57 Seja G=(V,, P, S) uma gramática livre de contexto, V * e k inteiro. follow k ( ) = {w S * e w first k ( )} follow k ( ) é o conjunto das cadeias de símbolos terminais que comparecem imediatamente à direita da cadeia, consideradas todas as formas sentenciais geradas por G em que faça parte.
58 Com base na definição anterior: A 1... n Verificar se first k ( i.follow k (A)) first k ( j.follow k (A)) =, 1 i, j n, i j.
59 Gramáticas LL(1) simples: Não existem regras vazias; Todas as regras começam com um símbolo terminal; As regras de um mesmo não-terminal iniciam com símbolos terminais distintos. A n n com i j para i j e i, 1 i n.
60 Gramáticas LL(1) simples: S as S ba A d A cca S: first 1 (as) first 1 (ba)={a} {b}= A: first 1 (d) first 1 (cca)={d} {c}=
61 Gramáticas LL(1) sem regras vazias: A n first 1 ( i ) first 1 ( j ) =, i j.
62 Gramáticas LL(1) sem regras vazias: S S# S ABe A db as c B AS b S : first 1 (S#)=first 1 (ABe#)={a,c,d} S: first 1 (ABe)={a,c,d} A: first 1 (db)={d}, first 1 (as)= {a}, first 1 (c)={c} B: first 1 (AS)=first 1 (dbs) first 1 (ass) first 1 (cs)={d,a,c} first 1 (b)={b}
63 Gramáticas LL(1) com regras vazias: A n first 1 ( i.follow (A)) first 1 ( j.follow (A)) =, i j. ou ainda: first 1 ( i ) first 1 ( j ) =, i j, e, se i *, então first 1 ( j ) follow 1 (A) =, i j. Se o símbolo corrente pertence ao follow 1 (A), a regra A deve ser a escolhida.
64 Gramáticas LL(1) com regras vazias: S A# A ib e B SB S [ec].i C ec S : first 1 (A#)={i} A: first 1 (ib e)={i} B: first 1 (SB) follow 1 (B)={[,.} { }= S: first 1 ([ec]) first 1 (.i)={[} {.}= C: first 1 (ec) follow 1 (C)={[e} {]}=
65 Suponha que σ 1 comparece à direita de X nas formas sentenciais geradas por G, sem uso da recursão à esquerda, e que X seja recursivo à esquerda: S X σ 1 X X σ 2 σ 3 As formas sentenciais em que X pode comparecer são: X σ 1 X σ 2 σ 1 X σ 2 σ 2 σ 1 X σ 2 σ 2 σ 2 σ 1 X σ 2 σ 2 σ 2 σ 2 σ 1... Qualquer que seja o caso (genericamente, X σ 2 k-1 σ 1 ), e qualquer que seja o valor de k, não é possível escolher de forma unívoca uma única substituição para X (X σ 2 ou σ 3 ), pois as formas sentenciais resultantes X σ 2 σ 2 k-1 σ 1 e σ 3 σ 2 k-1 σ 1 possuem sempre a cadeia σ 3 σ 2 k-1 como elemento comum dos conjuntos first k () das mesmas.
66 Senão vejamos: Suponha que k=1. Então, se a forma sentencial corrente for X σ 1 e o lookahead for σ 3, não será possível determinar a regra a ser aplicada. As novas formas sentenciais nestes casos serão, respectivamente, X σ 2 σ 1 e σ 3 σ 1, e σ 3 é o elemento comum aos dois conjuntos first 1 ; Suponha que k=2. Então, se a forma sentencial corrente for X σ 2 σ 1 e o lookahead for σ 3 σ 2, não será possível determinar a regra a ser aplicada. As novas formas sentenciais nestes casos serão, respectivamente, X σ 2 σ 2 σ 1 e σ 3 σ 2 σ 1, e σ 3 σ 2 é o elemento comum aos dois conjuntos first 2 ; Suponha que k=3. Então, se a forma sentencial corrente for X σ 2 σ 2 σ 1 e o lookahead for σ 3 σ 2 σ 2, não será possível determinar a regra a ser aplicada. As novas formas sentenciais nestes casos serão, respectivamente, X σ 2 σ 2 σ 2 σ 1 e σ 3 σ 2 σ 2 σ 1, e σ 3 σ 2 σ 2 é o elemento comum aos dois conjuntos first 3 ; E assim por diante, para qualquer valor de k que se considere.
67 S Xc X Xb a Suponha que X é o não-terminal mais à esquerda que deve ser derivado em αxβ: Lookahead (k) Primeiros (k) símbolos possíveis de Xβ Regras possíveis para o caso vermelho 1 a X Xb ou X a 2 ac, ab X Xb ou X a 3 ac, abc, abb X Xb ou X a 4 ac, abc, abbc, abbb X Xb ou X a n..., ab n-1,... X Xb ou X a
68 S Xc X Xb a Suponha que X é o não-terminal mais à esquerda que deve ser derivado: k=1 (a) k=2 (ac ou ab) k=3 (ac, abc ou abb) k=4 (ac, abc, abbc ou abbb) k=5 (ac, abc, abbc, abbbc ou abbbb) k=6 (ac, abc, abbc, abbbc, abbbbc ou abbbbb) k=7 (ac, abc, abbc, abbbc, abbbbc, abbbbbc ou abbbbbb) Sempre que os k próximos símbolos forem da forma ab k-1, não será possível escolher de forma unívoca a aplicação da regra X Xb ou da regra X a, pois não se sabe se o próximo símbolo é um c ou um b.
69 S Xc X Xb a Em outras palavras: Qualquer que seja o valor de k, será sempre possível se deparar com um lookahead ab k-1, de modo que não será possível determinar de forma unívoca a regra a ser aplicada (X Xb ou X a) ao nãoterminal X em questão; Sempre existe um lookahead cujo comprimento é maior do que o valor de k considerado, o qual impede que a escolha seja feita de forma determinística; Não é possível fazer uma análise determinística em todos os casos e a gramática não é LL(k) para nenhum valor de k.
70 Gramáticas com recursão à esquerda não são LL(k). A eliminação das recursões à esquerda pode permitir a obtenção de uma gramática LL(k), mas o resultado não é garantido: S Xc X Xb a S Xc X ay Y by ou simplesmente: S ab * c
71 Considere a GLC G: X m X n... X p p1 p2... pq first 1 ( 1i ) first 1 ( 1j ) =, 1 i, j m, i j. first 1 ( 2i ) first 1 ( 2j ) =, 1 i, j n, i j.... first 1 ( pi ) first 1 ( pj ) =, 1 i, j q, i j. e, além disso, se ij *, então: first 1 ( ik ) follow 1 (X i ) =, k j.
72 S bs S ba A d A cca Não é LL(1) mas é LL(2): S: first 2 (bs) first 2 (ba)={bb} {bd,bc}= A: first 1 (d) first 1 (cca)={d} {c}=
73 Pode ser convertida na gramática LL(1) equivalente usando fatoração à esquerda: S b (S A) A d A cca S: first 1 (b(s A))={b} (): first 1 (S) first 1 (A)={b} {c,d}= A: first 1 (d) first 1 (cca)={d} {c}= O parêntesis representa um não-terminal implícito (X): S bx X S A A d cca
74 S ax S ay X bx c Y dy e Não é LL(1) mas é LL(2): S: first 2 (ax) first 2 (ay)={ab,ac} {ad,ae}= X: first 1 (bx) first 1 (c)={b} {c}= Y: first 1 (dy) first 1 (e)={d} {e}=
75 Fatorando à esquerda e agrupando: S a(x Y) X bx c A dy e Torna-se LL(1), pois: (): first 1 (X) first 1 (Y)={b,c} {d,e}=
76 S axe X bxy c Y dy c Não é LL(1), pois: X: first 1 (bxy)={b} first 1 (c)={c} follow 1 (X)={c,d,e}
77 Pode ser convertida para LL(1) através da manipulação: S a (bxd*ce ce e) Pois: (): first 1 (bxd * ce)={b} first 1 (ce)={c} first 1 (e)={e}
78 S axe X bxy c Y dy f É LL(1), pois: X: first 1 (bxy)={b} first 1 (c)={c} follow 1 (X)={f,d,e}
79 Dada uma gramática qualquer, verificar se a mesma é LL(1); Em caso negativo, tentar obter uma gramática LL(1) equivalente; Uma vez obtida a gramática LL(1) equivalente, usar um método para construção sistemática do analisador sintático; Em caso de insucesso, verificar se a mesma é LR(k) e aplicar os métodos correspondentes. G não LL(1) G LL(1) Analisador sintático determinístico
80 Conversão: Fatoraçõesà esquerda; Substituições; Eliminação de recursões à esquerda.
81 Provar que não é LL(1): S S# S aaa A abs c
82 Provar que é LL(1): S A# A Bb Cd B ab C cc
83 Provar que é LL(1): S S# S aabc A a bbd B a C b D c
84 Provar que é LL(1): S S# S AB A a B b
Linguagens Formais - Preliminares
Linguagens Formais - Preliminares Regivan H. N. Santiago DIMAp-UFRN 25 de fevereiro de 2007 Regivan H. N. Santiago (DIMAp-UFRN) Linguagens Formais - Preliminares 25 de fevereiro de 2007 1 / 26 Algumas
Compiladores Analisador Sintático. Prof. Antonio Felicio Netto Ciência da Computação
Compiladores Analisador Sintático Prof. Antonio Felicio Netto [email protected] Ciência da Computação 1 Análise Sintática - A Análise Sintática constitui a segunda fase de um tradutor de uma
Compiladores Aula 4. Celso Olivete Júnior.
Aula 4 Celso Olivete Júnior [email protected] Na aula de hoje... Revisão: gramáticas Relações em uma gramática: Cabeça, Último, Primeiro (First) e Seguinte (Follow) Capítulo 4 (seção 4.4.2) do livro
LINGUAGENS FORMAIS E AUTÔMATOS. Prova 2-10/06/ Prof. Marcus Ramos
LINGUAGENS FORMAIS E AUTÔMATOS Prova 2-10/06/2011 - Prof. Marcus Ramos NOME: _ Colocar seu nome no espaço acima; A prova pode ser feita à lápis ou caneta; A duração é de três horas; As questões da parte
Linguagem (formal) de alfabeto Σ
Linguagem (formal) de alfabeto Σ Linguagem é qualquer subconjunto de Σ, i.e. qualquer conjunto de palavras de Σ Σ = {a, b} {aa, ab, ba, bb} ou {x x {a, b} e x = 2} {a, aa, ab, ba, aaa, aab, aba,...} ou
COMPILADORES. Revisão Linguagens formais Parte 02. Prof. Geovane Griesang
Universidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES Revisão Linguagens formais Parte 02 Prof. [email protected] Legenda: = sigma (somatório) = delta ε = epsilon λ =
V Análise Sintática. V.1.1 Gramáticas Livres de Contexto Definições de GLC
V Análise Sintática V.1 Fundamentos Teóricos V.1.1 G.L.C V.1.2 Teoria de Parsing V.2 Especificação Sintática de Ling. de Prog. V.3 - Implementação de PARSER s V.4 - Especificação Sintática da Linguagem
Construção de Compiladores Aula 16 - Análise Sintática
Construção de Compiladores Aula 16 - Análise Sintática Bruno Müller Junior Departamento de Informática UFPR 25 de Setembro de 2014 1 Introdução Hierarquia de Chomsky Reconhecedores Linguagens Livres de
Gramáticas ( [HMU00], Cap. 5.1)
Gramáticas ( [HMU00], Cap. 5.1) Vimos que a seguinte linguagem não é regular L = {0 n 1 n n 0} Contudo podemos fácilmente dar uma definição indutiva das suas palavras: 1. ɛ L 2. Se x L então 0x1 L L é
Modelos de Computação
Modelos de Computação 2.ano LCC e LERSI URL: http://www.ncc.up.pt/~nam/aulas/0405/mc Escolaridade: 3.5T e 1P Frequência:Semanalmente serão propostos trabalhos aos alunos, que serão entregues nas caixas
Capítulo Métodos para transformar gramáticas ái Duas formas Normais (Chomsky e Greibach) ADC/TC/Cap.6/ /LEI/DEIFCTUC 268
Capítulo 6 Simplificação de gramáticas livres de contexto e Formas Normais 61 6.1. Métodos para transformar gramáticas ái 62 6.2. Duas formas Normais (Chomsky e Greibach) 268 6.1. Métodos para transformar
Compiladores. Exemplo. Caraterísticas de Gramáticas. A αβ 1 αβ 2. A αx X β 1 β 2. Lembrando... Gramáticas Livres de Contexto
Compiladores Análise sintática (2) Análise Top-Down Lembrando... Gramáticas Livres de Contexto Análise sintática = parsing. Baseada em GLCs Gramática: S A B Top-Down Bottom-Up S AB cb ccbb ccbca S AB A
Hierarquia de Chomsky Exemplos de gramáticas
Hierarquia de Chomsky Exemplos de gramáticas 1 Formalmente, as gramáticas são caracterizadas como quádruplas ordenadas G = ( Vn, Vt, P, S) onde: Vn representa o vocabulário não terminal da gramática. Este
A. (Autómatos finitos determinísticos e não determinísticos AFD e AFND)
DEP. INFORMÁTICA - UNIVERSIDADE DA BEIRA INTERIOR Teoria da Computação Eng. Informática 1º Semestre Exame 2ª chamada - Resolução 2h + 30min 07/Fev/2011 Pergunta A.1 A.2 A.3 B.1 B.2 B.3a B.3b C.1 C.2 D.1
COMPILADORES. Revisão Linguagens formais Parte 01. Geovane Griesang
Universidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES Revisão Linguagens formais Parte 01 [email protected] Legenda: = sigma (somatório) = delta ε = épsilon λ = lambda
Se o símbolo inicial não fizer parte do conjunto de símbolos férteis, a linguagem gerada pela gramática é vazia.
Transformações em G.L.C Uma vez que existem métodos de análise, cada qual exigindo gramáticas com características específicas é importante que uma gramática possa ser transformada, porém, sem perder a
Aula 8: Gramáticas Livres de Contexto
Teoria da Computação Primeiro Semestre, 2015 Aula 8: Gramáticas Livres de Contexto DAINF-UTFPR Prof. Ricardo Dutra da Silva Veremos agora maneira de gerar as strings de um tipo específico de linguagem,
IBM1088 Linguagens Formais e Teoria da
IBM1088 Linguagens Formais e Teoria da Computação Linguagens e Gramáticas Evandro Eduardo Seron Ruiz [email protected] Universidade de São Paulo E.E.S. Ruiz (USP) LFA 1 / 47 Frase do dia Sofremos muito com
Compiladores - Análise Ascendente
Compiladores - Análise Ascendente Fabio Mascarenhas - 2013.1 http://www.dcc.ufrj.br/~fabiom/comp Análise Descendente vs. Ascendente As técnicas de análise que vimos até agora (recursiva com retrocesso,
Apostila 03 - Linguagens Livres de Contexto Exercícios
Cursos: Bacharelado em Ciência da Computação e Bacharelado em Sistemas de Informação Disciplinas: (1493A) Teoria da Computação e Linguagens Formais, (4623A) Teoria da Computação e Linguagens Formais e
Compiladores - Análise Ascendente
Compiladores - Análise Ascendente Fabio Mascarenhas - 2013.2 http://www.dcc.ufrj.br/~fabiom/comp Análise Descendente vs. Ascendente As técnicas de análise que vimos até agora (recursiva com retrocesso,
Histórico e motivação
Expressões regulares 1. Histórico e motivação 2. Definição a) Sintaxe b) Semântica c) Precedência dos operadores 3. Exemplos 4. Leis algébricas 5. Dialetos 6. Aplicações 7. Exercícios Pré-requisito: básico
INE5317 Linguagens Formais e Compiladores. AULA 4: Gramáticas
INE5317 Linguagens Formais e Compiladores AULA 4: Gramáticas bas eado em material produzido pelo prof Olinto Jos é Varela Furtado Ricardo Azambuja Silveira INE-CTC-UFSC E-Mail: [email protected] URL:
LINGUAGEM LIVRE DE CONTEXTO GRAMÁTICA LIVRE DE CONTEXTO
LINGUAGEM LIVRE DE CONTEXTO As Linguagens Livres de Contexto é um reconhecedor de linguagens, capaz de aceitar palavras corretas (cadeia, sentenças) da linguagem. Por exemplo, os autômatos. Um gerador
Linguagens Livres de Contexto
Linguagens Livres de Contexto 1 Roteiro Gramáticas livres de contexto Representação de linguagens livres de contexto Formas normais para gramáticas livres de contexto Gramáticas ambíguas Autômatos de Pilha
Compiladores - Análise LL(1)
Compiladores - Análise LL(1) Fabio Mascarenhas - 2013.1 http://www.dcc.ufrj.br/~fabiom/comp Gramáticas LL(1) Uma gramática é LL(1) se toda predição pode ser feita examinando um único token à frente Muitas
Teoria da Computação Gramáticas, Linguagens Algébricas e Autómatos de Pilha
Teoria da Computação Gramáticas, Linguagens Algébricas e Autómatos de Pilha Simão Melo de Sousa 12 de Outubro de 2011 Conteúdo 1 Gramáticas e Definições básicas 1 2 Gramáticas e Linguagens 4 2.1 Gramáticas
Alfabeto e palavras. Alfabeto conjunto finito de símbolos (Σ).
Alfabeto e palavras Alfabeto conjunto finito de símbolos (Σ). {A,...,Z}, {α, β,... }, {a,b}, {0,1}, ASCII Palavra de Σ sequência finita de símbolos do alfabeto Σ Σ = {a, b} aabba a aaaaaaaa Comprimento
Alfabeto, Cadeias, Operações e Linguagens
Linguagens de Programação e Compiladores - Aula 3 1 Alfabeto, Cadeias, Operações e Linguagens 1.Conjuntos Para representar um determinado conjunto é necessário buscar uma notação para representá-lo e ter
Automata e Linguagens Formais
Automata e Linguagens Formais 5 Prof. Carlos H. C. Ribeiro [email protected] Gramáticas A Hierarquia de Chomsky Tipos de gramáticas e linguagens Pré-normalização de GLCs Formas Normais: Chomsky e Greibach
Apostila 05 Assunto: Linguagens dos tipos 0 e 1
Cursos: Bacharelado em Ciência da Computação e Bacharelado em Sistemas de Informação Disciplinas: (1493A) Teoria da Computação e Linguagens Formais, (4623A) Teoria da Computação e Linguagens Formais e
Gramática regular. IBM1088 Linguagens Formais e Teoria da Computação. Evandro Eduardo Seron Ruiz Universidade de São Paulo
Gramática regular IBM1088 Linguagens Formais e Teoria da Computação Evandro Eduardo Seron Ruiz [email protected] Universidade de São Paulo E.E.S. Ruiz (USP) LFA 1 / 41 Frase do dia Através de três métodos
Gramá3ca Livre de Contexto (GLC)
Linguagens Formais e Autômatos Gramá3ca Livre de Contexto (GLC) Andrei Rimsa Álvares Material extraído do livro e slides do Prof. Newton Vieira (hep://dcc.ufmg.br/~nvieira) Sumário Gramá4cas livres de
Gramáticas Regulares
Capítulo 3 Expressões Regulares, Linguagens Regulares es e Gramáticas Regulares 3.1. Expressões Regulares (RE) 3.2. Relação entre ER e Linguagens Regulares (LR) 3.3. Gramáticas Regulares (GR) 3.4. Síntese
Linguagens Formais e Autômatos P. Blauth Menezes
Linguagens Formais e Autômatos P. Blauth Menezes [email protected] Departamento de Informática Teórica Instituto de Informática / UFRGS Matemática Discreta para Ciência da Computação - P. Blauth Menezes
TEORIA DAS LINGUAGENS 3. GRAMÁTICAS INDEPENDENTES DE CONTEXTO
LICENCIATURA EM CIÊNCIAS DA COMPUTAÇÃO TEORIA DAS LINGUAGENS 3. GRAMÁTICAS INDEPENDENTES DE CONTEXTO José Carlos Costa Dep. Matemática e Aplicações Universidade do Minho Braga, Portugal 31 de Maio de 2010
Problemas decidíveis para LICs
Problemas decidíveis para LICs Dada uma gramática independente de contexto G, L(G) =? Dada uma gramática independente de contexto G, L(G) é finita? Dada uma gramática independente de contexto G, L(G) é
Exemplo preliminar. Considere a linguagem dos Palíndromos Lpal:
a n b n 1 Exemplo preliminar Considere a linguagem dos Palíndromos Lpal: radar, Roma é amor, 0110, 11011,... ou seja, quando w = w r Lpal é regular? usando o Lema do Bombeamento: Suponha Lpal regular,
Modelos de Computação Folha de trabalho n. 8
Modelos de Computação Folha de trabalho n. 8 Nota: Os exercícios obrigatórios marcados de A a D constituem os problemas que devem ser resolvidos individualmente. A resolução em papel deverá ser depositada
Exercícios Associados à Aula 28 (27/11/2013) Feitos em sala e em equipes
Exercícios Associados à Aula 28 (27/11/2013) Feitos em sala e em equipes Questões do POSCOMP 2011 A resposta certa está assinalada em vermelho. Por que é correta e por que as demais alternativas são incorretas?
IV Gramáticas Livres de Contexto
IV Gramáticas Livres de Contexto Introdução Definições de GLC 1 G = (Vn, Vt, P, S) onde P = {A α A Vn α (Vn Vt) + } 2 GLC ε - LIVRE : S ε pode pertencer a P, desde que: S seja o símbolo inicial de G S
Conceitos Básicos. Vocabulário Cadeias Linguagens Expressões Regulares Problema X Linguagem
Conceitos Básicos Vocabulário Cadeias Linguagens Expressões Regulares Problema X Linguagem Alfabeto ou Vocabulário: Conjunto finito não vazio de símbolos. Símbolo é um elemento qualquer de um alfabeto.
Linguagens e Programação Gramáticas. Paulo Proença
Linguagens e Programação Gramáticas Gramáticas Ferramenta para a descrição e análise de linguagens; Baseada num conjunto de regras que especificam o modo de construção das frases válidas na linguagem;
Gramáticas Livres de Contexto
Gramáticas Livres de Contexto 25 de novembro de 2011 Definição 1 Uma Regra (ou produção) é um elemento do conjunto V (V Σ). Sendo que V é um conjunto finito de elementos chamados de variáveis e Σ um conjunto
Plano da aula. Compiladores. Os erros típicos são sintáticos. Análise Sintática. Usando Gramáticas. Os erros típicos são sintáticos
Plano da aula Compiladores Análise sintática (1) Revisão: Gramáticas Livres de Contexto 1 Introdução: porque a análise sintática? Noções sobre Gramáticas Livres de Contexto: Definição Propriedades Derivações
Como construir um compilador utilizando ferramentas Java
Como construir um compilador utilizando ferramentas Java p. 1/2 Como construir um compilador utilizando ferramentas Java Aula 6 Análise Sintática Prof. Márcio Delamaro [email protected] Como construir
Autómatos de Pilha e Linguagens Livres de Contexto
Folha Prática Autómatos de Pilha e Linguagens Livres de Contexto 1 Autómatos de Pilha e Linguagens Livres de Contexto Autómatos de Pilha Não Determinísticos (APND) 1. Considere a seguinte tabela de transição
Teoria da Computação Aula 02 Introdução
Teoria da Computação Aula 02 Introdução Prof. Esp. Pedro Luís Antonelli Anhanguera Educacional Alfabeto Um alfabeto é um conjunto finito de símbolos ou caracteres, representado pela letra sigma ( ). Portanto:
Exemplo preliminar. Considere a linguagem dos Palíndromos Lpal:
a n b n 1 Exemplo preliminar Considere a linguagem dos Palíndromos Lpal: radar, Roma é amor, 0110, 11011,... ou seja, quando w = w r Lpal é regular? usando o Lema do Bombeamento: Suponha Lpal regular,
Disciplina: LINGUAGENS FORMAIS, AUTÔMATOS E COMPUTABILIDADE Prof. Jefferson Morais
UNIVERSIDADE FEDERAL DO PARÁ INSTITUTO DE CIÊNCIAS EXATAS E NATURAIS FACULDADE DE COMPUTAÇÃO CURSO DE BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO Disciplina: LINGUAGENS FORMAIS, AUTÔMATOS E COMPUTABILIDADE Prof.
Linguagens Formais e Autômatos. Simplificação de Gramáticas Livre do Contexto (GLC)
Linguagens Formais e Autômatos Simplificação de Gramáticas Livre do Contexto (GLC) Cristiano Lehrer, M.Sc. Gramática Simplificada Gramática simplificada é uma gramática livre do contexto que não apresenta
Linguagens Formais. Aula 01 - Conceitos Básicos. Prof. Othon Batista Mestre em Informática
Linguagens Formais Aula 01 - Conceitos Básicos Prof. Othon Batista Mestre em Informática Sumário Introdução à Linguagem Alfabeto Cadeias de Símbolos, Palavras Tamanho de Palavra Prefixo, Sufixo ou Subpalavra
Formas normais. Forma normal de Greibach (FNG) todas as produções são da forma
Formas normais Em muitas aplicações, é útil que as GIC tenham regras de tipos especiais. Para tal é necessário que se possa transformar qualquer gramática numa equivalente (isto é que gere a mesma linguagem)
Linguagens Formais e Autômatos P. Blauth Menezes
Linguagens Formais e Autômatos P. Blauth Menezes [email protected] Departamento de Informática Teórica Instituto de Informática / UFRGS Linguagens Formais e Autômatos - P. Blauth Menezes 1 Linguagens
COMPILADORES. Análise sintática. Prof. Geovane Griesang Universidade de Santa Cruz do Sul UNISC Departamento de informática
Universidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES Análise sintática Parte 02 Prof. [email protected] Data Conteúdo 23/09/2013 3. Análise Sintática: 3.1 analisadores
Gramática Livre de Contexto
Gramática Livre de Contexto Prof. Yandre Maldonado - 1 Árvore de derivação Ambigüidade Simplificação de Gramática Forma Normal de Chomsky (FNC) Forma Normal de Greibach (FNG) Prof. Yandre Maldonado e Gomes
Análise Sintática. Fabiano Baldo
Compiladores Análise Sintática Fabiano Baldo Gramáticas Livre de Contexto (GLC) É utilizada na especificação formal lda sintaxe de uma linguagem de programação. É um conjunto de produções ou regras gramaticais
SCC Capítulo 2 Linguagens Livres de Contexto e Autômatos de Pilha (versão 2)
SCC-505 - Capítulo 2 e (versão 2) João Luís Garcia Rosa 1 1 Departamento de Ciências de Computação Instituto de Ciências Matemáticas e de Computação - Universidade de São Paulo http://www.icmc.usp.br/~joaoluis
Apostila 01 Fundamentação da Teoria da Computação e Linguagens Formais
Cursos: Bacharelado em Ciência da Computação e Bacharelado em Sistemas de Informação Disciplinas: (1493A) Teoria da Computação e Linguagens Formais, (4623A) Teoria da Computação e Linguagens Formais e
Gramática. Prof. Yandre Maldonado e Gomes da Costa. Prof. Yandre Maldonado - 1
Prof. Yandre Maldonado - 1 Prof. Yandre Maldonado e Gomes da Costa [email protected] Prof. Yandre Maldonado - 2 Mecanismo gerador que permite definir formalmente uma linguagem; Através de uma gramática
Gramática. Gramática. Gramática
Prof. Yandre Maldonado - 1 Prof. Yandre Maldonado e Gomes da Costa [email protected] Prof. Yandre Maldonado - 2 Mecanismo gerador que permite definir formalmente uma linguagem; Através de uma gramática
Linguagens Formais e Autômatos (LFA)
Linguagens Formais e Autômatos (LFA) Aula de 28/08/2013 Sobre as respostas das duplas aos exercícios cios propostos 1 Fatos extraídos dos scores das duplas Tempo médio de resposta - A série inteira de
Autómatos de pilha e GIC
Autómatos de pilha e GIC Proposição 17.1. A classe de linguagens aceites por autómatos de pilha está contida na classe das linguagens independentes de contexto. Dem. Seja L uma linguagem independente de
INE5317 Linguagens Formais e Compiladores AULA 9: Propriedades e Reconhecimento das Linguagens Livres do Contexto
INE5317 Linguagens Formais e Compiladores AULA 9: Propriedades e Reconhecimento das Linguagens Livres do Contexto baseado em material produzido pelo prof Paulo Bauth Menezes e pelo prof Olinto José Varela
Expressões Regulares e Gramáticas Regulares
Universidade Católica de Pelotas Escola de informática 053212 Linguagens Formais e Autômatos TEXTO 2 Expressões Regulares e Gramáticas Regulares Prof. Luiz A M Palazzo Março de 2007 Definição de Expressão
7.1. Autómatos de pilha não-determinísticos (NPDA) 7.3. Autómatos de pilha determinísticos e linguagens livres de contexto determinísticas.
Capítulo 7 Autómatos de pilha 7.1. Autómatos de pilha não-determinísticos (NPDA) 7.2. Autómatos de pilha e linguagens livres de contexto 7.3. Autómatos de pilha determinísticos e linguagens livres de contexto
Linguagens livres de contexto e autômatos de pilha
Capítulo 6: Linguagens livres de contexto e autômatos de pilha José Lucas Rangel, maio 1999 6.1 - Introdução. Os aceitadores, ou reconhecedores, das linguagens livres de contexto são os chamados autômatos
Gramáticas Livres de Contexto
Gramáticas Livres de Contexto IBM1088 Linguagens Formais e Teoria da Computação Evandro Eduardo Seron Ruiz [email protected] Universidade de São Paulo E.E.S. Ruiz (USP) LFA 1 / 42 Frase do dia Quando vires
Parsing Preditivo. Antes de ser abordado o Parsing Preditivo, será apresentado o Analisador Sintático Descendente Recursivo.
UPE Caruaru Sistemas de Informação Disciplina: Compiladores Prof.: Paulemir G. Campos Parsing Preditivo Antes de ser abordado o Parsing Preditivo, será apresentado o Analisador Sintático Descendente Recursivo.
INE5318 Construção de Compiladores. AULA 4: Análise Sintática
INE5318 Construção de Compiladores AULA 4: Análise Sintática Ricardo Azambuja Silveira INE CTC UFSC E Mail: [email protected] URL: www.inf.ufsc.br/~silveira Definições preliminares Parser (Analisador
Conceitos básicos de Teoria da Computação
Folha Prática Conceitos básicos de 1 Conceitos básicos de Métodos de Prova 1. Provar por indução matemática que para todo o número natural n: a) 1 + 2 + 2 2 + + 2 n = 2 n+1 1, para n 0 b) 1 2 + 2 2 + 3
Reduce: reduz o que está imediatamente à esquerda do foco usando uma produção
Shift e reduce Shift: move o foco uma posição à direita A B C x y z A B C x y z é uma ação shift Reduce: reduz o que está imediatamente à esquerda do foco usando uma produção Se A x y é uma produção, então
Linguagens Formais e Autômatos 02/2017. LFA Aula 03. Gramáticas regulares /09/2017 Celso OliveteJúnior.
Linguagens Formais e Autômatos 02/2017 LFA Aula 03 Linguagens regulares Gramáticas regulares 25-27/09/2017 Celso OliveteJúnior [email protected] 1 Linguagens Formais e Autômatos 02/2017 Classificação
Comprimento: oigual a... omaior (ou igual) a... omenor (ou igual) a... omúltiplo de...
Comprimento: oigual a... omaior (ou igual) a... omenor (ou igual) a... opar oímpar omúltiplo de... Símbolos e subcadeias: ocomeça com... otermina com... ocontém... ocontém exatamente tantas ocorrências...
Construção de Compiladores
Construção de Compiladores Parte 1 Introdução Linguagens e Gramáticas F.A. Vanini IC Unicamp Klais Soluções Motivação Porque compiladores? São ferramentas fundamentais no processo de desenvolvimento de
Definições Exemplos de gramáticas
Definições Exemplos de gramáticas 1 Gramáticas Conceito introduzido pela lingüística Objetivo de ensinar o inglês pelo computador e conseguir um tradutor de línguas Fracasso da tradução por volta dos anos
Definições Hierarquia de Chomsky Exemplos de gramáticas
Definições Hierarquia de Chomsky Exemplos de gramáticas 1 Formalmente, as gramáticas são caracterizadas como quádruplas ordenadas G = ( Vn, Vt, P, S) onde: Vn representa o vocabulário não terminal da gramática.
Análise Sintática II. Eduardo Ferreira dos Santos. Outubro, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 34
Análise Sintática II Eduardo Ferreira dos Santos Ciência da Computação Centro Universitário de Brasília UniCEUB Outubro, 2016 1 / 34 Sumário 1 Introdução 2 Ambiguidade 3 Análise sintática descendente 4
CAPÍTULO 5 LINGUAGENS LIVRES DE CONTEXTO
CAPÍTULO 5 LINGUAGEN LIVRE DE CONTEXTO 5.1. Introdução 181 5.2 Gramáticas livres de contexto 181 5.2.1. Definição e exemplos 183 5.2.2 Derivação pela extrema direita e pela extrema esquerda 188 5.2.3.Árvores
Teoria de Linguagens 1 o semestre de 2018 Professor: Newton José Vieira Primeira Lista de Exercícios Data de entrega: 17/4/2018 Valor: 10 pontos
Departamento de Ciência da Computação ICEx/UFMG Teoria de Linguagens o semestre de 8 Professor: Newton José Vieira Primeira Lista de Exercícios Data de entrega: 7/4/8 Valor: pontos. Uma versão do problema
Análise Sintática - Final
MAB 471 2011.2 Análise Sintática - Final http://www.dcc.ufrj.br/~fabiom/comp LR(k ) vs LL(k ) Encontrando o próximo passo em uma derivação LR(k) Cada redução na análise detectável com o contexto esquerdo
