<html>
<head>
<style>
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Verdana
}
</style>
</head>
<body class='hmmessage'>
Hola a todos, <br><br>estoy haciendo un programa que trabaja con gramáticas (automátas) y bueno... de momento todavía estoy programando el codigo para que el usuario me pueda entrar la gramática que quiera. Para los que no esten muy familiarizados con el tema se trata de una cosa así:<br><font style="" color="#ff0000">G=({S, A, B,...}, {a, b, c,...}, P, S)</font>,  el tamaño del 1er y 2º campo los entra el usuario mediante <font style="" color="#00b050">int main(int argc, char* argv[])</font><br>   (el 1er campo está formado por el alfabeto de no terminales<br>   el 2º campo por el alfabeto de terminales<br>   S es el simbolo inicial)<br>   P es el conjunto de producciones, que empezando por cada uno de uno de los simbolos del 1er campo, sería del estilo:<br>    S-> SA | A<br>    A-> AaA | aa | B<br>    B->...<br><br>Para representar todo esto he creado la clase Gramatica:<br><br><font style="" color="#7030a0">struct Produccion {</font><font style="" color="#7030a0"><br></font><font style="" color="#7030a0">    char* parteIzq;</font><font style="" color="#7030a0"><br></font><font style="" color="#7030a0">    char*** parteDcha; ???????</font><font style="" color="#7030a0"><br></font><font style="" color="#7030a0">};</font><font style="" color="#7030a0"><br></font><font style="" color="#7030a0"><br></font><font style="" color="#7030a0">class Gramatica{</font><font style="" color="#7030a0"><br></font><font style="" color="#7030a0">        char* Sn;</font><font style="" color="#7030a0"><br></font><font style="" color="#7030a0">        char* St;</font><font style="" color="#7030a0"><br></font><font style="" color="#7030a0">        Produccion P;</font><font style="" color="#7030a0"><br></font><font style="" color="#7030a0">        char S;</font><font style="" color="#7030a0"><br></font><font style="" color="#7030a0">...};</font><br><br>por ejemplo en : A-> AaA | aa | B llamaré parteIzq a 'A' y parteDcha a 'AaA | aa | B'<br>Y aquí viene mi problema:<br><font style="font-size: 16pt;" size="4"><u><b>no se como representar la parteDcha !!!!!</b></u></font> Problemas que tengo:<br>· 1º: no sé como de largo será<br>· 2º: si lo represento como un vector, en cada una de las casillas puede haber más de un carácter<br>Por ejemplo, si la gramatica fuera:<br><font style="" color="#ff0000">G=({S, A, B}, {a, b}, P, S)</font><br>S-> SA | A<br>A-> AaA | aa | B<br>B-> bb <br>entonces el usuario tendria que llamar el programa mediante "gram 3 2"<br>y mi programa ppal recogería num_prod=3 y num_elem=2, por lo que ya podría hacer Sn=new char[3] y St=new char[2];<br>y en lo referente a P, tendría:<br>parteIzq=new char[3]; y parteDcha=new char[3]; y a partir de aquí me pierdo:<br><br>parteDcha estaría formada por {S, A, B}, pero cada uno de estos tendría que ser un vector de largada yo_que_sé y encima con esto no sería suficiente ya que como en una casilla no podría poner, por ejemplo, 'AaA', necesitaria que cada casilla apuntara a otro vector de largada desconocida....<br><br>Bueno, y hasta aquí mi GRAN DILEMA, me he alargado mucho, ya lo sé pero quería que se entendiera bien mi duda. Finalmente, mis preguntas:<br><br>- hay alguna forma mejor de representarlo??<br>- existe char***?? (ya me imagino que no, pero algo similar...)<br><br>Bueno, pues esto es todo<br><br>Muchas gracias a todos!!!!<br><br /><hr />Acceso muy fácil al uso compartido de fotos con Fotos de Windows Live™. <a href='http://www.microsoft.com/windows/windowslive/photos.aspx' target='_new'>Arrastrar y colocar</a></body>
</html>