[C con Clase] Gramatica para validar expresiones regulares

Jose Armando Barrios Leon jose-bar en hotmail.com
Jue Abr 5 09:25:37 CEST 2012


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. 
 		 	   		  
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20120405/23902c59/attachment.html>


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