Compiladores Ficha de exercícios

Tamanho: px
Começar a partir da página:

Download "Compiladores Ficha de exercícios"

Transcrição

1 Compiladores Ficha de exercícios Simão Melo de Sousa Ano lectivo 2004/ Linguagens Formais: Construir Frases Exercício 1 Para cada uma das gramáticas G seguintes, (a) descreva a linguagem L(G) gerada pela gramática considerada, (b) Demonstre a sua afirmação, quando possível, (c) Diga de que tipo (classe) é a gramática: 1. S as ba A ba c 2. S aas aa 3. S aas a b 4. S aa A bs a 5. S SA SA BS BS ab B a A c Para esta última gramática, dê duas derivações distintas de aabc Exercício 2 (Gramáticas e derivações) Seja G a gramática definida pelas produções seguintes: S A AC A a b c C AC BC A B B

2 1. Diga, das afirmações seguintes, quais são verdadeiras: (a) ab037 L(G) (b) 2a3b L(G) (c) aaaa L(G) (d) S a (e) S ab (f) BC 2 (g) BC + 2 (h) C 2abc (i) C 5 3b4 2. Que linguagem gera a gramática G? Exercício 3 (Gramáticas Formais) Seja G a gramática seguinte, definida a partir do alfabeto A = {a, b, i, e, t} e de símbolo inicial S: S ::= i E t S S S ::= a S ::= e S S ::= ɛ E ::= b 1. A que clásse pertence a gramática G? Justifique. 2. Dê uma árvore de derivação da palavra ibtibtaea 3. Será G ambígua? Justifique. 4. Dê uma derivação esquerda e uma derivação direita da palavra ibtibtaeaeibtaea Exercício 4 Defina uma gramática geradora para cada uma das linguagens seguintes: 1. {a n b p n 1, p 1} 2. {a n b p n 0, p 3} Exercício 5 Mostre que a linguagem {ab 2n cc n 0} pertence a classe 3 (classe das linguagens regulares). Defina uma gramática de tipo diferente de 3 que gera esta linguagem. 2

3 Exercício 6 Seja G a gramática definida pelas produções seguintes: S ac C ac abc BC CB Ba ab CB Cb bb Bb Cb b Qual é a classe da gramática G? Qual é a linguagem gerada por G? Dê uma gramática de classe 2 (algébrica ou livre de contexto ) equivalente a G. Exercício 7 Considere a gramática G definida pelas seguintes regras de produção: S aa A bs a Construa a árvore de derivação da palavra ababaa. Exercício 8 Mostre que a gramática G definida pelas produções seguintes: é ambígua. S SS asb ɛ Exercício 9 Mostre que uma linguagem algébrica L sobre um alfabeto Σ pode sempre ser gerada por uma gramática G = (Σ, N, P, S) tal que todas as suas produções são da forma A α onde A N e α (N Σ ) Exercício 10 Mostre que as linguagens seguintes são algébricas: 1. L 1 = {a n b p n > p 0} 2. L 2 = {a n b p (n, p 0) (n p)} 3. L 3 = {a n b p c k (n, k 0) (p n + k)} Exercício 11 Seja Σ o alfabeto {a, b}. Mostre que a linguagem sobre Σ constituída de todas as palavras terminadas em a 3 ou b 2 é regular. Exercício 12 Defina uma gramática regular sobre o alfabeto Σ = {a, b} que gera a linguagem constituída por todas as palavras de Σ que contenham um número par de ocorrências de a e um número ímpar de ocorrências de b. 3

4 Exercício 13 Considere o alfabeto {a, b}. Identifique as expressões regulares representativas das seguintes linguagens: 1. Frases iniciadas por zero ou mais símbolos a seguidos por um ou mais b. 2. Frases formadas por um número par de elementos do alfabeto. 3. Frases iniciadas e terminadas pelo símbolo a. 4. Frases que contêm, pelo menos uma vez, o símbolo a. Exercício 14 (Equivalência entre expressões regulares) A seguinte tabela lista algumas equivalências entre expressões regulares. 1 αɛ = ɛα = α elemento neutro da concatenação 2 α + = + α = α elemento neutro da união 3 (α + β) + γ = α + (β + γ) associatividade da união 4 (αβ)γ = α(βγ) associatividade da concatenação 5 α + β = β + α comutatividade da união 6 α + α = α idempotência 7 α(β + γ) = αβ + αγ distributividade da concatenação a direita 8 (β + γ)α = βα + γα distributividade da concatenação a esquerda 9 α + = αα = α α relação entre fechos 10 α = ɛ + α + relação entre fechos e união 11 (α + ɛ) + = (ɛ + α) + = α relação entre fechos e união Utilize esta tabela para a resolução das alíneas seguintes. 1. Mostre a equivalência de a b + a bb + com a b + 2. Reduza a expressão regular ab + b(b + a + )aa Exercício 15 Considere o seguinte algoritmos: Algoritmo: Conversão de uma gramática regular numa expressão regular Entrada: Resultado: Uma gramática regular Um sistema de equações de expressões regulares 1. Para cada símbolo não terminal A, que apareça no lado esquerdo de uma produção A α 1 α 2... α n, gerar a seguinte expressão: A = φ 1 φ 2... φ n onde φ i é a expressão regular correspondente a α i. 4

