[C con Clase] problemazo de diseño

Núria Busom Figueres meteorit666 en hotmail.com
Sab Dic 27 22:00:09 CET 2008


Hola a todos, 

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í:
G=({S, A, B,...}, {a, b, c,...}, P, S),  el tamaño del 1er y 2º campo los entra el usuario mediante int main(int argc, char* argv[])
   (el 1er campo está formado por el alfabeto de no terminales
   el 2º campo por el alfabeto de terminales
   S es el simbolo inicial)
   P es el conjunto de producciones, que empezando por cada uno de uno de los simbolos del 1er campo, sería del estilo:
    S-> SA | A
    A-> AaA | aa | B
    B->...

Para representar todo esto he creado la clase Gramatica:

struct Produccion {
    char* parteIzq;
    char*** parteDcha; ???????
};

class Gramatica{
        char* Sn;
        char* St;
        Produccion P;
        char S;
...};

por ejemplo en : A-> AaA | aa | B llamaré parteIzq a 'A' y parteDcha a 'AaA | aa | B'
Y aquí viene mi problema:
no se como representar la parteDcha !!!!! Problemas que tengo:
· 1º: no sé como de largo será
· 2º: si lo represento como un vector, en cada una de las casillas puede haber más de un carácter
Por ejemplo, si la gramatica fuera:
G=({S, A, B}, {a, b}, P, S)
S-> SA | A
A-> AaA | aa | B
B-> bb 
entonces el usuario tendria que llamar el programa mediante "gram 3 2"
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];
y en lo referente a P, tendría:
parteIzq=new char[3]; y parteDcha=new char[3]; y a partir de aquí me pierdo:

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....

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:

- hay alguna forma mejor de representarlo??
- existe char***?? (ya me imagino que no, pero algo similar...)

Bueno, pues esto es todo

Muchas gracias a todos!!!!

_________________________________________________________________
Arrastrar y colocar: acceso muy fácil al uso compartido de fotos con Fotos de Windows Live™.

http://www.microsoft.com/windows/windowslive/photos.aspx
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20081227/aa5f9d20/attachment.html>


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