Dalam kode menggunakan paket parsing PLY, saya menghadapi aturan tata bahasa seperti ini:

    def p_clauses(self, p):
        """clauses : clauses clause"""
        p[0] = p[1] + [p[2]]

Apa tujuan dari tanda kurung di sekitar p[2]? Saya tidak dapat menemukan apa pun tentang dokumentasi.

PS: Di sini adalah kode parser yang lebih lengkap jika diperlukan. Selain itu, di sini adalah contoh lain yang menggunakan sintaks ini (Ini adalah parser C).

1
MHTB 18 Januari 2020, 12:04

2 jawaban

Jawaban Terbaik

Kurung luar dan kurung dalam tidak ada hubungannya satu sama lain. Tanda kurung luar melakukan hal yang sama seperti dalam pernyataan seperti l = [1, 2, 3]: mereka mewakili pembuatan daftar. [p[2]] membuat daftar yang satu elemennya adalah p[2].

Di sini, p[1] adalah daftar, dan penetapan menetapkan p[0] ke daftar baru yang dibuat dengan menambahkan p[1] dan daftar satu elemen baru [p[2]].

4
user2357112 supports Monica 18 Januari 2020, 09:19

P[0] adalah p[1] + daftar baru yang berisi p[2].

-2
Noah.Ehrnstrom 18 Januari 2020, 20:43