Compiladores, LEIC Alameda Ano Lectivo 2009/2010, 2º Semestre Teste 1, 2009/04/17, 11:00, 90 minutos
1/6
1. (3.0 val.) Considere um analisador lexical contendo a sequência ordenada de expressões regulares bc*, a*|c, a|b*, definidas no alfabeto Σ = { a, b, c }.
(a) Construa, pelo algoritmo de Thompson, o autómato finito não determinista (NFA) que implementa a sequência de expressões regulares.
(b) Construa algoritmicamente, a partir do NFA, os subconjuntos do autómato
finito determinista (DFA) equivalente. Explicite quais os estados do NFA realizados em cada estado do DFA.
(c) Minimize algoritmicamente o número de estados do DFA, indicando todas as partições intermédias e respectivos grupos. Represente o diagrama de estados resultante.
(d) Descreva o processamento da sequência de entrada aaabcacc e indique em quantos passos é processada.
Compiladores, LEIC Alameda Ano Lectivo 2009/2010, 2º Semestre Teste 1 (2010/04/17, 11:00, 90 minutos)
Número:
Nome:
Grupo 1:
Grupo 2:
Grupo 3:
Total:
1. (espaço adicional)
Compiladores, LEIC Alameda Ano Lectivo 2009/2010, 2º Semestre
Teste 1, 2009/04/17, 11:00, 90 minutos 3/6
2. (3.5 val.) Considere a seguinte gramática, onde C é o símbolo inicial e { w, x, y, z } é o conjunto de símbolos terminais.
A → y
B → B x C | C w A D | y C → C x | x B w D → w | z
(a) Transforme a gramática, por forma a construir um analisador sintáctico preditivo para a linguagem descrita.
(b) Construa os conjuntos FIRST e FOLLOW dos símbolos não terminais da gramática obtida na resposta anterior.
(c) Construa a tabela do analisador sintáctico preditivo. Apresente uma tabela com o conteúdo da pilha, a entrada e a acção
realizada em cada passo da análise, quando a sequência de entrada é: xxywwyzw. Em caso de ambiguidade na tabela do
analisador, explore todas as possibilidades.
2. (espaço adicional)
Compiladores, LEIC Alameda Ano Lectivo 2009/2010, 2º Semestre
Teste 1, 2009/04/17, 11:00, 90 minutos 5/6
3. (3.5 val.) Crie um analisador lexical (especificação para a ferramenta Flex) que aceite uma lista de faixas musicais, contendo os respectivos títulos, artistas (intérpretes, compositores, etc.), durações e anotações (comentários) e que indique qual o número de faixas com mais de 3 minutos, para cada artista presente na colecção. Algumas linhas começam com espaços brancos e correspondem a comentários do dono da colecção relativamente à faixa anterior e devem ser ignoradas.
Cada uma das linhas com informação tem os seguintes campos (separados por um ou mais caracteres de tabulação):
•
1º e 2º campos (cadeias de caracteres): respectivamente, nome do intérprete e nome da faixa: iniciados por um número ou por uma letra, podem conter números ou letras, _ (sublinhado), (hífen), : (“dois pontos”), e espaços brancos; se um nome estiver entre aspas, pode conter qualquer carácter, excepto a mudança de linha (aspas no interior da cadeia de caracteres são representadas por \").
•
3º campo: duração (formato minutos:segundos – minutos: mínimo de 2 algarismos, segundos: sempre 2 algarismos).
Exemplos: 8923:35, 123:56, 20:22, 2:30, 0:27.
•
o resto da linha corresponde a anotações (comentários)
Codifique todas as funções auxiliares. Pode utilizar estruturas de dados C++ e da STL (e.g. std::string, std::vector, std::map, etc.). Por simplicidade, considere os caracteres acentuados iguais aos não acentuados.
Exemplo de entrada:
Lady Gaga Bad Romance 5:08 http://www.youtube.com/watch?v=qrO4YZeyl0I
Lady Gaga Telephone 9:31 Kill Bill
Current 93 All The Pretty Little Horses 02:38 Nick Cave sings
Antonín Dvo ákř
"
Symphony No. 9 in E Minor, Op. 95"
41:00 Wikipedia: http://en.wikipedia.org/wiki/Symphony_No._9_(Dvo ák)řPetrucci Music Library: http://imslp.org/wiki/Symphony_No.9,_Op.95_(Dvo ák,_Antonín)ř Current 93 When the May Rain Comes 3:25
Current 93 Falling 4:22 feat. Björk
The Killers Spaceman 4:46
it's all in your mind
The Killers Human 4:10
The Killers All The Pretty Faces 4:47
The Killers
"
Mr. Brightside"
3:46 Yet another...David Bowie Space Oddity 3:48 The original Major Tom
Peter Schilling Major Tom 2:50 David Bowie's space oddity some years later Shiny Toy Guns Major Tom 4:11 Is time kind to Major Tom?
This is a 2009 cover of the 1983 song
(which was inspired by the original from 1969)
Saída correspondente:
Lady Gaga 2 Current 93 2 Antonín Dvo ákř 1 The Killers 4 David Bowie 1 Shiny Toy Guns 1