5 2. Para cada símbolo não-terminal A, que apareça no lado esquerdo de uma produção A α 1 α 2... α n, gerar a seguinte expressão regular A = φ 1 + φ φ n onde φ i é a expressão regular correspondente a α i. 3. Simplificar as expressões regulares usando as regras da tabela do exercício 14 ou as regras seguintes: (a) A = β + αa é equivalente a A = α β (b) A = β + Aα é equivalente a A = βα 4. Resolve-se o sistema de equação em ordem ao símbolo inicial. Descreva então por uma expressão regular as linguagens geradas pelas gramáticas seguintes: 1. S Sa B B b Bb 2. S SA SA BS BS ab B a A c Exercício 16 Descreva por uma expressão regular as linguagens geradas pelas gramáticas seguintes: 1. S aa b A bs aa 2. S A B A aa bc B bb ae ɛ C bc ɛ E B ce Exercício 17 (Reconhecimento duma string por uma expressão regular) Neste exercício, propomo-nos de escrever uma função que permita determinar se uma palavra pertence a uma linguagem L(r) gerada por uma expressão regular r. As expressões regulares são representadas elementos do tipo OCaml seguinte: 5

6 type expreg = Vazio (* Linguagem vazia *) Epsilon (* Palavra vazia ɛ *) Caractere of char (* Caracter c *) Uniao of expreg * expreg (* r 1 r 2 *) Produto of expreg * expreg (* r 1 r 2 *) Estrela of expreg (* r *) 1. Defina uma função contem_epsilon : expreg bool que determina se a palavra vazia ɛ pertence à linguagem gerada pela expressão regular dada em parâmetro. 2. Define-se por resíduo duma expressão regular r relativamente a um caracter c da forma seguinte : Res(r, c) = { w cw L(r) } (a) Calcula Res(r, c) no caso de r = (a b) a e c {a, b}. (b) A linguagem Res(r, c) pode ser ela própria descrita por uma expressão regular. Escreva uma função residuo : expreg char expreg que calcula, a partir de r e de c uma expressão regular r tal que L(r ) = Res(r, c). (c) Calcular residu r c no caso onde r = (a b) a e c {a, b}. 3. Deduzir uma função reconheçe : expreg char list bool que determina se uma lista de caracteres pertence à linguagem definida pela expressão regular dada em parâmetro. 4. Aplicar esta função ao reconhecimento da palavra aba pela expressão regular r = (a b) a. Exercício 18 (Gramática LL(1)?) Seja G a gramática seguinte, definida a partir do alfabeto A = {a, b, i, e, t}: S ::= i E t S S S ::= a S ::= e S S ::= ɛ E ::= b 6

7 1. Calcula as funções nulo, primeiro e seguinte para a gramática G. 2. Define a tabela de transições da análise descendente LL(1) de G. 3. Será esta gramática uma gramática LL(1)? Justifique. 2 Linguagens Formais: Reconhecer Frases Exercício 19 Defina um autómato sobre {0, 1} que reconhece números binários múltiplos de 5 Exercício 20 Sejam Σ = {a, b} um alfabeto e G uma gramática regular definida pelas produções seguintes: S aa bd a ɛ A aa b D aa bs Defina um autómato A que reconheça a linguagem gerada por G. Exercício Construa um autómato que reconhece a linguagem gerada pela gramática regular seguinte: S 01A 11B A 0B 1S 01 B 0S 2. Defina uma expressão regular sobre {0, 1} que reconhece a linguagem gerada por G. Exercício 22 (construção de autómatos a partir de linguagens regulares) Seja Σ = {a, b} um alfabeto. Defina um autómato que reconheça palavras de comprimento ímpar Defina um autómato que reconheça palavras cujo comprimento é um múltiplo de 4. Exercício 23 (Construção de autómatos a partir de expressões regulares) Seja Σ = {a, b, c, d} um alfabeto. Dê o autómato determinista minimal que reconhece as expressões regulares seguintes: (a + c) 3 7

8 ((abc + cba)d+) (aabbbcccc)+ Exercício 24 (Retirado de Processadores de linguagens, Rui Crespo, IST Press) Considere o seguinte protocolo de comunicação de mensagens binárias entre dois computadores. O início e o fim de cada transmissão é marcada pelos caracteres, respectivamente, 00 e 11. As mensagens são obrigatoriamente iniciadas por três bits, indicativos do seu comprimento. Entre duas mensagens há um separador constituído pelo padrão 101. Em todas as transmissões há, no mínimo, uma mensagem por transmitir. Um exemplo de transmissão válida de mensagem é dada por: init size msg sep size msg end Escreva uma gramática descritora da transmissão de mensagens. 2. Converta a gramática numa expressão regular. 3. Converta a expressão num AFND. 4. Determina o AFND em AFD. 5. Minimise o AFD. 6. Implemente um reconhecedor de transmissões. Exercício 25 (Autómato determinista minimal e expressão regular) Sejam A {a, b, c}, um alfabeto e r (a bb) cc(a) + b, uma expressão regular sobre o alfabeto A. Dê o autómato finito determinista minimal que reconhece a linguagem L(r). Sugerimos que comece por determinar um autómato não determinista com transições ɛ, que remova as transições ɛ, que torne determinista o autómato resultante e que, finalmente, aplique o algoritmo de minimização. Exercício 26 (Autómatos Regulares) Considere o autómato da figura 1, definido sobre o alfabeto A = {a, b, c}: Determinise o autómato A 1. O autómato resultante será designado por A 2. Minimise A 2. O autómato resultante será designado por A 3. Que linguagem reconhecem os autómatos A 1, A 2 e A 3? 8

9 Figura 1: O Autómato A 1 Exercício 27 (Autómatos Finitos) Considere o alfabeto A = {a, b} e o autómato A 1 com transições ɛ representado na figura 2. Nesta figura as transições ɛ são representadas Que linguagem reconhece este autómato? Dê um autómato A 2 sem transições ɛ equivalente a A 1. Determinise, caso necessário, o autómato A 2. O autómato resultante será designado por A 3. Minimise A 3. Exercício Demonstre que os autómatos A 1 e A 2 da figura 3 reconhecem a mesma linguagem regular. 2. Dê uma expressão regular que descreva a linguagem gerada por estes autómatos. Exercício 29 (Expressões regulares e análise léxica) O objectivo é alinhavar a construção de um analisador léxico para a pequena linguagens apresentada a seguir. Para cada unidade léxica, indicamos o tipo de token associado (neste caso concreto, um número), o seu valor assim como a expressão regular que a define. 9

