30 câu hỏi
Biết rằng các biến position, initial, rate được khai báo kiểu số thực thì khi thực hiện phân tích ngữ nghĩa cho câu lệnh position = initial + rate * 10, số 10 sẽ được ép thành kiểu số thực thành dạng như nào?
10.00
10.0001
10.0002
10.0
Các giai đoạn của một trình biên dịch (chương trình dịch) có thể được nhóm thành các nhóm nào?
Kỳ đầu (Front end), kỳ sau (Back end)
Kỳ đầu, kỳ giữa, kỳ sau
Kỳ đầu, kỳ giữa, kỳ sau, kỳ cuối
Kỳ đầu, kỳ sau, kỳ cuối
Cây phân tích cú pháp (parse tree) được xây dựng dựa trên ý tưởng
Ngôn ngữ được đặc tả bởi các ký hiệu kết thúc. Phân tích cú pháp dựa vào luật sinh để xây dựng cây phân tích cú pháp.
Ngôn ngữ được đặc tả bởi các ký hiệu không kết thúc. Phân tích cú pháp dựa vào luật sinh để xây dựng cây phân tích cú pháp.
Ngôn ngữ được đặc tả bởi các luật sinh. Phân tích cú pháp dựa vào luật sinh để xây dựng cây phân tích cú pháp.
Ngôn ngữ được đặc tả bởi các ký hiệu kết thúc và không kết thúc. Phân tích cú pháp dựa vào luật sinh để xây dựng cây phân tích cú pháp.
Giả sử ngôn ngữ đặc tả bởi các luật sinh sau: Stmt -> id := expr; expr -> expr + expr | expr * expr | id | number; Với câu nhập vào là position := initial + rate * 60 thì sẽ có một cây phân tích cú pháp được xây dựng. Khi duyệt cây phâp tích cú pháp này chúng ta sẽ có kết quả các từ tố (tokens) theo thứ tự là
60, position, :=, initial, +, rate, *
position, :=, initial, +, rate, *, 60
:=, position, initial, +, rate, *, 60
initial, position, :=, +, rate, *, 60
Nếu ký hiệu chưa kết thúc A có luật sinh A → XYZ thì cây phân tích cú pháp có thể có một nút trong có nhãn A và có 3 nút con có nhãn tương ứng từ trái qua phải là
X, Y, Z
Z, Y, X
Y, Z, X
Z, X
Dịch biểu thức trung tố (9 – 5) + 2 thành dạng biểu thức hậu tố của nó là
9 5 – 2 +
+ 9 5 – 2
– 9 5 2 +
2 9 5 - +
Dịch biểu thức trung tố 9 – (5 + 2) thành dạng biểu thức hậu tố của nó là
9 5 – 2 +
9 5 2 + -
– 9 5 2 +
2 9 5 - +
Quá trình dịch được cài đặt bằng cách đánh giá các luật ngữ nghĩa cho các thuộc tính trong cây phân tích cú pháp theo một thứ tự xác định trước. Ta ung phép duyệt cây theo chiều sâu để đánh giá quy tắc ngữ nghĩa. Thì thứ tự duyệt cây sẽ là:
Bắt đầu từ nút gốc, thăm lần lượt (đệ qui) các con của mỗi nút theo thứ tự từ trái sang phải. B. Bắt đầu từ nút con bên trái, thăm lần lượt (đệ qui) các con của mỗi nút theo thứ tự từ trái sang phải rồi lên nút gốc.
Bắt đầu từ nút con bên phải, thăm lần lượt (đệ qui) các con của mỗi nút theo thứ tự từ trái sang phải rồi lên nút gốc.
Bắt đầu từ nút gốc, thăm lần lượt (đệ qui) các con của mỗi nút theo thứ tự từ phải sang trái.
Văn phạm với các luật sinh A->aA; A → XYZ có bao nhiêu ký hiệu chưa kết thúc?
5
4
3
2
Văn phạm với các luật sinh A->aA; A → XYZ; A->b có bao nhiêu ký hiệu kết thúc?
5
4
3
2
Bộ phân tích từ vựng đưa ra
Chương trình nguồn
Các từ vựng và biến sử dụng trong chương trình
Các từ tố
Các qui tắc ngữ pháp
Trong kiến trúc kỳ trước, kỳ sau. Kỳ sau gồm các giai đoạn:
Tối ưu mã trung gian
Sinh mã trung gian, tối ưu mã trung gian, sinh mã đích
Tối ưu mã trung gian, sinh mã đích
Sinh mã đích
Xây dựng bộ phân tích từ vựng trước hết
Phải xác định trong ngôn ngữ lập trình có các từ tố nào.  B. Phải xác định trong ngôn ngữ lập trình có các qui tắc ngữ pháp nào. C. Phải xác định trong ngôn ngữ lập trình có các phép toán nào.
Phải xác định trong ngôn ngữ lập trình có các từ khoá nào.
Trong biểu đồ chuyển chỉ được phép có trạng thái kết thúc:
Đúng
Sai
Tuỳ trong trường hợp
Chỉ đúng khi trạng thái kết thúc có dấu *.
Thuật toán phân tích top – down quay lui đưa ra
Một phân tích trái đối với xâu vào.
Một phân tích phải đối với xâu vào.
Một phân tích trái đối với xâu vào nếu tồn tại hoặc đưa ra thông báo sai.
Thông báo “Thành công”
Khi chuyển hình trạng nếu thay i:=i-1tức là
Dịch biến trỏ trên xâu vào sang phải một ký hiệu
Dịch biến trỏ trên xâu vào sang trái một ký hiệu C. Dịch biến trỏ trên danh sách đẩy xuống thứ nhất D1 sang trái một ký hiệu
Dịch biến trỏ trên danh sách đẩy xuống thứ hai D2 sang một ký hiệu
Văn phạm đệ qui trái là văn phạm tồn tại một dẫn xuất có dạng
A->AX
A->XA
A->By (y là một xâu)
A->+Ay (y là một xâu)
Chương trình nguồn không thể chứa lỗi nào
Lỗi nhập dữ liệu.
Lỗi từ vựng
Lỗi cú pháp.
Lỗi ngữ nghĩa
Văn phạm với các luật sinh: E → EAE; E-> (E); E-> - E; E-> id; A→+ Có thể sinh ra chuỗi nhập nào?
- (id + id)
+id+id+
id*id- (id + id)
+(id + id)
Văn phạm với các luật sinh: E → EAE; E-> (E); E-> +E; E-> id; A->- Có thể sinh ra chuỗi nhập nào?
(id + id)
+id+id+
id*id- (id + id)
+(id + id)
Một văn phạm tạo ra nhiều hơn một cây phân tích cú pháp cho cùng một chuỗi nhập thì được gọi
Văn phạm phi ngữ cảnh
Văn phạm mơ hồ
Văn phạm LL(1)
Văn phạm LR(1)
Phương pháp Xây dựng một bảng phân tích cú pháp LR gồm những phương pháp nào?
Simple LR
Canonical LR
Lookahead-LR
Ba phương pháp: Simple LR, Lookahead-LR, Canonical LR
Khi sử dụng phương pháp SLR để xây dựng một bảng phân tích cú pháp LR thì đây là phương pháp
Dễ cài đặt nhất
Khó cài đặt nhất
Hiệu quả nhất
Đệ quy
Cho một văn phạm G, Mục LR(0) văn phạm là một luật sinh của G
Với một dấu chấm mục tại vị trí nào đó trong vế phải.
Với một dấu chấm mục tại vị trí nào đó trong vế trái.
Với một dấu + mục tại vị trí nào đó trong vế trái.
Với một dấu - mục tại vị trí nào đó trong vế phải.
Giả sử G là một văn phạm với ký hiệu bắt đầu S, ta thêm một ký hiệu bắt đầu mới S' và luật sinh dạng nào dưới đây để được văn phạm mới G' gọi là văn phạm tăng cường.
S->S’
S’->S
S->aS’b
S->aS’
Giả sử I là một tập các mục của văn phạm G thì bao đóng closure(I) là tập các mục được xây dựng từ I theo qui tắc sau:
Đầu tiên là tất cả các mục của I được thêm cho closure(I). Sau đó nếu A → x.By thuộc closure(I) và B → z là một luật sinh thì thêm B → . z vào closure(I) nếu nó chưa có trong đó. Lặp lại bước này cho đến khi không thể thêm vào closure(I) được nữa.
Nếu A → x.By thuộc closure(I) và B → z là một luật sinh thì thêm B → . z vào closure(I) nếu nó chưa có trong đó.
Nếu A → x.By thuộc closure(I) và tồn tại B → z thì thêm B → z vào closure(I).
Nếu A → x.By thuộc closure(I) và tồn tại B → z thì loại A → x.By khỏi closure(I).
Goto(I, X), trong đó I là một tập các mục và X là một ký hiệu văn phạm là bao đóng của tập hợp
Các mục A → xX.y sao cho A → x.Xy thuộc I
Các mục A → x.Xy sao cho A → xX.y thuộc I
Các mục A → xX.y thuộc I
Các mục A → x.Xy thuộc I
Phát biểu nào dưới đây sai
Phân tích cú pháp từ trên xuống có thể được xem như một nỗ lực tìm kiếm một dẫn xuất trái nhất cho chuỗi nhập.
Phân tích cú pháp từ trên xuống là một quá trình xây dựng cây phân tích cú pháp bắt đầu từ nút gốc và phát sinh dần xuống lá
Một dạng tổng quát của kỹ thuật phân tích từ trên xuống, gọi là phân tích cú pháp đệ quy lùi
Một dạng tổng quát của kỹ thuật phân tích từ trên xuống, gọi là phân tích cú pháp đệ quy tiến
Phân tích cú pháp dự đoán không đệ qui cần:
Duy trì một Stack và không cần ngầm định qua các lời gọi đệ quy.
Ngầm định qua các lời gọi đệ quy.
Được thiết kế dựa trên sơ đồ dịch cho các ký hiệu chưa kết thúc trong văn phạm
Các luật sinh dạng A->aA; A->b
Ðịnh nghĩa FIRST(x):
Giả sử x là một chuỗi các ký hiệu văn phạm, FIRST(x) là tập hợp các ký hiệu kết thúc mà nó bắt đầu một chuỗi dẫn xuất từ x.
Nếu X là kí hiệu chưa kết thúc thì FIRST(X) là {X}
Giả sử x là một chuỗi các ký hiệu văn phạm, FIRST(x) là tập hợp các ký hiệu không kết thúc mà nó bắt đầu một chuỗi dẫn xuất từ x.
Nếu X là kí hiệu kết thúc thì FIRST(X) là {X}
