Cho văn phạm S → A hoặc S-> BCD; A → BBA hoặc A->EB; B → bEc hoặc B->BC hoặc B->BDc ; C → c ; D → a hoặc D-> BDb; E → a hoặc E->bE , First(C)=?
Trả lời:
Đáp án đúng: D
Trong lý thuyết ngôn ngữ hình thức, First(X) là tập hợp các ký tự đầu cuối có thể xuất hiện đầu tiên trong một chuỗi được dẫn xuất từ X.
Trong trường hợp này, C -> c, nên First(C) = {c}.
Câu hỏi liên quan
Lời giải:
Đáp án đúng: A
Để tìm First(D), ta cần xác định tập hợp các ký tự đầu cuối có thể xuất hiện đầu tiên khi suy dẫn từ D. Theo văn phạm đã cho, D → a hoặc D → BDb. Vì vậy:
- Từ D → a, ta có 'a' thuộc First(D).
- Từ D → BDb, ta cần tìm First(B). Theo văn phạm, B → bEc hoặc B → BC hoặc B → BDc. Do đó, 'b' thuộc First(B).
- Vì 'b' thuộc First(B) và D → BDb, nên 'b' cũng có thể xuất hiện ở đầu khi suy dẫn từ D.
- Tuy nhiên, cần lưu ý rằng C → c.
- Vậy, First(D) = {a, b}.
Lời giải:
Đáp án đúng: D
Để tìm Follow(A), ta cần xem xét các quy tắc sinh trong văn phạm mà A xuất hiện ở vế phải. Trong trường hợp này, A xuất hiện trong quy tắc S → A.
- Vì A là ký tự đầu tiên trong quy tắc S → A và S là ký tự bắt đầu, $ (ký tự kết thúc) sẽ thuộc Follow(A).
- Trong quy tắc A → BBA, B theo sau A. Do đó, First(B) cần được đưa vào Follow(A). First(B) = {b}. Vậy 'b' thuộc Follow(A). Tuy nhiên, vì có A -> EB, E có thể dẫn đến xâu rỗng, nên ta cần xem xét Follow(A) khi A đứng cuối. Trong quy tắc A -> BBA, A đứng cuối cùng, do đó Follow(S) cần được thêm vào Follow(A). Vì S là ký tự bắt đầu, Follow(S) = {$}
- Trong quy tắc A -> EB, B theo sau E. Do đó, First(B) cần được đưa vào Follow(E). First(B) = {b}. Vậy 'b' thuộc Follow(E). Tuy nhiên, vì A -> EB, nên Follow(A) bao gồm Follow(B). First(B) = {b}. Vậy 'b' thuộc Follow(A).
Do đó, Follow(A) = {b, $}.
Vậy đáp án đúng là B. { b, dollar }
Lời giải:
Đáp án đúng: A
To find Follow(C), we analyze where C appears on the right-hand side of productions. From S → BCD, Follow(C) includes First(D). First(D) = {a, b} because D → a or D → BDb. From B → BC, Follow(C) includes Follow(B). From B → BDc, Follow(B) contains 'c'. Also, since C → c, First(C) is {c}. Therefore, Follow(C) includes {a, b, c, $} where '$' represents the end of input.
Lời giải:
Đáp án đúng: C
Câu hỏi này liên quan đến việc xây dựng bảng phân tích cú pháp (parsing table) cho một văn phạm bằng cách sử dụng kỹ thuật phân tích LR (hoặc cụ thể hơn là SLR, CLR, LALR). Cụ thể, nó kiểm tra kiến thức về hàm `GOTO` trong thuật toán xây dựng tập các mục LR(0) và cách tính bao đóng (closure) của một tập các mục LR(0).
Chúng ta có tập các mục `I = { E' -> E.; E -> E. + T }`. Hàm `GOTO(I, +)` có nghĩa là chúng ta xét tất cả các mục trong `I` mà dấu chấm nằm trước ký hiệu '+', sau đó dịch chuyển dấu chấm qua ký hiệu '+' và tính bao đóng của tập các mục mới này.
Trong `I`, chỉ có mục `E -> E. + T` thỏa mãn điều kiện trên. Khi dịch chuyển dấu chấm qua '+', ta được `E -> E + .T`.
Bây giờ, chúng ta cần tính bao đóng của `{E -> E + .T}`. Bao đóng bao gồm việc thêm tất cả các luật sinh có `T` ở vế trái (bên trái mũi tên) và dấu chấm ở đầu vế phải. Các luật sinh đó là `T -> .T * F`, `T -> .F`.
Tiếp theo, chúng ta cần tính bao đóng của các luật sinh mới thêm vào. Ta thấy `F` ở vế trái của `T -> .F`, vì vậy ta thêm các luật sinh có `F` ở vế trái và dấu chấm ở đầu vế phải: `F -> .€` và `F -> .id`.
Vậy, `GOTO(I, +)` sẽ là tập hợp các mục sau: `{ E -> E + .T; T -> .T * F; T -> .F; F -> .€; F -> .id }`.
So sánh với các đáp án, ta thấy đáp án C phù hợp nhất.
Chúng ta có tập các mục `I = { E' -> E.; E -> E. + T }`. Hàm `GOTO(I, +)` có nghĩa là chúng ta xét tất cả các mục trong `I` mà dấu chấm nằm trước ký hiệu '+', sau đó dịch chuyển dấu chấm qua ký hiệu '+' và tính bao đóng của tập các mục mới này.
Trong `I`, chỉ có mục `E -> E. + T` thỏa mãn điều kiện trên. Khi dịch chuyển dấu chấm qua '+', ta được `E -> E + .T`.
Bây giờ, chúng ta cần tính bao đóng của `{E -> E + .T}`. Bao đóng bao gồm việc thêm tất cả các luật sinh có `T` ở vế trái (bên trái mũi tên) và dấu chấm ở đầu vế phải. Các luật sinh đó là `T -> .T * F`, `T -> .F`.
Tiếp theo, chúng ta cần tính bao đóng của các luật sinh mới thêm vào. Ta thấy `F` ở vế trái của `T -> .F`, vì vậy ta thêm các luật sinh có `F` ở vế trái và dấu chấm ở đầu vế phải: `F -> .€` và `F -> .id`.
Vậy, `GOTO(I, +)` sẽ là tập hợp các mục sau: `{ E -> E + .T; T -> .T * F; T -> .F; F -> .€; F -> .id }`.
So sánh với các đáp án, ta thấy đáp án C phù hợp nhất.
Lời giải:
Đáp án đúng: C
Câu hỏi này kiểm tra kiến thức về việc xây dựng tập các mục (items) trong phân tích cú pháp LR (Left-to-right Rightmost derivation). Cụ thể, nó yêu cầu xác định kết quả của hàm `Goto(I, +)` khi `I` là một tập mục và `+` là một ký hiệu đầu vào.
* Phân tích: Hàm `Goto(I, X)` tính tập các mục mới bằng cách dịch chuyển dấu chấm (`.`) qua ký hiệu `X` trong tất cả các mục của tập `I` mà có `X` đứng sau dấu chấm. Sau đó, nó thực hiện phép bao đóng (closure) trên tập các mục mới này để thêm vào tất cả các mục có thể được suy dẫn từ các biến chưa được xử lý (các biến đứng sau dấu chấm).
Trong trường hợp này, `I = { E' -> E.; E -> E. + T }` và `X = +`. Khi ta thực hiện `Goto(I, +)`, ta chỉ quan tâm đến các mục trong `I` mà có `+` đứng sau dấu chấm, đó là `E -> E. + T`. Dịch chuyển dấu chấm qua `+`, ta được `E -> E + .T`.
Tiếp theo, ta cần thực hiện phép bao đóng trên `T`. Điều này có nghĩa là ta cần thêm vào tất cả các luật sinh có `T` ở vế trái: `T -> .T * F` và `T -> .F`. Cuối cùng, ta cần thực hiện phép bao đóng trên `F`, thêm vào `F -> .€` và `F -> .id`
Kết hợp lại, `Goto(I, +) = { E -> E + .T; T -> .T * F; T -> .F; F -> .€; F -> .id }`
* Đánh giá các phương án:
* A: Sai. Tập mục này không phải là kết quả của `Goto(I, +)`.
* B: Sai. Tập mục này không phải là kết quả của `Goto(I, +)`.
* C: Đúng. Tập mục này chính xác là kết quả của `Goto(I, +)` như đã phân tích ở trên.
* D: Sai. Tập mục này không phải là kết quả của `Goto(I, +)`.
Vậy đáp án đúng là C.
* Phân tích: Hàm `Goto(I, X)` tính tập các mục mới bằng cách dịch chuyển dấu chấm (`.`) qua ký hiệu `X` trong tất cả các mục của tập `I` mà có `X` đứng sau dấu chấm. Sau đó, nó thực hiện phép bao đóng (closure) trên tập các mục mới này để thêm vào tất cả các mục có thể được suy dẫn từ các biến chưa được xử lý (các biến đứng sau dấu chấm).
Trong trường hợp này, `I = { E' -> E.; E -> E. + T }` và `X = +`. Khi ta thực hiện `Goto(I, +)`, ta chỉ quan tâm đến các mục trong `I` mà có `+` đứng sau dấu chấm, đó là `E -> E. + T`. Dịch chuyển dấu chấm qua `+`, ta được `E -> E + .T`.
Tiếp theo, ta cần thực hiện phép bao đóng trên `T`. Điều này có nghĩa là ta cần thêm vào tất cả các luật sinh có `T` ở vế trái: `T -> .T * F` và `T -> .F`. Cuối cùng, ta cần thực hiện phép bao đóng trên `F`, thêm vào `F -> .€` và `F -> .id`
Kết hợp lại, `Goto(I, +) = { E -> E + .T; T -> .T * F; T -> .F; F -> .€; F -> .id }`
* Đánh giá các phương án:
* A: Sai. Tập mục này không phải là kết quả của `Goto(I, +)`.
* B: Sai. Tập mục này không phải là kết quả của `Goto(I, +)`.
* C: Đúng. Tập mục này chính xác là kết quả của `Goto(I, +)` như đã phân tích ở trên.
* D: Sai. Tập mục này không phải là kết quả của `Goto(I, +)`.
Vậy đáp án đúng là C.
Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP
Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP
Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP
Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP
Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP

