Jika kita mendalami dokumentasi suatu bahasa pemrograman, kamu pasti akan berjumpa dengan spesifikasi sintaks bahasa pemrograman tersebut yang biasanya dinyatakan dalam notasi EBNF (Extended Backus-Naur Form). Notasi EBNF ini tidak hanya mampu menjelaskan sintaks bahasa pemrograman tetapi juga serangkaian simbol yang mempunyai struktur tertentu, ambil contoh adalah format data JSON.

Tentunya membiasakan membaca notasi EBNF tidak gampang. Ambil contoh notasi EBNF untuk mendefinisikan tanggal yang memiliki pola YYYY-MM-DD. Kita bisa bermain-main dengan notasi EBNF di sini.

<date> ::= <year> "-" <month> "-" <day>
<month> ::= "1" [0-2] | "0" [1-9]
<day> ::= "0" [1-9] | [1-2] [0-9] | "3" [0-1]
<year> ::= [0-9] [0-9] [0-9] [0-9]

Ada cara yang lebih gampang bagi orang-orang yang lebih suka melihat gambar. Spesifikasi sintaks bisa dinyatakan menggunakan diagram sintaks. Beberapa orang menyebutnya sebagai diaram rel (railroad). Contoh yang ada berikut berasal dari spesifikasi JSON di sini.

Contoh sintaks diagram JSON

Dan sudah ada orang yang membuat library Python ini untuk memudahkan menggambarkan diagram sintaks ini secara terprogram. Betapa indahnya.

Kita telah repot-repot belajar soal diagram sintaks dan notasi EBNF. Buat apa? Setidaknya aku mempelajari teknik terstruktur yang digunakan untuk menjelaskan suatu sintaks. Aku pikir hal ini akan membantu dalam mengerjakan parser.