Чи може хтось просвітити мене, чому рекурсивний аналізатор спуску з відстеженням, який намагається виробляти та (у тому порядку), не розпізнає мову, сформовану граматикою .
Здається, лише розбирають слова з мови .
Я створив такий аналізатор, використовуючи цей генератор парсерів ABNF з правилом виробництва, S = "a" S "a" / "aa"
і аналізатор, наприклад, не розпізнає це слово aaaaaa
.
Я б очікував, що він використовуватиме виробництво до тих пір, поки конкатенація кінцевих вузлів дерева розбору зліва не починається з 7 -х, а потім піднімається вгору на дерево розбору, вибираючи натомість виробництво поки дерево не схоже це:a
S
/ | \
a S a
/ | \
a S a
/ \
a a
aaaaaa
.
aaaaaa
має розбиратися, а ні. Але aaaa
розбирає. Ви, мабуть, праві щодо повноважень 2. Реч має бути помилена. вона розбирає лише aa
с S = "aa" / "a" [S] "a"
. Чи можете ви простежити, що робить аналізатор?