2ª avaliação de Aspectos Teóricos da Computação (2016.1)

2ª avaliação da disciplina EXA858 – Aspectos Teóricos da Computação – 2016.1.
Valor: 10,0 na 2ª unidade.
Prazo: 20/09/2016, 23:59 (via e-mail).
Em dupla.

Crie um programa que faça a leitura de uma definição de Gramática Livre de Contexto em arquivo e analise a entrada do usuário. Após a leitura do arquivo, o programa deve solicitar uma string ao usuário e informar se ela faz parte da gramática ou não.

O arquivo da gramática terá o formato abaixo:

VARIAVEL1:PRODUCAO1|PRODUCAO2|...
VARIAVEL2:=PRODUCAO3|PRODUCAO4|...

Cada linha contém uma variável (não-terminal), seguido de ”:=” e as regras de produção, que podem ser separadas por um ”|”. Todas as variáveis serão identificadas por letras maiúsculas enquanto que os terminais poderão ser letras minúsculas (exceto a letra ”e”), operadores (+, -, *, /), números e parênteses. A produção vazia é representada por um ”e”. Veja o exemplo abaixo:

Não é preciso se preocupar com outros caracteres. Apenas os citados acima serão usados nos testes.

Veja três exemplos de arquivos de gramática:

S:=(S)|0
S:=if E then S else S|if E then S|comando
E:=NON
N:=0|1|2|3|4|5|6|7|8|9
O:=+|-|*|/
S:=AB|e
A:=Aa
A:=e
B:=Bb|e

O programa pode ser feito em qualquer linguagem.

Leave a Reply

Your email address will not be published. Required fields are marked *

*