Boolesche Ausdrücke beschreiben

Hallo, ich habe ein Problem. Ich soll mit folgender EBNF drei unterschiedliche boolesche Ausdrücke beschreiben, die mind. 20 Zeichen enthalten und jedes Nichtterminalsymbol der EBNF muss min. einmal benutzt werden.
So hier nun die EBNF:

BExp::= Var | Val | ‚(‘ BExp BFun BExp ‚)‘ | ‚not‘ ‚(‚BExp‘)‘
BFun::= ‚and‘ | ‚or‘ | ‚xor‘
Val ::= ‚true‘ | ‚false‘
Var ::= (‚x‘|‚y‘) [’_’ Digit {Digit}]
Digit::= 0 | … | ‚9‘

Mein Problem ist nun, dass ich keine Möglichkeit sehe irgendeinen sinvollen ausdruck zu schreiben. Fehlt da nicht sie if_then_else Funktion? Oder Denke ich einfach zu kompliziert?! Ich glaub ich hab einfach ein brett vor dem Kopf!
Wenn mir irgendwer nur einen ansatz oder eine Idee schildern könnte, wäre das super! (Ich möchte es ja alles selbst machen, brauche nur die zündende Idee)
Danke schonmal für antworten!

Moin, Sarah,

Mein Problem ist nun, dass ich keine Möglichkeit sehe
irgendeinen sinvollen ausdruck zu schreiben.

der Ausdruck ist weder sinnvoll noch sinnlos, sondern schlicht true oder false, wahr oder falsch, 0 oder 1.

Fehlt da nicht sie if_then_else Funktion?

Keineswegs. Du sollt kein Programm schreiben, sondern einen Ausdruck:

E[xpression] = (a and b or a and c) and not (b and not c) and not (false or true)

Warnung: Dieser Ausdruck kann völlig sinnlos unnütz sein, also zB auch immer false - das will aber hier keiner wissen!

Gruß Ralf