10 Figura 2: Autómato A 1 (com transições ɛ) Figura 3: Autómato A 1 e Autómato A 2 10

11 Tipo Valor Expressão regular Palavras reservadas 1 if, then, else, begin,end a própria palavra Identificadores 2 o nome do identificador letra (letra dígito)* Inteiro 3 o valor (-)?dígito(dígito)* Operação aritmético 4 o operador + - * / Operador relacional 5 o operador < <= > >= = <> Atribuição 6 := := Strings 7 o valor da string qualquer coisa Comentários 8 ignorados (* qualquer coisa *) Reais 9 o valor (-)?inteiror.(inteiro)?(e inteiro)? com inteiro=(dígito)+ Adoptaremos igualmente as convenções seguintes : Os caracteres brancos, tabulações e carrier return não são significativos e podem aparecer em qualquer quantidade, só são consideradas as 8 primeiras letras de cada identificador, uma apostrofe nuam string deve ser duplicada para ser considerada como tal: O Reilly, as strings estão limitadas a 132 caracteres, os comentários terminam ao primeiro *) encontrado e não podem ser aninhados. 1. Defina os autómatos finitos deterministas para cada uma das expressões regulares definidas. Dar, a seguir, o analisador completo. 2. Quais diferenças existem entre o analisador léxico e o reconhecimento realizado por um autómato finito clássico. 3. Determine em que momento intervenham as convenções indicadas. 4. Dar a estruturas geral do analisador léxico. Assuma, para tal a existência dos valores e das funções de base seguintes : init denota o estado inicial ptr variável que indica a posição corrente no buffer string(x, y) onde x t y são índices no buffer. colocada entre estes dois índices. Estas função devolve a string 11

12 terminal(s) onde s é um estado, indica se o estado é final ou não. type(s) se s é um estado final, devolve o seu tipo. transit(s, c) devolve o estado que segue s pela transição de label c, devolve fail no caso de tal transição não existir. lire() devolve o próximo caracter lido e faz avançar o apontador no buffer. 3 Compilação Exercício 30 Em que fase da compilação podemos detectar cada um dos erros seguintes: 1. Identificador mal formado : 12K3 em C, em OCaml. 2. Conflito de tipo sin( a ). 3. Instrução nunca executada. 4. Variável não declarada. 5. Comentário aberto mas não fechada. 6. Parêntesis não fechada. 7. BEGIN não fechado. 8. Palavra chave utilizada como um identificador. 9. Incoerência entre o número de parâmetro duma definição e o número de parâmetro na chamada dum procedimentos. 10. Tentativa de modificar uma constante. 11. Constante demasiada grande. 12. Ultrapassagem do limite dum vector. Exercício 31 (Correcção de Compiladores) Seja L uma pequena linguagem de expressões aritméticas descrita pela gramática seguinte : 12

13 Expr ::= Term Expr + Term Expr - Term Term ::= Facteur Term * Facteur Facteur ::= id(n) int(i) ( Expr ) - Facteur Seja L m a linguagem máquina seguinte : LOAD adr,reg carrega o conteúdo da célula adr no registo reg LOADI int,reg carrega a constante int no registo reg STORE reg,adr salva o conteúdo do registo reg na célula de endereço adr ADD reg1,reg2 soma o conteúdo do registo reg1 ao conteúdo do registo reg2 MUL reg1,reg2 multiplica o conteúdo do registo reg1 ao conteúdo do registo reg2 OPP reg muda o sinal do conteúdo do registo reg ADDI int,reg soma a constante int ao conteúdo do registo reg PUSH reg1,reg2 coloca o conteúdo do registo reg1 no registo reg2 1. Formalizar a semântica da linguagem máquina proposta sob a forma duma função de transformação dos registos e da memória. 2. A assinatura (operações de contrução) das árvores de sintaxe abstracta que representam as expressões é a seguinte : type asa expr ident : int -> asa expr cte : int -> asa expr plus, moins, mult : asa expr * asa expr -> asa expr opp : asa expr -> asa expr Assumiremos que os identificadores são representados por um inteiro que corresponde ao endereço máquina da variável em questão. Defina uma função de tradução das árvores de sintaxe abstracta (que representa as expressões) para uma sequência de instruções máquina. Quantos registos são necessários para esta função? 3. Verificar que a tradução preserva a semântica das expressões. Exercício 32 (Fases da compilação) Interessamo-nos aqui às diferentes fases da compilação para o pequeno programa seguinte: 13

14 program calculo; var T : array[1..10] of integer; S,I : integer; begin S:=0; (* inicializaç~ao *) for I:= 1 to 10 do begin read(t[i]); S := S + T[I] end; writeln(s) end. Assim sendo: 1. forneça a lista das entidades léxicas Dar o início das sequências de tokens (no máximo 25 tokens). Cada tokens está associada a uma classe léxica (poderá por exeplo considerar as classes dadas no exercício 29) e a um valor. Para os identificadores, o valor será o índice da célula da tabela de símbolos onde se encontra arquivada. 2. Propor uma gramática que permita gerar a linguagem à qual este programa pertence. 3. Dar a árvore de derivação sintáctica associada ao programa e a gramática definida no ponto anterior. 4. Propor uma definição de árvore de sintaxe abstracta para a representação dos programas desta linguagem. 5. Dar a árvore de sintaxe abstracta que corresponde as instruções do bloco principal begin..end do programa anterior. 6. Considere a seguinte linguagem intermédia que permite a manipulação de no máximo três endereços. Dê a representação deste programa sob a sua forma intermédia. Mais geralmente defina a função que calcule a tradução duma árvore de sintaxe abstracta para o código intermédio. 14

