. 98 TỔNG QUAN VỀ BIÊN DỊCH
PHẦN 3.2 ĐỊNH NGHÌA CÚ PHÁP
PHẦN 3.2 ĐỊNH NGHÌA CÚ PHÁP 33 list liệt . địgh tiế du digit 9
Hình 2.2. Cây phân tích cú pháp cho 9—5+2 theo văn phạm trong Thí dụ 2.1. Thí dụ 2.3. Một loại danh sách hơi khác là chuỗi các câu lệnh được phân cách bởi dấu chấm phẩy trong các khối begin-end của ngơn ngữ Pascal. Mật đạc điểm của những danh sách như thế là giữa các thẻ từ begin-end cĩ thể là một danh sách rồng. Chúng ta cĩ thể xây dựng một văn phạm cho các khối begin-end bằng các luật sinh:
block —> begin opí_ símfs end opt_stmts —» sửmt list |e
stml list —» stmt_ list ; sữnŒ | sữmt
Chú ý rằng đối với opf_stmts (optional statement, câu lệnh cĩ thể cĩ hoặc khơng cũng được), vế phải thứ bai cĩ thể cĩ là e, biểu thị cho chuỗi rơng. Nghĩa là op£_ sms cĩ thể được thay bằng một chuỗi rỗng, vì thế một ư/ocb cĩ thể chỉ chứa chuỗi cĩ hai thẻ begin-end. Chú ý rằng các luật sinh cho s/m# is thì tương tự như những luật sinh cho iist trong Thí dụ 2.1, với dấu chấm phẩy nằm ở vị trí một tốn tử số học và sứm ở vị trí của đigử. Chúng ta khơng trình bày các luật sinh cho sữm/. Nĩi cụ thể, chúng ta sẽ thảo luận về các luật sinh thích hợp cho nhiều loại câu lệnh, chẳng hạn câu lệnh if, câu lệnh gán, vân vân.
Cây phân tích cú pháp
Một cây phân tích cú pháp (parse tree) cho thấy bằng hình ảnh xem làm thế nào dẫn xuất ra một chuỗi của ngơh ngữ từ ký hiệu khỏi đâu (start) của một văn phạm. Nếu chưa tận Á cĩ luật sinh A -» XYZ thì cây phân tích cú pháp cĩ thể cĩ một nút nội cĩ nhãn A và ba con cĩ nhãn lần lượt từ trái sang phải là X, Y và Z.