Czy ktoś może mi dlaczego parser rekurencyjnego zejścia z produkcje i (w tej kolejności) nie rozpoznaje języka utworzonego przez gramatykę .
Wygląda na to, że analizuje tylko słowa z języka .
Wygenerowałem taki analizator składni za pomocą tego generatora analizatora składni ABNF z regułą produkcyjną, S = "a" S "a" / "aa"
a analizator składni aaaaaa
na przykład nie rozpoznaje tego słowa .
Spodziewałbym się, że użyje produkcyjnego dopóki konkatenacja węzłów końcowych parsowania drzewa od lewej strony nie zacznie się od 7 , a następnie pójdzie w górę drzewa parsowania, wybierając zamiast tego produkcyjne dopóki drzewo nie będzie wyglądać jak to:a
S
/ | \
a S a
/ | \
a S a
/ \
a a
aaaaaa
.
aaaaaa
powinien parsować i nie. Ale aaaa
parsuje. Najwyraźniej masz rację, jeśli chodzi o potęgi 2. To musi być błąd. parsuje tylko aa
z S = "aa" / "a" [S] "a"
. Czy potrafisz prześledzić, co robi parser?