Aby tego dokonać, moja wiedza na temat tego rodzaju rzeczy jest słaba.Czy jest to niejednoznaczna gramatyka? Jak mam to rozwiązać?
W każdym razie opracowałem gramatykę bezkontekstową, aby opisać strukturę wyrażeń alegarycznych, dzięki czemu mogę nauczyć się, jak działa algorytm parsowania CYK. Rozumiem, jak taka struktura może działać tylko z algebraicznymi wyrażeniami typu infix, ale nie mogę zrozumieć, jak opracować gramatykę, która może obsłużyć zarówno jednoargumentowe, jak i binarne definicje operatora "-".
Dla porównania, tutaj jest gramatyka pisałem (gdzie S jest symbolem start) w CNF:
S -> x
A -> OS
S -> LB
B -> SR
S -> KS
O -> +
O -> -
O -> *
O ->/
O ->^
K -> -
L -> (
R ->)
Problemem jest to, że jak może cyk analizowania algorytm wiedzieć z wyprzedzeniem, czy zdecydować między S -> KS i A -> OS kiedy napotka operator "-"? Czy gramatyka taka jest już wolna od kontekstu? A co najważniejsze, skoro języki programowania mogą obsługiwać języki z podwójnym i jednoznacznym znakiem minus, jak mam to właściwie przeanalizować?
Podpowiedź będzie taka, że binarny zawsze potrzebuje przed sobą numeru, podczas gdy jednoargumentowy jest albo na początku, albo poprzedzi go operator. – nus