PHẦN 3.4 NHẬN DẠNG CÁC THẺ TỪ

Một phần của tài liệu Trình biên dịch nguuyên lý kỹ thuật và công cụ (Trang 112 - 113)

. 98 TỔNG QUAN VỀ BIÊN DỊCH

PHẦN 3.4 NHẬN DẠNG CÁC THẺ TỪ

[A-Za-z] [A-2a-z0-—9}*#

Các tập khơng chính qui

Một số ngơn ngừ khơng mơ tả được bằng biểu thức chính qui. Để mính họa khả năng mơ tả hạn chế của các biểu thức chính qui, ở đây chứng tơi đưa ra một số thí dụ vẻ các

kết cấu ngơn ngữ lập trình khơng mỏ tả được bằng biểu thức chính qui. Chứng minh những phán đốn này cĩ thể tìm thấy trong các tài liệu tham khảo.

Biểu thức chính qui khơng mơ tả được các kết cấu cân hoặc kết cấu lồng. Thí dụ tập tất cả các chuỗi ngoặc cân khỏng mơ tả được bằng một biểu thức chính qui. Thế

nhưng tập này cĩ thể được đặc tả qua văn phạm phi ngữ cảnh.

Các chuỗi lặp cũng khơng mơ tả được bằng biểu thức chính qui. Tập {toeto | tơ là một chuỗi chứa các øœ và b}†

khơng biểu diễn được bằng một biểu thức chính qui và cũng khơng biểu diễn được bằng

văn phạm phi ngữ cảnh.

Biểu thức chính qui chỉ biểu thị được một số cố định các lắn lặp hoặc một số lần lặp khơng xác định của một kết cấu đã cho. Hai số lượng tùy ý khơng thể so sánh được

để xem chúng cĩ như nhau hay khơng. Vì thế chúng ta khơng thể mơ tả được các chuỗi Hollerith cĩ dạng nHơya;... #, từ các phiên bản đầu của Fortran bằng một biểu thức

chính qui vì số lượng các ký tự theo sau H phải khớp với số thập phân trước H.

3.4 NHẬN DẠNG CÁC THẺ TỪ

Trong phần trước chúng ta đã xét đến bài tốn đặc tả các thẻ từ. Trong phản này, chúng ta tập trung cho câu hỏi làm thế nào để nhận ra chúug Trong suốt phần này,

chúng ta sẽ dùng ngơn ngữ được tạo ra bởi văn phạm đưới đây iàm thí dụ minh họa. Thí dụ 3.6. Xét đoạn văn phạm sau:

stmt => iŸ expr then sứmt

| ifexpr then stmf else sữnt | 2

expr —» term relop ferm

| term

term => id

| num

trong đĩ các tận là if, then, else, relop. id và num sinh ra các tập chuỗi được cho bởi các định nghĩa chính qui sau:

Một phần của tài liệu Trình biên dịch nguuyên lý kỹ thuật và công cụ (Trang 112 - 113)