[Cascavel-pm] Quando usar Gramatica e quando usar Regexp? [Was: Artigo - Como Perl Salvou o Projeto Genoma]
Wendel Scardua
wendelscardua em gmail.com
Quinta Maio 24 09:59:31 PDT 2007
A string "a^n b^n" (que não é regular) não pode ser reconhecida com uma
regexp do Perl (a menos de trapaças envolvendo "use re 'eval'").
a^n b^n = "", "ab", "aabb", "aaabbb", etc... , mas não "aabbbb", nem "aaab",
etc.
Essa linguagem (i.e. conjunto de strings) não é "regular", mas sim, "livre
de contexto". Logo, é reconhecida por um autômato-a-pilha, ou por uma
gramática livre de contexto:
S = [vazio] | aSb
Outro exemplo são strings de "(" e ")" balanceados: "()", "(()()(()))",
etc... Não dá pra fazer uma regexp que reconheça isso. Acho que a gramática
correspondente é:
S = [vazio] | (S)S
Em resumo, cuidado: a palavra regular pode não significar o que você acha
que ela significa :-)
On 5/24/07, Luis Motta Campos <luismottacampos em yahoo.co.uk> wrote:
>
> > Mas se a sua string, mesmo que seja uma linha, tiver muitas variações
> > -- poderíamos dizer, se ela for mais ou menos "irregular" -- nesse
> > caso uma gramática pode ajudar bastante.
>
> Sem querer forçar a amizade, você pode por favor me dar um exemplo?
>
> Putamplexos!
>
--
[]s
Wendel
"Não ajustar o auto-ajuste" - http://wendel.scardua.net/
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: http://mail.pm.org/pipermail/cascavel-pm/attachments/20070524/ebfed2f2/attachment.html
Mais detalhes sobre a lista de discussão Cascavel-pm