Dapatkah seseorang mencerahkan saya mengapa keturunan parser rekursif dengan backtracking yang mencoba produksi dan S → a a (agar) tidak mengakui bahasa yang dibentuk oleh grammar S → a S a | a a .
Tampaknya hanya mengurai kata-kata dari bahasa .
Saya membuat parser seperti itu menggunakan ABNF Parser Generator dengan aturan produksi S = "a" S "a" / "aa"
dan parser tidak mengenali kata aaaaaa
, misalnya.
Saya akan berharap untuk menggunakan produksi sampai gabungan dari parse pohon node terminal dari mulai kiri dengan 7 's, dan kemudian naik pohon parse memilih produksi S → a sebuah bukannya sampai terlihat pohon seperti ini:a
S
/ | \
a S a
/ | \
a S a
/ \
a a
aaaaaa
.
aaaaaa
harus diurai dan tidak. Tapi aaaa
apakah parse. Anda tampaknya benar tentang kekuatan 2. Benda itu harus disadap. hanya diurai aa
dengan S = "aa" / "a" [S] "a"
. Bisakah Anda melacak apa yang dilakukan parser?