Bộ Đồ Án Tốt Nghiệp Ngành Trí Tuệ Nhân Tạo Và Học Máy
89 tài liệu310 lượt tải

Bộ 120+ Đồ Án Tốt Nghiệp Ngành Hệ Thống Thông Tin
125 tài liệu441 lượt tải

Bộ Đồ Án Tốt Nghiệp Ngành Mạng Máy Tính Và Truyền Thông
104 tài liệu687 lượt tải

Bộ Luận Văn Tốt Nghiệp Ngành Kiểm Toán
103 tài liệu589 lượt tải

Bộ 370+ Luận Văn Tốt Nghiệp Ngành Kế Toán Doanh Nghiệp
377 tài liệu1030 lượt tải

Bộ Luận Văn Tốt Nghiệp Ngành Quản Trị Thương Hiệu
99 tài liệu1062 lượt tải
ĐĂNG KÝ GÓI THI VIP
- Truy cập hơn 100K đề thi thử và chính thức các năm
- 2M câu hỏi theo các mức độ: Nhận biết – Thông hiểu – Vận dụng
- Học nhanh với 10K Flashcard Tiếng Anh theo bộ sách và chủ đề
- Đầy đủ: Mầm non – Phổ thông (K12) – Đại học – Người đi làm
- Tải toàn bộ tài liệu trên TaiLieu.VN
- Loại bỏ quảng cáo để tăng khả năng tập trung ôn luyện
- Tặng 15 ngày khi đăng ký gói 3 tháng, 30 ngày với gói 6 tháng và 60 ngày với gói 12 tháng.
77.000 đ/ tháng