[Programación] Re: [Programación] Flex y expresiones regulares (O
gioco bonito...)
Pablo
programacion@lugro.org.ar
Tue, 11 May 2004 20:51:04 -0300
----- Original Message -----
From: "Horacio Castellini" <horacio9573@yahoo.com.ar>
To: "Lugro Programación" <programacion@lugro.org.ar>
Sent: Tuesday, May 11, 2004 6:16 PM
Subject: [Programación] Flex y expresiones regulares (O gioco bonito...)
| Hola:
| Estoy desarrollando un programa en flex, para computar hilos y cluster en
| lista de correos y como caballito de ensallo uso los históricos de la
lista
| lugro ;) (espero que seba no se enoje)... Ahora bien el siguiente código
flex
| me da ciertos resultados indeceados....
| --------------------------------------------------------------------------
------------
| %{
| #include<stdio.h>
| #include<stdlib.h>
| int nfrom, ntema;
| %}
| nfrom=ntema=0;
| PATRON ^From:.*"(".*
| TEMA ^Subject.*
|
|
| %%
| {PATRON} {
| nfrom++;
| printf("%s ",yytext);
| }
|
| {TEMA} {
| ntema++;
| printf("%s \n",yytext);
| }
|
| . /*ignora lo no reconocido*/
|
| [ \t\n]+ /*se come los blancos*/
|
| %%
|
| int main(int argc,char *argv[])
| {
| yylex();
| printf(" Numero de From %d\n",nfrom);
| printf(" Numero de Temas %d\n",ntema);
| return 0;
| }
| --------------------------------------------------------------------------
--------
|
| Como ser:
|
| From: (Sebastián Criado) Subject: Ayuda con minidistro en disket
| From: (Rosarinos.com) Subject: Ayuda con minidistro en disket
| Subject: Re: Ayuda con minidistro en disket
| ^^^^^^^^^^^^^^^^^^^^^^ Esto no debe salir
| From: (Sebastián Criado) Subject: Ayuda con minidistro en disket
|
| Pues aca hay un cluster referente al tema "Ayuda con minidistro en disket
"
| entre 3 nodos (personas) distintas pero no quiero que aparesca el
"null-from"
| en stdout... alguna solución....?
IMHO, fijate de chequear la longitud de yytext ( si es NULL) en donde
parseas PATRON. Creo que flex
tiene asociado a yytext algo asi como un "yysize" (realmente no recuerdo) y
tal vez
tambien te puede servir de ayuda.
{PATRON} {
if ( yytext != NULL){
nfrom++;
printf("%s ",yytext);
}
}
Saludos. Pablo.