15 x y op z x y x cte goto L se x relop y então L x y[i] x[i] y nop x ler escrever x operações lógicas e aritméticas copia carregamento dum valor constante salto incondicional para o label L salto condicional para o label L atribuí a x o valor da célula memória localizada em i unidades a seguir ao endereç atribuí o valor de y a célula localizada i unidades a seguir ao endereço x não faz nada lê um valor e atribuí este valor a x escreve o valor de x Exercício 33 (Linguagem algébrica) Considere a gramática seguinte sobre o alfabeto {0, 1}: N ::= 11 N ::= 1001 N ::= N0 N ::= NN 1. Mostre que todas sequências de bits geradas por esta gramática são inteiros múltiplos de Será que todos múltiplos de três são gerados por esta gramática? Exercício 34 (Gramáticas ambíguas) Considere a gramática das expressões condicionais seguinte: 1 I ::= if E then I 2 I ::= if E then I else I 3 I ::= other 4 E ::= bool 1. Mostre que esta gramática é ambígua. 2. Descreva os passos duma análise ascendente da expressão : if bool then if bool then other else other Em que passo temos a escolha entre uma leitura e uma redução? Quais são as árvores de derivação sintáctica em cada um dos casos? 15

16 3. Defina uma gramática não ambígua equivalente que associa cada else ao then livre (que ainda não está associado a um else) mais próximo. 4. Que regras de precedências são precisas incluir na gramática inicial para obter o mesmo comportamento? Exercício 35 (Análise sintáctica e derivações) Considere a gramática seguinte: S ::= aab S ::= bss A ::= CC A ::= f C ::= cc C ::= d B ::= bb B ::= e 1. Dê uma derivação direita e esquerda de baccddeafbbe. 2. Escreva os passos da análise descendente da palavra do ponto anterior. construa a tabela de expansão para a gramática. Verifique que a análise descendente permite a reconstrução da derivação esquerda. 3. descreva as etapas de análise ascendente da palavra precedente. Verifique que esta análise permite a reconstrução da derivação direita. Exercício 36 (Análise descendente) Vamos analisar de novo a gramática do exercício Calcule o conjuntos dos primeiros, dos seguintes e dê a tabela de transições do autómato de análise descendente. 2. Nesta gramática, substitua A ::= f por A ::= ɛ. Calcula a seguir a nova tabela de transições e deduza uma derivação esquerda de baccddeabbe. 16

17 Exercício 37 (Gramática recursiva esquerda) Considera a gramática seguinte: S S L L ::= (L) ::= a ::= L, S ::= S 1. Dê a árvore de derivação sintáctica da expressão: (a, ((a, a), (a, a))) 2. Que linguagem reconhece esta gramática? 3. Será esta gramática uma gramática LL(1)? 4. Elimine a recursividade esquerda na gramática. 5. Construa o analisador descendente correspondente. 6. Dar o funcionamento do analisador sobre a entrada : (((a, a), ((a, a), (a, a)))) Exercício 38 (Análise descendente et ascendente) Considere a gramática seguinte cujo conjunto de símbolos terminais é {(, a, ;, )}, e cujo conjunto de símbolos não-terminais é {S, L, A} e cujo símbolo inicial é S: S ::= (L S ::= a L ::= SA A ::= ;SA A ::= ) 1. Dê as etapas de análise descendente da palavra (a;(a;a)). 2. Dê as etapas de análise ascendente da palavra (a;(a;a)). 3. Deduza uma derivação direita e esquerda desta palavra. 17

18 Exercício 39 (Análise descendente LL(1), Análise ascendente LR(0) e SLR(1)) Soient les grammaires : 1. S ::= L L ::= L; A A A ::= a 2. S ::= L L ::= A; L A A ::= a 3. S ::= L L ::= L; L A A ::= a 4. S ::= L L ::= at T ::= ɛ ; L 1. Mostre que estas gramáticas geram a mesma linguagem. 2. Diga, para cada uma das gramáticas se é LL(1), LR(0), SLR(1). 3. Compare o tamanho da pilha para a análise ascendente e ascendente da palavra a; a; a para as duas primeiras gramáticas. Que podemos nos dizer sobre esta comparação? Exercício 40 (Gramáticas reduzidas) 1. Define um algoritmo para encontrar todos os símbolos acessíveis e produtivos duma gramática. Este algoritmo deverá assim ser capaz de transformar uma gramática numa gramática reduzida (onde todos os não terminais supérfluos foram removidos) equivalente. 2. Aplica este método a gramática seguinte : S ::= aaa S ::= bbb A ::= be E ::= ɛ B ::= CD C ::= cc D ::= d 18

19 Exercício 41 (Diferenças entre LL(1) e SLR(1)) Seja a gramática : S ::= AaAb BbBa A ::= ɛ B ::= ɛ Mostre que esta gramática é LL(1) e que não é SLR(1). Exercício 42 (LR(0),SLR(1),LR(1)) Seja a gramática : S ::= E E ::= id E ::= id(e) E ::= E + id Detgermine se a gramática é LR(0), SLR(1), LR(1)? Exercício 43 (Diferenças entre SLR(1) e LALR(1)) Considere a gramática : S ::= X X ::= dc X ::= Ma X ::= bda X ::= bmc M ::= d Determine se a gramática é LR(0), SLR(1) ou LALR(1)? Exercício 44 (Diferenças LL(1)-LALR(1)-LR(1)) Seja a gramática : S ::= (X X ::= F ] S ::= E] E ::= A S ::= F ) F ::= A X ::= E) A ::= ɛ determine se a gramática é LL(1), LR(1), LALR(1)? Exercício 45 (Análise ascendente) Vamos aqui considerar a linguagem dos tipos que permite descrever o tipo dos inteiros e das funções sobre inteiros. Um tipo ou é a constante int ou é da forma τ 1... τ n int em cada τ i é um tipo. Para reconhecer esta linguagem de tipo, consideraremos a gramática com os terminais seguintes {,,, int} e com os não terminais {S, A, T } e o símbolo inicial S: 19

