Jako ćwiczenie, implementuję parser dla wyjątkowo prostego języka zdefiniowanego w Haskell, używając następującego GADT (prawdziwa gramatyka dla mojego projektu zawiera dużo więcej wyrażeń, ale ten wy
Zauważyłem, że this algorithm należy użyć, aby usunąć całą lewą rekursję. jednak używam do problemów z tym konkretnym gramatyki: A -> Cd
B -> Ce
C -> A | B | f
Cokolwiek staram skończę w pętli lub
Chciałbym stworzyć gramatykę, która pozwoli na curry wywołania funkcji. Czyli: a() /// good
a()() /// good
a()()() /// good
a(a) /// good
a(a()()) /// good
/// etc
Moje pierwsze ukłucie było to