. 98 TỔNG QUAN VỀ BIÊN DỊCH
SỐ tpii('9)3 ~“ mm {piR(e)3 rent
` `
SỐ {prinr(*5”}} + tem (prii +") } rơm ` `
2ˆ {prin('2")1 €
Hình 2.21. Dịch 9—-5+2 thành 95-2+, Thủ tục cho các chưa tận e+pr, (erm và rest
Bây giờ chúng ta cài đặt một chương trình dịch viết bằng C theo lược để dịch dựa cú pháp (2.14). Mấu chốt của chương trình dịch này là các đoạn mã C trong Hình 2.22 cho các hàm expr, term và rest. Những hàm này cài đặt các chưa tận tương ứng trong 2.14).
Hàm matech, được trình bày sau, là một đối tác C của đoạn mã trong Hình 2.17 để đối sánh một thẻ từ với ký hiệu sải với và di chuyển đến ký tự kế tiếp qua chuỗi nguyên liệu. Bởi vì mỗi thẻ từ là một ký tự duy nhất trong ngơn ngữ của chúng ta, match cĩ thể được cài đặt bằng cách so sánh và đọc các ký tự.
Đối với những bạn đọc chưa quen thuộc với ngơn ngữ lập trình C, chúng tơi thấy cần phải nêu rõ những khác biệt giữa C và các dẫn xuất của Algol như Pascal khi cân dùng những đặc trưng này của C. Một chương trình trong C gồm cĩ một chuỗi các định nghĩa hàm, và việc thực biện bắt đầu tại một hàm đặc biệt gọi là main. Các định nghĩa hàm khơng được lỗng nhau. Các dấu ngoặc trịn bao quanh danh sách tham số. bắt buộc phải cĩ, ngay cả khi bàm khơng cĩ tham số; vì thế chứng.ta viết expr (}, tezn (} và rest(}. Các hàm giao tiếp với nhau bằng cách truyền tham số “bằng giá trị” hoặc bằng các truy xuất dữ liệu cĩ tầm vực tồn cục cho tất cả các hàm. Chẳng hạn hàm tere() và rest() kiểm tra ký biệu sải với bằng cách sử dụng định danh tồn cục 1ookahaad.