[SP-pm] FAQ inicial

Gabriel Andrade de Santana gabiruh at gmail.com
Fri Sep 30 07:58:55 PDT 2011


P: Como reconhecer e processar estruturas textuais relativamente complexas?
  Ex: fórmulas matemáticas como:
    z^2 = ((1^(sqrt(zx))/(x^(x*y)))/e-(xy-235)^(1/2))/(8-(x^(y-1)))

R: Você pode se arriscar construir uma expressão regular imensa, que
muito provavelmente só funcionará para um subconjunto limitado da
estrutura do texto de entrada, ou pode usar o módulo
Regexp::Grammars[1].

Com ele é possível processar estruturas textuais complexas,
hierárquicas e até recursivas. O Regexp::Grammars se aproveita de
algumas novas funcionalidades introduzidas no Perl 5.10 para adicionar
algumas extensões nas expressões regulares permitindo definir a
estrutura dos dados de entrada usando construções em forma de
gramáticas[2].

No fim da operação você tem disponível na variável %/ seus dados
hierarquicamente representados numa estrutura em árvore de hashes
aninhados.

Vale a pena dar uma olhada nos exemplos da documentação e na pasta
demo/ presente no diretório raiz do módulo.

[1] https://metacpan.org/module/Regexp::Grammars
[2] http://www.engr.mun.ca/~theo/Misc/exp_parsing.htm


More information about the SaoPaulo-pm mailing list