20 S T T A A ::= T ::= int ::= A int ::= T ::= T A 1. Calcula o conjunto dos seguintes de T e de A. 2. Construa, para esta gramática, a tabela de análise SLR(1), indicando em caso de conflitos as diferentes acções possíveis. Será esta gramática uma gramática SLR(1)? 3. Explique a natureza do conflito obtido dando um exemplo de entrada onde este conflito acontece. A gramática é ambígua? 4. Que sugere para resolver este problema? 20

Linguagens Formais e Compilação Ficha de exercícios

Linguagens Formais e Compilação Ficha de exercícios Linguagens Formais e Compilação Ficha de exercícios Simão Melo de Sousa 1 Linguagens Formais: Construir Frases Exercício 1 Para cada uma das gramáticas G seguintes, (a) descreva a linguagem L(G) gerada

Leia mais

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 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

Leia mais

Folha 2 Autómatos e respectivas linguagens

Folha 2 Autómatos e respectivas linguagens Folha 2 Autómatos e respectivas linguagens 1. Considere a linguagem L formada por todas as sequências sobre o alfabeto { 0, 1, 2 } cujo somatório seja divisível por 3. Construa um autómato finito A que

Leia mais

Teoria da Computação Linguagens e Expressões Regulares, Autómatos de Estados Finitos

Teoria da Computação Linguagens e Expressões Regulares, Autómatos de Estados Finitos Teoria da Computação Linguagens e Expressões Regulares, Autómatos de Estados Finitos Simão Melo de Sousa 12 de Outubro de 2011 Conteúdo 1 Linguagens e Expressões Regulares 2 2 Autómatos de Estados Finitos

Leia mais

Linguagens e Programação Gramáticas. Paulo Proença

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;

Leia mais

Compiladores I Prof. Ricardo Santos (cap 3 Análise Léxica: Introdução, Revisão LFA)

Compiladores I Prof. Ricardo Santos (cap 3 Análise Léxica: Introdução, Revisão LFA) Compiladores I Prof. Ricardo Santos (cap 3 Análise Léxica: Introdução, Revisão LFA) Análise Léxica A primeira fase da compilação Recebe os caracteres de entrada do programa e os converte em um fluxo de

Leia mais

Folha 4.2 Análise sintática ascendente

