Bài toán [ PROLAN/M ] Giả sử công ty phần cứng NePhihhan phát triển vi xử lý mang tên RISC có khả xử lý kiểu thông tin đơn giản - chuỗi ký tự - thực lệnh thay đơn giản (tìm kiếm chuỗi thay chuỗi khác) Người ta sử dụng hai vùng nhớ, vùng chứa chương trình (danh sách mô tả thay thế), vùng (ta gọi R với kích thước gần không giới hạn) dùng để lưu trữ liệu vào, kết trung gian kết cuối Các chương trình điều khiển vi xử lý viết ngôn ngữ gọi PROLAN/M Trước mô tả thức, ta xét chương trình ví dụ dưới: (aa,b) (ba,a) (bc,a) (c,start) (d,) (b,finish) (,) Khi xử lý chuỗi liệu vào 'abcabcd', chương trình in chuỗi liệu 'finish', nội dung R chuỗi abcabcd, aaabcd, babcd, abcd, aad, db, b, finish Mô tả cú pháp thức ngôn ngữ PROLAN/M (dùng "::=" để "được định nghĩa là" ":" để "hoặc"): ::= (,) ::= : ::= ::= (,) ::= ::= : ::= : ::= ::= Sau chuỗi liệu nhập vào R, chương trình thực sau: vi xử lý tìm kiếm chuỗi chuỗi R Nếu tìm kiếm thành công, thay chuỗi tương ứng R (chuỗi tận bên trái kết tìm kiếm không nhất) Thủ tục lặp lại từ đầu với giá trị R đến tìm thấy chuỗi với giá trị R tại, kết cuối trình xử lý kết thúc Câu Hãy viết sửa lỗi chương trình PROLAN/M chuyển chuỗi kiểu +=? (trong chuỗi số thập phân thân số tự nhiên) thành chuỗi kiểu += chứa đựng phát biểu toán học ( nhau) Ví dụ, chuỗi 1990+123=? chuyển thành 1990+123=2113 sau trình xử lý Lưu chương trình bạn vào tệp SUM.PRM Câu Viết chương trình sửa lỗi theo ngôn ngữ PROLAN/M thực nhiệm vụ sau: (a) Lưu tên tệp văn theo ngôn ngữ PROLAN/M; (b) Tìm nội dung ban đầu R; (c) Biểu diễn trình chuyển chuỗi liệu vào chương trình tệp văn bản; (d) hiển thị kết lên hình; (e) Tìm sơ đồ chuyển đổi Page