<html><head><title>Re: [C con Clase] Gramatica para validar expresiones regulares</title>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
</head>
<body>
<span style=" font-family:'Courier New'; font-size: 9pt;">Mírate acá. <a href="http://www.devincook.com/goldparser/index.htm">http://www.devincook.com/goldparser/index.htm</a><br>
Es un poco viejo, pero debe resolverte; además, tienen muchos ejemplos buenos.<br>
<br>
Jose Armando Barrios Leon escribió:<br>
<br>
</span><table>
<tr>
<td width=15 bgcolor= #0000ff><br>
</td>
<td width=803><span style=" font-family:'courier new'; font-size: 9pt;">Saludos cordiales a todos, <br>
Tengo un problema para convertir una gramatica a codigo en vc++.<br>
Supongamos que tengo una gramatica asi:<br>
<br>
CONJUNTOS->ID '=' ELEMENTOS<br>
| ID '=' ELEMENTOS CONJUNTOS<br>
<br>
la puedo pasar a codigo asi:<br>
<br>
void CONJUNTOS()<br>
{<br>
ID();<br>
if(siguiente_elemento != "=")<br>
error();<br>
ELEMENTOS();<br>
if(siguiente_elemento == otro_id)<br>
CONJUNTOS();<br>
}<br>
<br>
bueno, lo anterior era solo un ejemplo y las funciones ahi enumeradas no son relevantes.<br>
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:<br>
LETRA (LETRA|DIGITO)*<br>
donde LETRA y DIGITO son conjuntos ya definidos. Una expresion incorrecta seria:<br>
*LETRA((LETRA ||DIGITO)<br>
porque falta un ')', hay dos '|' y el asterisco no lleva antes algun conjuto o caracter.<br>
<br>
Tengo una gramatica algo parecido a esta:<br>
EXP->ELEMENTO EXP<br>
| ELEMENTO<br>
| '(' EXP ')'<br>
| EXP '|' EXP<br>
| EXP '*'<br>
<br>
donde ELEMENTO es el conjunto de cosas que el usuario puede escribir.<br>
<br>
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.<br>
<br>
Muchas gracias desde ya por la atencion. </td>
</tr>
</table>
<br><br>
<br>
<span style=" font-family:'arial'; color: #c0c0c0;"><i>-- <br>
Saludos,<br>
 Gilberto Cuba Ricardo</body>