Folha 4.2 Análise sintática ascendente Folha 4.2 Análise sintática ascendente 1. Considere a gramática G = (S, T, P, S) que representa o cabeçalho de métodos na linguagem Java (sem os modificadores de acesso), onde T = {S, Type, Param, Exception,

Leia mais

LFA Aula 09. Gramáticas e Linguagens Livres de Contexto 18/01/2016. Linguagens Formais e Autômatos. Celso Olivete Júnior.

LFA Aula 09. Gramáticas e Linguagens Livres de Contexto 18/01/2016. Linguagens Formais e Autômatos. Celso Olivete Júnior. LFA Aula 09 Gramáticas e Linguagens Livres de Contexto (Hopcroft, 2002) 18/01/2016 Celso Olivete Júnior [email protected] www.fct.unesp.br/docentes/dmec/olivete/lfa 1 Classes Gramaticais Linguagens

Leia mais

Histórico e motivação

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

Leia mais

LINGUAGENS FORMAIS Definições. Desenvolveram-se na História em função da necessidade dos grupos humanos que as empregavam

LINGUAGENS FORMAIS Definições. Desenvolveram-se na História em função da necessidade dos grupos humanos que as empregavam Linguagens Naturais LINGUAGENS FORMAIS Definições Desenvolveram-se na História em função da necessidade dos grupos humanos que as empregavam São muito ricas, mas também ambíguas e imprecisas. Ex.: João

Leia mais

Compiladores. Análise lexical. Plano da aula. Motivação para análise lexical. Vocabulário básico. Estrutura de um compilador

Compiladores. Análise lexical. Plano da aula. Motivação para análise lexical. Vocabulário básico. Estrutura de um compilador Estrutura de um compilador programa fonte Compiladores Análise lexical () Expressões Regulares analisador léxico analisador sintático analisador semântico análise gerador de código intermediário otimizador

Leia mais

Concurso Público para provimento de cargo efetivo de Docentes. Edital 20/2015 CIÊNCIA DA COMPUTAÇÃO II Campus Rio Pomba

Concurso Público para provimento de cargo efetivo de Docentes. Edital 20/2015 CIÊNCIA DA COMPUTAÇÃO II Campus Rio Pomba Questão 01 No processo de construção de compiladores, é essencial compreender e manipular as expressões regulares e suas equivalências. Dentro desse contexto, seja o alfabeto = {a, b, c, d, e} e a seguinte

Leia mais

Gramáticas e Linguagens independentes de contexto

Gramáticas e Linguagens independentes de contexto Capítulo 6 Gramáticas e Linguagens independentes de contexto 6.1 Gramáticas Nesta secção vamos introduzir gramáticas formais para caracterização das linguagens, estudando fundamentalmente as gramáticas

Leia mais

Apresentação. !! Familiarização com os métodos de construção de compiladores de linguagens e com as técnicas de compilação mais habituais.

Apresentação. !! Familiarização com os métodos de construção de compiladores de linguagens e com as técnicas de compilação mais habituais. Apresentação Universidade dos Açores Departamento de Matemática www.uac.pt/~hguerra/!! Aquisição de conceitos sobre a definição de linguagens de programação.!! Familiarização com os métodos de construção

Leia mais

Um Compilador Simples. Definição de uma Linguagem. Estrutura de Vanguarda. Gramática Livre de Contexto. Exemplo 1

Um Compilador Simples. Definição de uma Linguagem. Estrutura de Vanguarda. Gramática Livre de Contexto. Exemplo 1 Definição de uma Linguagem Linguagem= sintaxe + semântica Especificação da sintaxe: gramática livre de contexto, BNF (Backus-Naur Form) Especificação Semântica: informal (textual), operacional, denotacional,

Leia mais

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 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

Leia mais

LINGUAGENS FORMAIS E AUTÔMATOS

LINGUAGENS FORMAIS E AUTÔMATOS LINGUAGENS FORMAIS E AUTÔMATOS O objetivo deste curso é formalizar a idéia de linguagem e definir os tipos de sintaxe e semântica. Para cada sintaxe, analisamos autômatos, ue são abstrações de algoritmos.

Leia mais

Construção de Compiladores Aula 17 - Análise Sintática Descendente

Construção de Compiladores Aula 17 - Análise Sintática Descendente Construção de Compiladores Aula 17 - Análise Sintática Descendente Bruno Müller Junior Departamento de Informática UFPR 3 de Novembro de 2014 1 Análise Sintática Descendente Eliminação de retrocessos Converter

Leia mais

Conceitos básicos de Teoria da Computação

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

Leia mais

Compiladores Aula 4. Celso Olivete Júnior.

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

Leia mais

Teoria da Computação Aula 02 Introduçã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:

Leia mais

Função, interação com o compilador Especificação e reconhecimento de tokens Implementação Tratamento de erros. Prof. Thiago A. S.

Função, interação com o compilador Especificação e reconhecimento de tokens Implementação Tratamento de erros. Prof. Thiago A. S. Análise léxica Função, interação com o compilador Especificação e reconhecimento de tokens Implementação Tratamento de erros Prof. Thiago A. S. Pardo 1 Estrutura geral de um compilador programa-fonte analisador

Leia mais

Como construir um compilador utilizando ferramentas Java

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 4 Análise Léxica Prof. Márcio Delamaro [email protected] Como construir

Leia mais

V Análise Sintática. V.1.1 Gramáticas Livres de Contexto Definições de GLC

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

Leia mais

Folha 3 - Análise léxica

Folha 3 - Análise léxica Folha 3 Análise léxica 1. Escrever um programa em FLEX que permite contar o número de ocorrências de uma cadeia de caracteres contida num ficheiro de texto. 2. Escrever um programa em FLEX que permite

Leia mais

Análise Sintática Introdução

Análise Sintática Introdução Análise Sintática Introdução Renato Ferreira Linguagens e Automatas Linguagens formais são importantes em Computação Especialmente em linguagens de programação Linguagens regulares A linguagem formal mais

Leia mais

Construção de Compiladores

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

Leia mais

Linguagens Formais e Autómatos

Linguagens Formais e Autómatos Parte teórica - Duração: 5 min Nome Número Atenção: Responda às perguntas na folha do enunciado ndique o seu número e nome A prova é sem consulta Cada resposta errada terá uma cotação negativa de 2/3 do

Leia mais

Compiladores. Análise Léxica

Compiladores. Análise Léxica Compiladores Análise Léxica Cristiano Lehrer, M.Sc. Introdução (1/3) Análise léxica é a primeira fase do compilador. A função do analisador léxico, também denominado scanner, é: Fazer a leitura do programa

Leia mais

Gramática. Prof. Yandre Maldonado e Gomes da Costa. Prof. Yandre Maldonado - 1

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

Leia mais

Gramática. Gramática. 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

Leia mais

Estrutura geral de um compilador programa-fonte

Estrutura geral de um compilador programa-fonte Análise léxica Função, interação com o compilador Especificação e reconhecimento de tokens Implementação Tratamento de erros Prof. Thiago A. S. Pardo 1 Estrutura geral de um compilador programa-fonte analisador

Leia mais

Compiladores Ficha de exercícios práticos

Compiladores Ficha de exercícios práticos Compiladores Ficha de exercícios práticos Simão Melo de Sousa Ano lectivo 2004/2005 O objectivo desta ficha é a implementação dos pequenos programas ou funções sugeridos pelo enunciado dos exercícios seguintes.

Leia mais

IV Gramáticas Livres de Contexto

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

Leia mais

Disciplina: LINGUAGENS FORMAIS, AUTÔMATOS E COMPUTABILIDADE Prof. Jefferson Morais

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.

Leia mais

COMPILADORES. Revisão Linguagens formais Parte 01. Geovane Griesang

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

Leia mais

Folha 4.1 Análise sintática descendente

Folha 4.1 Análise sintática descendente 1. Dada a seguinte gramática G = (Σ, T, P, S), onde : Σ = { S, A, B } T = { a, b, c } S a b A c A A a S b S c B B a B b S b) Verifique que G é do tipo LL(1). c) Construa a tabela sintática predicativa

Leia mais

Gramáticas Livres de Contexto Parte 1

Gramáticas Livres de Contexto Parte 1 Universidade Estadual de Feira de Santana Engenharia de Computação Gramáticas Livres de Contexto Parte 1 EXA 817 Compiladores Prof. Matheus Giovanni Pires O papel do Analisador Sintático É responsável

Leia mais

Linguagens Formais e Autômatos P. Blauth Menezes

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

Leia mais

SCC 205 Teoria da Computação e Linguagens Formais

SCC 205 Teoria da Computação e Linguagens Formais Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Ciências de Computação SCC 205 Teoria da Computação e Linguagens Formais Autômatos com pilha Lista 3 1. Dê um

Leia mais

Gramáticas ( [HMU00], Cap. 5.1)

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 é

Leia mais

Exercicios. 7.2 Quais das seguintes afirmações são verdadeiras? Justifica. (d) abcd L((a(cd) b) )

Exercicios. 7.2 Quais das seguintes afirmações são verdadeiras? Justifica. (d) abcd L((a(cd) b) ) Exercicios 7.1 Escreve expressões regulares para cada uma das seguintes linguagens de Σ = {a, b}: (a) palavras com não mais do que três as (b) palavras com um número de as divisível por três (c) palavras

