Corchetes y llaves anidadas

Cuestiones y dudas acerca de lenguajes de programación diversos.

Moderador: Moderadores

Avatar de Usuario
JM

Corchetes y llaves anidadas

Mensaje por JM » Vie Oct 24, 2003 9:16 pm

Estoy haciendo un juego en el que de vez en cuando sale un brujo que da consejos o predice el futuro. Para que sus respuestas sean lo más variadas posibles y no se repitan mucho estoy preparando un fichero de texto que contiene líneas del estilo de esta...

Mañana va a {hacer sol|llover[ mucho]}[ por la tarde].

Las partes que van entre llaves {} y separadas por caracteres | son optativas, habrá que elejir de forma aleatoria una de entre todas las que haya.
Las partes que van entre corchetes [] son opcionales, es decir, pueden salir o no.
Todo esto puede ir anidado, dentro de unas llaves pueden ir más llaves y más corchetes y dentro de unos corchetes pueden ir más corchetes y más llaves.

Lo que quiero hacer es que el programa interprete una frase como la anterior y sea capaz de sacar una frase con sentido como alguna de estas...

Mañana va a hacer sol.
Mañana va a hacer sol por la tarde.
Mañana va a llover.
Mañana va a llover por la tarde.
Mañana va a llover mucho.
Mañana va a llover mucho por la tarde.

No sé por donde empezar. Supongo que habrá que hacer una función recursiva porque las estructuras están anidadas unas dentro de otras.

Si alguien tiene idea de como hacer esto en lenguaje C, Pascal o Basic...

GRACIAS
Saludos