next up previous
Next: About this document ...

Segunda Prova de MAC-211
Primeiro semestre de 2001
Profs. Gubi e Fabio




  1. (2.0 pontos) Escreva expressões regulares para cada uma das seguintes condições:
    1. Reconheça cadeias que possuam letras maiúsculas e minúsculas alternadas.
    2. Reconheça exatamente 1024 cadeias diferentes. Faça isso de duas formas diferentes (usando operadores diferentes).
    3. Reconheça todos os números inteiros positivos menores que 3000.
    4. Reconheça todos os números hexadecimais que podem ser representados com um byte.




  2. (2.0 pontos) O que devemos fazer para depurar um programa que apresenta um determinado erro (bug) só de vez em quando, indeterministicamente? Dê um exemplo.




  3. (2.0 pontos) Para cada uma das chamadas do awk abaixo, explique o que ela faz.
    1. awk 'length($0) > 80'
    2. awk '{ if (NF > 0) print }'
    3. awk '{ printf ``%d: %s'', NR, $0 }'
    4. awk '/banana/ { print $2 $1 }'




  4. (2.0 Pontos) Como implementar na calculadora recursiva o operador   (potência)?




  5. (2.0 pontos) Escreva uma especificação em flex para um filtro que copia um texto da entrada para a saída, trocando
    1. todas as seqüências consecutivas de espaços e TABs por um único espaço,
    2. todos os espaços em branco nos finais das linhas por nada (remoção) e
    3. todas as ocorrências da palavra usuário pelo nome do usuário devolvido pela função char *getlogin(). Para usar essa função é preciso incluir o arquivo de cabeçalho unistd.h.





Boa(sorte$\vert$prova)

Expressões Regulares
--------------------
`x' match the character `x' 
`.' any character (byte) except newline 
`[xyz]' a "character class"; matches  `x' a `y', or a `z' 
`[a-z]' a "character class" with a range in it; matches any lowercase letter.
`[^A-Z]' a "negated character class": any character but those in the class. 
`r*' zero or more r's, where r is any regular expression 
`r+' one or more r's 
`r?' zero or one r's (that is, "an optional r") 
`r{m}'   exactly m r's 
`r{m,n}' anywhere from m to n r's 
`r{m,}'  m or more r's 
`(r)' match an r; parentheses are used to override precedence
`rs' the regular expression r followed by the regular expression s;
`r|s' either an r or an s 
`^r' an r, but only at the beginning of a line
`r$' an r, but only at the end of a line

AWK
---
Um programa é uma seqüência de linhas do tipo:

 /PADRÃO/ { AÇÃO }              ou
 CONDIÇÃO { AÇÃO }

NF = número de campos no registro (linha) atual
se i > 0, $i corresponde ao i-ésimo campo 
          $0 corresponde ao registro (linha) inteiro

FLEX
----
Uma especificação é da forma:

inicializações
%%
regras
%%
código C principal

regras são da forma

PADRÃO {
         AÇÃO
       }

char *yytext contém o texto recém reconhecido pelo PADRÃO.

A ação ECHO copia yytext para a saída.



next up previous
Next: About this document ...
Fabio Kon 2002-06-19