Leia mais

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. 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

Leia mais

Compiladores - Análise Léxica

Compiladores - Análise Léxica Compiladores - Análise Léxica Fabio Mascarenhas 2018.1 http://www.dcc.ufrj.br/~fabiom/comp Introdução Primeiro passo do front-end: reconhecer tokens Tokens são as palavras do programa O analisador léxico

Leia mais

Compiladores - Análise Léxica

Compiladores - Análise Léxica Compiladores - Análise Léxica Fabio Mascarenhas 2017.2 http://www.dcc.ufrj.br/~fabiom/comp Introdução Primeiro passo do front-end: reconhecer tokens Tokens são as palavras do programa O analisador léxico

Leia mais

Prof. Adriano Maranhão COMPILADORES

Prof. Adriano Maranhão COMPILADORES Prof. Adriano Maranhão COMPILADORES LINGUAGENS: INTERPRETADAS X COMPILADAS Resumo: Linguagem compilada: Se o método utilizado traduz todo o texto do programa, para só depois executar o programa, então

Leia mais

Compiladores Analisador Sintático. Prof. Antonio Felicio Netto Ciência da Computação

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

Leia mais

COMPILADORES. Análise sintática. Prof. Geovane Griesang Universidade de Santa Cruz do Sul UNISC Departamento de informática

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

Leia mais

Linguagens Formais e Problemas de Decisão

Linguagens Formais e Problemas de Decisão Linguagens Formais e Problemas de Decisão Mário S. Alvim ([email protected]) Fundamentos de Teoria da Computação (FTC) DCC-UFMG (2018/02) Mário S. Alvim ([email protected]) Linguagens Formais e Problemas

Leia mais

Segunda Lista de Exercícios 2004/2...

Segunda Lista de Exercícios 2004/2... + + UFLA Universidade Federal de Lavras Departamento de Ciência da Computação COM162 Linguagens Formais e Autômatos Prof. Rudini Sampaio Monitor: Rodrigo Pereira dos Santos Segunda Lista de Exercícios

Leia mais

TEORIA DAS LINGUAGENS 3. GRAMÁTICAS INDEPENDENTES DE CONTEXTO

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

Leia mais

Compiladores - Gramáticas

Compiladores - Gramáticas Compiladores - Gramáticas Fabio Mascarenhas - 2013.1 http://www.dcc.ufrj.br/~fabiom/comp Análise Sintática A análise sintática agrupa os tokens em uma árvore sintática de acordo com a estrutura do programa

Leia mais

Problemas decidíveis para LICs

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) é

Leia mais

Introdução à Programação

Introdução à Programação Introdução à Programação Linguagens de Programação: sintaxe e semântica de linguagens de programação e conceitos de linguagens interpretadas e compiladas Engenharia da Computação Professor: Críston Pereira

Leia mais

Compiladores - Análise SLR

Compiladores - Análise SLR Compiladores - Análise SLR Fabio Mascarenhas - 2013.1 http://www.dcc.ufrj.br/~fabiom/comp Um exemplo que funciona Todo estado com um item de redução e algum outro item causa conflito LR(0)! A técnica LR(0)

Leia mais

Aula 8: Gramáticas Livres de Contexto

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,

Leia mais

LINGUAGEM LIVRE DE CONTEXTO GRAMÁTICA LIVRE DE CONTEXTO

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

Leia mais

COMPILADORES. Revisão Linguagens formais Parte 02. Prof. Geovane Griesang

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 λ =

Leia mais

ACH2043 INTRODUÇÃO À TEORIA DA COMPUTAÇÃO

ACH2043 INTRODUÇÃO À TEORIA DA COMPUTAÇÃO ACH2043 INTRODUÇÃO À TEORIA DA COMPUTAÇÃO 2. Linguagens Livres-do-Contexto Referência: SIPSER, M. Introdução à Teoria da Computação. 2ª edição, Ed. Thomson Prof. Marcelo S. Lauretto [email protected]

Leia mais

Compiladores Aula 6. Celso Olivete Júnior.

Compiladores Aula 6. Celso Olivete Júnior. Aula 6 Celso Olivete Júnior [email protected] Na aula passada Analisadores Sintáticos Descendentes ASD com retrocesso ASD preditivo recursivo não-recursivo 2 ASD Preditivo Recursivo Projeto Parte 2

Leia mais

Alfabeto, Cadeias, Operações e Linguagens

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

Leia mais

Gramáticas e Linguagens Independentes de Contexto

Gramáticas e Linguagens Independentes de Contexto Gramáticas e Linguagens Independentes de Contexto 6.1 Responde às uestões seguintes considerando a gramática independente de contexto G = (V, {a, b}, P, R), onde o conjunto de regras P é: R XRX S S at

Leia mais

LFA Aula 05. AFND: com e sem movimentos 05/12/2016. Linguagens Formais e Autômatos. Celso Olivete Júnior.

LFA Aula 05. AFND: com e sem movimentos 05/12/2016. Linguagens Formais e Autômatos. Celso Olivete Júnior. LFA Aula 05 AFND: com e sem movimentos vazios 05/12/2016 Celso Olivete Júnior [email protected] www.fct.unesp.br/docentes/dmec/olivete/lfa 1 Na aula passada... Reconhecedores genéricos Autômatos finitos

Leia mais

Curso de Engenharia de Computação - UTFPR Teoria da Computação - Prof. Celso Kaestner Lista de exercícios

Curso de Engenharia de Computação - UTFPR Teoria da Computação - Prof. Celso Kaestner Lista de exercícios Curso de Engenharia de Computação - UTFPR Teoria da Computação - Prof. Celso Kaestner Lista de exercícios 1. Escreva a expressão regular para as seguintes linguagens sobre o alfabeto {0, 1}: strings começando

