[SP-pm] Como montar gramáticas com do{}

Luis Motta Campos luismottacampos em yahoo.co.uk
Quarta Março 12 07:20:00 PDT 2008


Hum. Eu estava codificando uma ferramentinha para ajudar o pessoal daqui
a encontrar coisas nos arquivos de log (nós temos 10+ anos de logs
aqui), e escrevi isso aqui para montar uma expressão regular simples
para capturar e verificar datas (sem muito estresse):

my $option_re = do {    # grammar definition
  my $year  = qr{(199\d|20[01]\d)};         # year: 1990 to 2038.
  my $month = qr{(0[1-9]|1[012])};          # month: 01 to 12.
  my $day   = qr{(0[1-9]|[12]\d|3[01])};    # day: 01 to 31.
  my $date  = qr{ $year $month $day }x;     # date: "YYYYMMDD"
  qr{ $date \s*\-\s* $date }xms;    # interval: "YYYYMMDD-YYYYMMDD"
};

Reparem que não sobram "variáveis auxiliares" depois que $option_re
recebe a expressão regular que vai ser usada em seguida.

Eu acredito que todo mundo aqui tenha o conceito de gramática e
produções, como se aprende na cadeira de Compiladores, na faculdade.
Vocês conseguem enxergar isso como uma "definição auto-documentada" de
gramática?

Comentários e perguntas são (sempre) bem-vindos.

Putamplexos!
-- 
Luis Motta Campos (a.k.a. Monsieur Champs) is a software engineer,
Perl fanatic evangelist, and amateur {cook, photographer}



Mais detalhes sobre a lista de discussão SaoPaulo-pm