Trình biên dịch : Nguyên Lý - Kỹ thuật - Công cụ part 6

Trong suốt thập niên 1980 và thập niên 1990 hàng loạt các trình biên dịch miễn phí và các công cụ phát triển trình biên dịch đã được tạo ra cho mọi loại ngôn ngữ. Cả hai như là một phần của đề án GNU và của những khởi xướng về nguồn mở khác. Một số trong chúng được xem là có chất lượng cao và nguồn mở tạo nên hứng khởi cho bất kì ai quan tâm trong các nguyên lý về trình biên dịch hiện đại | PHẦN KẾT HỢP VỚI BẢNG KÝ HIỆU 09 Trong Hình mục ghi thứ zero được để trông bởi vì lookup trà về 0 để chỉ ra rằng không có mục ghi nào dành cho chuỗi đang xét. Các mục ghi thứ nhất và thứ hai dành cho các từ khóa div và mod. Mục ghi thứ ba và thứ tư dành cho các định danh count vồ 1. ARRAY symtable Hình . Bảng ký hiệu và mảng đế lưu các chuỗi. Đoạn mã giả cho thể phân từ vựng được dùng đê xử lý các định danh được trình bày trong Hình một cài đặt bằng c xuất hiện trong Phẩn . Khoảng trắng và hằng số nguyên được xử lý bởi thể phân từ vựng bàng phương thức giống như trong Hình ciìa phẩn trước. Khi thể phân từ vựng hiện tại của chúng ta đọc một chữ cái nó bắt đầu lưu các chữ cái và ký số trong vùng đệm lexbuf. Chuỗi được thu thập vào ỉexbừf sau đó sẽ dược tìm trong bâng ký hiệu bằng thao tác lookup. Bởi vì bàng ký hiệu được khởi gán với các mục ghi cho từ khóa div và mod như trong Hình thao tác lookup sẽ thấy những mục ghi này nếu lexbuf chứa div hoặc mod. Nếu không có mục ghi nào cho chuỗi đang trong lexbuf nghĩa là lookup trả về 0 thì lexbuf chúa một từ tố của một định danh mới. Một mục ghi cho định danh mới sẽ được tạo ra bàng thao tác insert. Sau khi chèn p là chỉ mục của mục ghi trong bảng ký hiệu cho chuỗi đang trong lexbuf. Chỉ mục này dùng đế tương tác với thể phán cú pháp bằng cách đặt tokenvaỉ là p và thẻ từ trong trường token của mục ghì này được trả về. Hành động mặc nhiên là trả về sô nguyên mã hóa cho ký tự làm thẻ từ. Bởi vì ở đây các thẻ từ một ký tự không có thuộc tính tokenval được đăt là NONE. 70 MỘT TRÌNH BIÊN DỊCH MỘT LƯỢT ĐƠN GIẢN function lexan integer var lexbuf-. arrayfO. 1001 of char c char begin loop begin đọc một ký tự vào c if c là một ký tự trống blank hoặc một ký tự tab then không thực hiện gì else if c là một ký tự newline then ỉineno ỉineno 1 else if c là một ký sô then begin đặt tokenval là giá trị của ký sô này và các ký sô theo sau return NUM end else if c là một chữ cái then begin đặt c và các ký tự ký

Không thể tạo bản xem trước, hãy bấm tải xuống
TÀI LIỆU MỚI ĐĂNG
27    187    2    29-06-2024
Đã phát hiện trình chặn quảng cáo AdBlock
Trang web này phụ thuộc vào doanh thu từ số lần hiển thị quảng cáo để tồn tại. Vui lòng tắt trình chặn quảng cáo của bạn hoặc tạm dừng tính năng chặn quảng cáo cho trang web này.