Leia mais

As linguagens regulares são I.C Proposição Qualquer linguagem regular é independente de contexto.

As linguagens regulares são I.C Proposição Qualquer linguagem regular é independente de contexto. As linguagens regulares são I.C Proposição 16.1. Qualquer linguagem regular é independente de contexto. Dem. Seja L Σ uma linguagem regular, e seja r uma expressão regular tal que L = L(r).Por indução

Leia mais

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 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.

Leia mais

Compiladores 02 Analise léxica

Compiladores 02 Analise léxica Compiladores 02 Analise léxica Sumário Análise Léxica Definição: Lexema, tokens Tabela símbolos Expressões regulares, automatos Relembrando O compilador é dividido em duas etapas Análise Síntese Análise

Leia mais

Linguagens Formais e Autômatos 02/2015. LFA Aula 02. introdução 28/09/2015. Celso Olivete Júnior.

Linguagens Formais e Autômatos 02/2015. LFA Aula 02. introdução 28/09/2015. Celso Olivete Júnior. LFA Aula 02 Linguagens regulares - introdução 28/09/2015 Celso Olivete Júnior [email protected] 1 Na aula passada... Visão geral Linguagens regulares expressões regulares autômatos finitos gramáticas

Leia mais

Vantagens de uma Gramática. Sintaxe de uma Linguagem. Analisador Sintático - Parser. Papel do Analisador Sintático. Tiposde Parsers para Gramáticas

Vantagens de uma Gramática. Sintaxe de uma Linguagem. Analisador Sintático - Parser. Papel do Analisador Sintático. Tiposde Parsers para Gramáticas Sintaxe de uma Linguagem Cada LP possui regras que descrevem a estrutura sintática dos programas. specificada através de uma gramática livre de contexto, BNF (Backus-Naur Form). 1 Vantagens de uma Gramática

Leia mais

Linguagens Livres de Contexto

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

Leia mais

Análise Sintática I. Eduardo Ferreira dos Santos. Abril, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 42

Análise Sintática I. Eduardo Ferreira dos Santos. Abril, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 42 Análise Sintática I Eduardo Ferreira dos Santos Ciência da Computação Centro Universitário de Brasília UniCEUB Abril, 2017 1 / 42 Sumário 1 Introdução 2 Derivações 3 Ambiguidade 4 Análise sintática descendente

Leia mais

LINGUAGENS FORMAIS E AUTÔMATOS. Prova 2-10/06/ Prof. Marcus Ramos

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

Leia mais

Linguagens e Programação Automátos Finitos. Paulo Proença

Linguagens e Programação Automátos Finitos. Paulo Proença Linguagens e Programação Automátos Finitos Autómatos finitos Formalismo, que permite representar de uma forma clara, um qualquer processo composto por um conjunto de estados e transições entre esses estados.

Leia mais

Computação Fiável Indução - exercícios básicos

Computação Fiável Indução - exercícios básicos Computação Fiável Indução - exercícios básicos Simão Melo de Sousa 17 de Outubro de 2011 Conteúdo 1 Indução Estrutural 1 2 Indução Bem Fundada 9 1 Indução Estrutural Exercício 1 Demonstre por indução estrutural

Leia mais

Teoria da Computação. Unidade 3 Máquinas Universais. Referência Teoria da Computação (Divério, 2000)

Teoria da Computação. Unidade 3 Máquinas Universais. Referência Teoria da Computação (Divério, 2000) Teoria da Computação Referência Teoria da Computação (Divério, 2000) 1 L={(0,1)*00} de forma que você pode usar uma Máquina de Turing que não altera os símbolos da fita e sempre move a direita. MT_(0,1)*00=({0,1},{q

Leia mais

Compiladores. Exemplo. Caraterísticas de Gramáticas. A αβ 1 αβ 2. A αx X β 1 β 2. Lembrando... Gramáticas Livres de Contexto

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

Leia mais

Análise Sintática. Compiladores Cristina C. Vieira. Compiladores 2012/2013

Análise Sintática. Compiladores Cristina C. Vieira. Compiladores 2012/2013 Análise Sintática Compiladores Cristina C. Vieira 1 Árvore Sintática Nós internos: símbolos não-terminais Folhas: símbolos terminais Arcos: de símbolos não-terminais do LHS da produção para nós do RHS

Leia mais

Sintaxe e Semântica. George Darmiton da Cunha Cavalcanti.

Sintaxe e Semântica. George Darmiton da Cunha Cavalcanti. Sintaxe e Semântica George Darmiton da Cunha Cavalcanti ([email protected]) Tópicos Introdução O problema de descrever a sintaxe Métodos formais para descrever a sintaxe Gramáticas de atributos Descrevendo

Leia mais

Capítulo 1: Alfabetos, cadeias, linguagens

Capítulo 1: Alfabetos, cadeias, linguagens Capítulo 1: Alfabetos, cadeias, linguagens Símbolos e alfabetos. Um alfabeto é, para os nossos fins, um conjunto finito não vazio cujos elementos são chamados de símbolos. Dessa maneira, os conceitos de

Leia mais

Máquinas de Turing - Computabilidade

Máquinas de Turing - Computabilidade BCC244-Teoria da Computação Prof. Lucília Figueiredo Lista de Exercícios 03 DECOM ICEB - UFOP Máquinas de Turing - Computabilidade 1. Seja L uma linguagem não livre de contexto. Mostre que: (a) Se X uma

Leia mais

A. (Autómatos finitos determinísticos e não determinísticos AFD e AFND)

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 1ª chamada - Resolução 2h + 30min 31/Jan/2011 Pergunta A.1 A.2 A.3 B.1 B.2 B.3a B.3b C.1 C.2 D.1

Leia mais

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

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

Leia mais

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 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

Leia mais