Aula Prática 3€¦ · Aula Prática 3 Geração de linguagens livres do contexto usando...

18
Aula Prática 3 Geração de linguagens livres do contexto usando gramáticas.

Transcript of Aula Prática 3€¦ · Aula Prática 3 Geração de linguagens livres do contexto usando...

Page 1: Aula Prática 3€¦ · Aula Prática 3 Geração de linguagens livres do contexto usando gramáticas. Objectivos •Desenhar gramáticas livres de contexto (GLC) para ... INT mayorNumero(INT

Aula Prática 3Geração de linguagens livres do

contexto usando gramáticas.

Page 2: Aula Prática 3€¦ · Aula Prática 3 Geração de linguagens livres do contexto usando gramáticas. Objectivos •Desenhar gramáticas livres de contexto (GLC) para ... INT mayorNumero(INT

Objectivos

• Desenhar gramáticas livres de contexto (GLC) para descrever linguagens livres de contexto a partir de uma descrição informal dos mesmos.

Page 3: Aula Prática 3€¦ · Aula Prática 3 Geração de linguagens livres do contexto usando gramáticas. Objectivos •Desenhar gramáticas livres de contexto (GLC) para ... INT mayorNumero(INT

Bibliografía

• Técnicas de Compilación: Manual Práctico para estudiantes de informática, L. Acevedo, K. Osorio.

• Autómatas y Lenguajes, R. Brena.

• Teoría de autómatas, lenguajes y computa-ción, J. E. Hopcroft, R. Motwani, J. D Ullman.

Page 4: Aula Prática 3€¦ · Aula Prática 3 Geração de linguagens livres do contexto usando gramáticas. Objectivos •Desenhar gramáticas livres de contexto (GLC) para ... INT mayorNumero(INT

Trabalho Independente

Defina uma gramática livre de contexto para a linguagemque permite a declaração de protótipos de funções. Aestrutura de uma declaração de função deve ser:

<tipo_dado> <nomeie_função>(<parâmetros>)

O tipo de dados é INT, STRING ou BOOL. Os parâmetrosdevem ser instruções separadas por vírgula da forma<tipo dado><nomeie> e a menor quantidade deparâmetros passados é 1.

Page 5: Aula Prática 3€¦ · Aula Prática 3 Geração de linguagens livres do contexto usando gramáticas. Objectivos •Desenhar gramáticas livres de contexto (GLC) para ... INT mayorNumero(INT

Trabalho Independente

Exemplo de funções:

INT mayorNumero(INT numero1, INT numero2)

BOOL esPar(INT numero1)

Page 6: Aula Prática 3€¦ · Aula Prática 3 Geração de linguagens livres do contexto usando gramáticas. Objectivos •Desenhar gramáticas livres de contexto (GLC) para ... INT mayorNumero(INT

Exerciso 1

Construa gramáticas livres de contexto para cada um das seguintes linguagens:

1. Palavras sobre o alfabeto binário que começam com 1.

Ej: 101, 10010, 1111, 110101

2. Palavras do alfabeto {a, b} que cumprem com a restrição anbn | n = 1.

Ej: ab, aabb, aaabbb

Page 7: Aula Prática 3€¦ · Aula Prática 3 Geração de linguagens livres do contexto usando gramáticas. Objectivos •Desenhar gramáticas livres de contexto (GLC) para ... INT mayorNumero(INT

Exerciso 2

Construa gramáticas livres de contexto para cada um das seguintes linguagens:

1. Palavras sobre o alfabeto {a, b} em que aspalavras têm a mesma quantidade da que do B.

Ej: abab, ababba, aaabbbbbbaaa

2. Linguagem dos parêntese bem balançados.

Ej: (()), ()(), (()())()

Page 8: Aula Prática 3€¦ · Aula Prática 3 Geração de linguagens livres do contexto usando gramáticas. Objectivos •Desenhar gramáticas livres de contexto (GLC) para ... INT mayorNumero(INT

Exercíso 3

Desenhe uma gramática para representar somas devetores numéricos. Um vetor numérico se representacomo uma lista de números inteiros separados porcoma e encerrados entre colchetes. A soma mínimacontém 2 vetores e a quantidade mínima denúmeros em um vetor é de dois números inteiros.

Exemplo de somas de vetores numéricos:

[10, 5] + [4, 2] + [1, 7]

[10, 5, 7] + [3, 4, 2] + [1, 7, 6] + [3, 7, 11]

Page 9: Aula Prática 3€¦ · Aula Prática 3 Geração de linguagens livres do contexto usando gramáticas. Objectivos •Desenhar gramáticas livres de contexto (GLC) para ... INT mayorNumero(INT

Exerciso 4

Desenhe a gramática associada a uma linguagempara descrever o manejo de contêineres pelas gruasde um porto. A estrutura de um programadesenvolvido nesta linguagem é a seguinte:

main

{

<instrucciones>

}

Page 10: Aula Prática 3€¦ · Aula Prática 3 Geração de linguagens livres do contexto usando gramáticas. Objectivos •Desenhar gramáticas livres de contexto (GLC) para ... INT mayorNumero(INT

Exerciso 4

O bloco de <instruções> está formado por váriasinstruções separadas por um ponto e vírgula.

Cada instrução pode ser de tipo declaração, criação,mover ou tirar

Page 11: Aula Prática 3€¦ · Aula Prática 3 Geração de linguagens livres do contexto usando gramáticas. Objectivos •Desenhar gramáticas livres de contexto (GLC) para ... INT mayorNumero(INT

Exerciso 4

Declaração

grua nomeie _1, nomeie _2, …, nomeie _n

contêiner nomeie _1, nomeie _2, …, nomeie _n

onde nomeie é um identificador.

Page 12: Aula Prática 3€¦ · Aula Prática 3 Geração de linguagens livres do contexto usando gramáticas. Objectivos •Desenhar gramáticas livres de contexto (GLC) para ... INT mayorNumero(INT

Exerciso 4

Criaçãocriar_grua <variável> <num1> <num2>onde <variável> é o identificador de uma grua e <num1>e <num2> a posição da grua dentro do porto.

criar_contêiner <variável> <num1> <num2>onde <variável> é o identificador do contêiner e <num1>e <num2> a posição do contêiner dentro do porto.grua nomeie _1, nomeie _2, …, nomeie _ncontêiner nomeie _1, nomeie _2, …, nomeie _nonde nomeie é um identificador.

Page 13: Aula Prática 3€¦ · Aula Prática 3 Geração de linguagens livres do contexto usando gramáticas. Objectivos •Desenhar gramáticas livres de contexto (GLC) para ... INT mayorNumero(INT

Exerciso 4

Mover

mover <variável> <num1> <num2>

onde é o identificador de uma grúa e e a posiçãopara onde mover-se-á.

Tirar

tirar <variável>

onde é o identificador de um contêiner. Faz que agrúa mais próxima ao contêiner chegue até ele e odestrua.

Page 14: Aula Prática 3€¦ · Aula Prática 3 Geração de linguagens livres do contexto usando gramáticas. Objectivos •Desenhar gramáticas livres de contexto (GLC) para ... INT mayorNumero(INT

Exerciso 4

Exemplo de programa:

main

{grua g1, g2;contenedor c1;crear_grua g1 2 2;crear_contenedor c1 5 5;mover g1 4 4;crear_grua g2 3 3;quitar c1;

}

Page 15: Aula Prática 3€¦ · Aula Prática 3 Geração de linguagens livres do contexto usando gramáticas. Objectivos •Desenhar gramáticas livres de contexto (GLC) para ... INT mayorNumero(INT

Exerciso 5

Construir una gramática que permita representar un pequeño lenguaje de programación. Un programa en dicho lenguaje tendría la siguiente forma.

PROGRAM <identificador>;

<declaración de variables>;

BEGIN

<instrucciones>

END.

Page 16: Aula Prática 3€¦ · Aula Prática 3 Geração de linguagens livres do contexto usando gramáticas. Objectivos •Desenhar gramáticas livres de contexto (GLC) para ... INT mayorNumero(INT

Exerciso 5

<declaração de variáveis>: pode ser uma declaração ou uma sequência de declarações separadas por ’;’.

A declaração é um <tipo> seguido por umasequência de <identificadores> que seriam os nomesdas variáveis, separados por ’,’. Os tipos podem serINTEGER ou STRING.

Page 17: Aula Prática 3€¦ · Aula Prática 3 Geração de linguagens livres do contexto usando gramáticas. Objectivos •Desenhar gramáticas livres de contexto (GLC) para ... INT mayorNumero(INT

Exerciso 5

<instrucciones>:

• puede ser asignación, que sería de la forma <variable> := <literal entero> o

<variable> := <variable> + <variable>

• PRINT <variable>

Todas las instrucciones están separadas por ’;’.

Page 18: Aula Prática 3€¦ · Aula Prática 3 Geração de linguagens livres do contexto usando gramáticas. Objectivos •Desenhar gramáticas livres de contexto (GLC) para ... INT mayorNumero(INT

Conclusiones

• As gramáticas livres de contexto se podem utilizarpara definir as linguagens livres de contexto comoas linguagens de programação.

• Para desenhar gramáticas livres de contexto nãoexiste uma metodologia, solo existem patrões ougramáticas gerais que se podem utilizar para definirgramáticas mais complexas.