Um das vorweg zu nehmen, ist mein Wissen über diese Art von Sachen mickrig.Ist das eine mehrdeutige Grammatik? Wie soll ich es lösen?
Wie auch immer, ich habe eine kontextfreie Grammatik entwickelt, um die Struktur von algebraischen Ausdrücken zu beschreiben, damit ich mir beibringen kann, wie der CYK Parsing-Algorithmus funktioniert. Ich verstehe, wie eine solche Struktur nur mit infixalgebraischen Ausdrücken arbeiten kann, aber ich kann nicht verstehen, wie man eine Grammatik entwickelt, die sowohl die unären als auch die binären Definitionen des "-" Operators handhaben kann.
als Referenz, hier ist die Grammatik ich geschrieben habe in CNF (wobei S das Startsymbol ist):
S -> x
A -> O
S -> LB
B -> SR
S -> KS
O -> +
O -> -
O -> *
O ->/
O ->^
K -> -
L -> (
R ->)
Das Problem ist, dass, wie kann die CYK Algorithmus weiß, vor der Zeit, Parsen, ob zwischen S entscheiden -> KS und A -> O wenn es auf den "-" Operator trifft? Ist eine solche Grammatik nicht mehr kontextfrei? Und am wichtigsten, da Programmiersprachen Sprachen mit sowohl dem binären als auch dem unären Minuszeichen behandeln können, wie sollte ich dies vernünftigerweise analysieren?
Der Hinweis wäre, dass die binäre Eins immer eine Nummer davor benötigt, während die unäre entweder am Anfang steht oder vor einem Operator steht. – nus