[C con Clase] Gramatica para validar expresiones regulares

Samuel Díaz García samueldg en arcoscom.com
Jue Abr 5 09:33:25 CEST 2012


Busca info sobre lex y yacc. Entre los dos te harán lo q quieres.

Salu2
El 05/04/2012 09:28, "Jose Armando Barrios Leon" <jose-bar en hotmail.com>
escribió:

>  Saludos cordiales a todos,
> Tengo un problema para convertir una gramatica a codigo en vc++.
> Supongamos que tengo una gramatica asi:
>
> CONJUNTOS->ID '=' ELEMENTOS
>
> | ID '=' ELEMENTOS CONJUNTOS
>
>
> la puedo pasar a codigo asi:
>
> void CONJUNTOS()
> {
>
> ID();
> if(siguiente_elemento != "=")
>
> error();
>
> ELEMENTOS();
> if(siguiente_elemento == otro_id)
>
> CONJUNTOS();
>
> }
>
> bueno, lo anterior era solo un ejemplo y las funciones ahi enumeradas no
> son relevantes.
> En realidad, tengo un problema para crear una gramatica que evalue si la
> expresion regular ingresada por el usuario es valida, por ejemplo, una
> expresion correcta seria:
> LETRA (LETRA|DIGITO)*
> donde LETRA y DIGITO son conjuntos ya definidos. Una expresion incorrecta
> seria:
> *LETRA((LETRA ||DIGITO)
> porque falta un ')', hay dos '|' y el asterisco no lleva antes algun
> conjuto o caracter.
>
> Tengo una gramatica algo parecido a esta:
> EXP->ELEMENTO EXP
>
> | ELEMENTO
>
> | '(' EXP ')'
> | EXP '|' EXP
> | EXP '*'
>
>
> donde ELEMENTO es el conjunto de cosas que el usuario puede escribir.
>
> Entonces, en concreto quisiera saber si mi gramatica va en buen camino
> para validar las expresiones y cómo puedo hacer para pasarla a codigo.
>
> Muchas gracias desde ya por la atencion.
>
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20120405/ead358e6/attachment.html>


Más información sobre la lista de distribución Cconclase