Trình bày định nghĩa chương trình dịch và phân loại chương trình dịch trình bày giai doạn phân tích và giai đoạn tổng hợp của chương trình dịch

66 6 0
Trình bày định nghĩa chương trình dịch và phân loại chương trình dịch  trình bày giai doạn phân tích và giai đoạn tổng hợp của chương trình dịch

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Contents Câu 1:Trình bày định nghĩa chương trình dịch phân loại chương trình dịch ? Câu 2:Trình bày giai doạn phân tích giai đoạn tổng hợp chương trình dịch Câu 3: Vẽ hình ví dụ trình dịch biểu thức Câu 4: Trình bày phương pháp phân tích Top Down Câu 5: Trình bày phương pháp phân tích Bottom up Câu 6:Trình bày thuật tốn tính First(X) First(α) Câu 7: Trình bày thuật tốn tính Follow(A) Lập bảng phân tích tất định LL(1) Trình bày điều kiện để văn phạm LL(1), giải thích ý nghĩa điều kiện (trang 80) 10 Trình bày mục đích, nhiệm vụ bảng ký hiệu chương trình dịch, khả làm việc với bảng ký hiệu (trang 140,141) (khơng cần vẽ hình) 12 10 Trình bày cách tổ chức bảng ký hiệu định danh danh sách phạm vi 13 Bài tập 15 Câu 1: If 15 Câu 2: While: 17 Câu 3: Read 19 Câu 1:Trình bày định nghĩa chương trình dịch phân loại chương trình dịch ? -Định nghĩa: Chương trình dịch chương trình dùng để chuyển chương trình(ngơn ngữ nguồn) thành chương trình tương đương ngơn ngữ khác (Ngơn ngữ đích) -Phân loại chương trình dịch: Các chương trình dịch phân thành nhiều loại tùy theo tiêu chí đưa để phân loại: +Theo số lần duyệt: duyệt đơn, duyệt nhiều lần +Theo mục đích: tải chạy, gỡ rối, tối ưu, chuyển đổi ngôn ngữ, chuyển đổi định dạng +Theo độ phức tạp chương trình nguồn chương trình đích Asembler(Chương trình hợp dịch) dịch từ ngơn ngữ assembly ● ngơn ngữ máy Nó ngôn ngữ cấp thấp gần với ngôn ngữ máy ● Preproccessor(Tiền xử lý): dịch từ ngôn ngữ cấp cao ngôn ngữ cấp cao khác (dịch số cấu trúc sang cấu trúc cũ) ● Compiler(Biên dịch): dịch từ ngôn ngữ cấp cao sang ngôn ngữ cấp thấp +Theo phương pháp dịch chạy: + Thơng dịch cịn gọi diễn giải: hành động câu lệnh ngôn ngữ quy định thực trực tiếp Thông thường với hành động có chương trình thực +Biên dịch: chương trình ngồn dịch tồn thành chương trình đích chạy +Theo lớp văn phạm: LL,LR => Tuy có nhiều cách phân loại chương trình dịch giống nguyên lý Chúng ta tạo nhiều loại chương trình dịch cho ngơn ngữ nguồn khác chương trình đích chạy loại máy tính khác mà dùng kĩ thuật Câu 2:Trình bày giai doạn phân tích giai đoạn tổng hợp chương trình dịch Giai đoạn phân tích: Chương trình ngng phải trải qua bước sau Phân tích từ vực: đọc luồng ký tự tạo thành chương trình nguồn từ trái sang phải, nhóm thành ký hiệu mà ta gọi từ tố tên, số hay phép tốn Phân tích cú pháp: phân tích cấu trúc ngữ pháp chương trình Các từ tố nhóm lại theo cấu trúc phân cấp Đôi ta gọi phân tích phân cấp Phân tích ngữ nghĩa: phân tích tất đặc tính khác chương trình mà khơng thuộc đặc tính cú pháp Nó kiểm tra chương trình nguồn để tìm lỗi ngũ nghĩa hợp kiểu Hai giai đoạn phân tích ngữ nghĩa , cú pháp hoạt động hai chức tách rời kết hợp thành Giai đoạn tổng hợp: Sinh mã trung gian; sinh chương trình sinh mã trung gian nhằm hai mục đích: dễ sinh tối ưu mã máy dễ chuyển đổi mã máy Tối ưu mã : sửa đổi chương trình ngơn ngữ trung gian nhằm cải tiến chương trình đích hiệu Sinh mã: tạo chương trình đích từ chương trình ngơn ngữ trung gian tối ưu Câu 3: Vẽ hình ví dụ q trình dịch biểu thức Bảng kí hiệu: Position intial rate Tên Câu 4: Trình bày phương pháp phân tích Top Down Phân tích top-dơn xuất phát từ ý tưởng cố gắng tạo phân tích cho câu vào đỉnh xuống Với VPPNC cho trước trước tiên đánh dấu lựa chọn sản xuất Chẳng hạn sản xuất có dạng S->aSbS |aS|c lựa chọn Trước tiên ta dùng trỏ dến xâu vào.Ký hiệu xâu vài trỏ đến gọi kí hiệu vào Vị trí trỏ trỏ kí hiệu bên trái xâu vào Ta bắt đầu cơng việc với phân tích có nút nút gốc S S trở thành nút xét tiến hành bước đệ quy sau: Nêu nút xét nút kí hiệu khơng kết thúc A ta lấy lựa chọn Ta kí hiệu X1…Xk Lại lấu nút X1 nút xét Trường hợp k=0(sản cuất e) lấy nút bên phải A nút xét Nêu nút xét kí hiệu kết thúc a, so sánh với kí hiệu vào Nếu giống lấy nút bên trái a làm nút xét chuyển trỏ xâu vào sang bên phải kí hiệu Nếu a khơng giống quay lại nút sản xuất trước tạo điều chỉnh lại trỏ xâu vào cần thiết, sâu ta lại thử lựa chọn Nếu khơng cịn lựa chọn lại qua lại nút trước Câu 5: Trình bày phương pháp phân tích Bottom up Phân tích bottom up ngược lại với phương pháp top-dơn Phương pháp lá( từ kí hiệu vào) cố gắng xây dựng thành cách hướng lên gốc Phân tích bottom up gọi phân tích thu gọn Q trình phân tích sử dụng phân tích phải duyệt suy dấn phải có thêt tương ứng với xâu vào Một hành động phân tích bao gồm việc quét xâu đỉnh danh sách đẩy xuống để tìm xem có sản xuất có vế phải với kí hiệu đỉnh danh sách hay khơng Nếu có ta thực thu gọn cách thay đổi kí hiệu kí hiệu vế trái sản xuất Nếu có nhiêu lựa chọn ta đánh thứ tự chúng để thử Nếu khơng thể có thu gọn ta gạt thêm kí hiệu vào để tiếp tục Chúng ta cố gắng thực thu gọn trươc gạt thêm Nếu đến cuối xâu mà không thu gọn thực ta quay lại bước chuyển dịch trước mà thực thu gọn Nếu cịn thu gọn khác ta lại thử tiếp thu gọn Câu 6:Trình bày thuật tốn tính First(X) First(α) First(X) Ta sử dụng quy tác sau khơng cịn kí hiệu kết thúc kí hiệu є Cịn thêm vào tập FIRST đó: Nếu X kí hiệu kết thúc FIRST (X) = {X}; Nếu X - > є sản xuất thêm є vào FIRST(X); Nếu X -> Y1Y2…Yk sản xuất, với i є có FIRST(Y1)….FIRST(Yi-1) (Nghĩa Y1…Yi-1 => є ) ta thêm kí hiệu kết thúc có FIRST(Yi) vào FIRST(X).Nếu i = k(tức є có FIRST(Yi) với i = 1,2,3…k) thêm є vào FIRST(X) FIRST(α) Bây ta tính FIRST(α) cho xâu c α có dạng X1X2…Xn sau: Thêm vào FIRST(X1X2…Xn ) tất kí hiệu khơng phải є FIRST(X1) Ta thêm kí hiệu є FIRST(X2) є thuộc FIRST(X1), kí hiệu khơng phải є FIRST(X3) є thuộc FIRST(X1) FIRST(X2), … Cuối cùng, thêm є vào FIRST(X1X2…Xn ) với i mà FIRST(Xi) có chữa є n=0 Câu 7: Trình bày thuật tốn tính Follow(A) Lập bảng phân tích tất định LL(1) a Tính FOLLOW (A) Ta dùng quy tắc sau thêm vào tập FOLLOW: Đặt $ vào FOLLOW (A), với A ký hiệu bắt đầu (đỉnh cây), $ ký hiệu đánh dấu kết thúc xâu vào (chú ý A không thiết phải trùng với $ ta dang tính FOLLOW cho con); Nếu có sản xuất dạng B ->𝛂Aβ (với β # 𝛂), phần từ thuộc FIRST (β) trừ e cho vào FOLLOW (A); Nếu có sản xuất dạng B—> 𝛂A (hoặc sản xuất B—> 𝛂Aβ với FIRST (β) chứa ɛ, nghĩa β => ɛ ), phần từ FOLLOW (B) cho vào FOLLOW (A) b Lập bảng phân tích tất định LL(1) Đối với sản xuất A🡪 𝛂 thực bước Đối với kí hiệu kết thúc 𝛂 thuộc FIRST (𝛂) thêm A🡪 𝛂 M[A, 𝛂] Nếu ɛ thuộc First(𝛂) thêm A🡪𝛂 b thuộc FOLLOW (A) Nếu ɛ thuộc FIRST(𝛂) $ thuộc FOLLOW(A) thêm A🡪 𝛂 vào M[A,$] Đặt tất vụ trí chưa định nghĩa lại bảng lỗi Note: Văn phạm LL1 khơng bị nhập nhằng khơng có đệ quy trái Trình bày điều kiện để văn phạm LL(1), giải thích ý nghĩa điều kiện (trang 80) Điều kiện để có văn phạm LL(1): Nếu A => 𝛂|β hai sản xuất phân biệt G điều kiện sau phải thỏa mãn: Khơng có kí hiệu kết thúc 𝛂 mà 𝛂 β suy dẫn xâu bắt đầu 𝛂 Giải thích: FIRST (𝛂) FIRST (β) phải khác (Không giao nhau) Giả sử FIRST (𝛂) FIRST (β) giao a vừa FIRST (𝛂) vừa FIRST (β) Ta xét sản xuất A=> 𝛂 sản xuất đưa vào dịng a đưa vào cột FIRST(𝛂) có cột a (tóm lại đưa sản xuất vào dịng A cột a) xét sản xuất A=> β sản xất đưa vào dịng a đưa vào cột FIRST(β) có cột a (tóm lại đưa sản xuất vào dịng A cột a) => Ơ dịng A cột a có hai sản xuất A=> β A=>𝛂 nên văn phạm LL(Có chứa sản xuất) Nhiều 𝛂,β suy dẫn rỗng Giải thích: Giả sử 𝛂,β suy xâu rỗng: sản xuất vế phải suy xâu rỗng dựa vào FOLLOW biếu bên vế trái Xét A=> 𝛂 (𝛂 rỗng)có thể đưa dòng A cột Follow A Xét A => β (β rỗng) => đưa sản xuất vào dòng A cột FOLLOW A => Các cột follow (A) có sản xuất A=> 𝛂 A=> β è nên văn phạm LL Nếu β => ɛ 𝛂 khơng suy dẫn xâu bắt đầu ký hiệu kết thúc b thuộc FOLLOW (A) b ● ● ● 30 Int _ty pe Co nst _ki nd No_type Proc_kind T ● ● ● int _ty pe Var _ kin d w ● ● ● 2 Int _ty pe Var _ kin d d ● ● ● ● ● w Z ● ● ● ● p ● w e ● r ● a D ● ● Int _ty W ● p pe Var _ kin d Int _ty pe Var _ki nd ● p ● ● ● no_type proc_ kind w ● ● ● 1 Int_type Var_ kind Int_type Var_ kind ● 2 Int_type Var_ kind ● d ● ● ● r ● e ● a ● no _ty pe pro c_ kin d z ● INT _ty pe Var _ kin d int_type Var_ kind Int_type Var_ kind Bài tập sách giáo khoa c) (a+a)*(a+a) Ngăn xếp Đầu vào Đầu $E (a+a)*(a+a)$ $E’T (a+a)*(a+a)$ E🡪TE’ $E’T’F (a+a)*(a+a)$ T🡪FT’ $E’T)E( (a+a)*(a+a)$ F🡪(E) $ E’T)E a+a)*(a+a)$ $E’T)E’T a+a)*(a+a)$ E🡪TE’ $ E’T)E’a a+a)*(a+a)$ T🡪a $ E’T)E’ +a)*(a+a)$ $E’T)E’T+ +a)*(a+a)$ $ E’T)E’T a)*(a+a)$ $ E’T)E’T’F a)*(a+a)$ T🡪FT’ $ E’T)E’T’a a)*(a+a)$ F🡪a $ E’T)E’T’ )*(a+a)$ $ E’T)E’ )*(a+a)$ T’🡪epsilon $ E’T) )*(a+a)$ E’🡪epsilon E’🡪+TE’ $ E’T *(a+a)$ $ E’T’F* *(a+a)$ $ E’T’F (a+a)$ $E’T’)E( (a+a)$ $ E’T’)E a+a)$ $E’T’)E’T a+a)$ E🡪TE’ $ E’T’)E’T’F a+a)$ T🡪FT’ $ E’T’)E’T’a a+a)$ F🡪a $ E’T’)E’T’ +a)$ $ E’T’)E’ +a)$ T’🡪epsilon $ E’T’)E’T+ +a)$ E’🡪+TE’ $ E’T’)E’T a)$ $ E’T’)E’T’F a)$ T🡪FT’ $ E’T’)E’T’a a)$ F🡪a $ E’T’)E’T’ )$ $ E’T’)E’ )$ T’🡪epsilon $ E’T’) )$ E’🡪epsilon $ E’T’ $ $ E’ $ T’🡪epsilon $ $ E’🡪epsilon T🡪*FT’ F🡪(E) b) a+a*a*a Ngăn xếp Đầu vào Đầu $E a+a*a*a$ $E’T a+a*a*a$ E🡪TE’ $E’T’F a+a*a*a$ T🡪FT’ $ E’T’a a+a*a*a$ F🡪a $E’T’ +a*a*a$ $E’ +a*a*a$ T’🡪epsilon $E’T+ +a*a*a$ E’🡪+FT’ $E’T a*a*a$ $E’T’F a*a*a$ T🡪FT’ $E’T’a a*a*a$ F🡪a $E’T’ *a*a$ $E’T’F* *a*a$ $ E’T’F a*a$ $ E’T’a a*a$ $E’T’ *a$ T’🡪*FT’ F🡪a $E’T’F* *a$ T’🡪*FT’ $E’T’F a$ $E’T’a a$ $E’T’ $ $E’ $ T’🡪epsilon $ $ E’🡪epsilon Ngăn xếp Đầu vào Đầu $E (a+a)*a$ $E’T (a+a)*a$ F🡪a a) (a+a)*a E🡪TE’ $E’T’F (a+a)*a$ T🡪FT’ $E’T)E( (a+a)*a$ F🡪(E) $ E’T)E a+a)*a$ $E’T)E’T a+a)*a$ E🡪TE’ $ E’T)E’a a+a)*a$ T🡪a $ E’T)E’ +a)*a$ $E’T)E’T+ +a)*a$ $ E’T)E’T a)*a$ $ E’T)E’T’F a)*a$ T🡪FT’ $ E’T)E’T’a a)*a$ F🡪a $ E’T)E’T’ )*a$ $ E’T)E’ )*a$ T’🡪epsilon $ E’T) )*a$ E’🡪epsilon $ E’T *a$ $ E’T’F* *a$ $ E’T’F a$ $ E’T’a a$ $ E’T’ $ $ E’ $ T’🡪epsilon $ $ E’🡪epsilon E’🡪+TE’ T🡪*FT’ F🡪a E🡪TE’ E’🡪+E|epsilon T🡪FT’ T’🡪T|epsilon F🡪PF’ F’🡪*F’|epsilon P🡪(E)|a|b|epsilon X F0 F1 E E’ (,a,b epsilon ,+ epsilon ,+ T T’ Epsilon Epsilon F’ *,epsilon *,epsilon F P F2 (,a,b (,a,b (,a,b F3 F4 ...Câu 1 :Trình bày định nghĩa chương trình dịch phân loại chương trình dịch ? -Định nghĩa: Chương trình dịch chương trình dùng để chuyển chương trình( ngơn ngữ nguồn) thành chương trình tương... 2 :Trình bày giai doạn phân tích giai đoạn tổng hợp chương trình dịch Giai đoạn phân tích: Chương trình ngng phải trải qua bước sau Phân tích từ vực: đọc luồng ký tự tạo thành chương trình nguồn từ trái... tốn Phân tích cú pháp: phân tích cấu trúc ngữ pháp chương trình Các từ tố nhóm lại theo cấu trúc phân cấp Đơi ta gọi phân tích phân cấp Phân tích ngữ nghĩa: phân tích tất đặc tính khác chương trình

Ngày đăng: 09/03/2023, 16:00

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan