Đối với lý thuyết của tôi về lớp ngôn ngữ máy tính, chúng tôi có bài tập về nhà để thực hiện một đoạn mã bằng ngôn ngữ chỉ có các câu lệnh kiểm soát luồng (không có câu lệnh). Điều này chủ yếu là để chứng minh rằng bạn có thể viết một ngôn ngữ hoàn chỉnh Turing chỉ với một vòng lặp while.Ngôn ngữ đồng thời
Đối với những người bạn của những người có thể hiểu được văn phạm tiếng ngôn ngữ, đây là những quy tắc ngôn ngữ:
S -> S;S | while C do S od | id := E
E -> E + T | T | E - T
T -> T * F | F | F/T
F -> id | cons | (E)
C -> E = E | E > E | E < E | E >= E | E <= E | E != E | C and C | C or C | not(C)
này được sao chép từ các ghi chú lớp học của tôi, do đó, không đổ lỗi cho tôi nếu có điều gì là thiếu hoặc không chính xác!
Các đoạn mã để thực hiện là:
if d = 0 do
x := 1
else
x := a/d
Dù sao đi nữa, nếu bạn muốn đi trước và viết rằng việc sử dụng các quy tắc ngôn ngữ trên, đi trước. Nếu không, hãy tiếp tục và viết nó bằng bất cứ ngôn ngữ nào mà bạn cảm thấy thoải mái nhất. Nhưng có một vài điều cần lưu ý!
- Không có câu lệnh hoặc bất kỳ loại điều khiển luồng nào khác ngoài vòng lặp.
- Không gian lận: ngữ pháp trên không bao gồm bất kỳ câu lệnh ngắt, câu lệnh trả lại hoặc ngoại lệ nào. Không sử dụng chúng.
Tôi đã nhận được đoạn mã của tôi được viết cho điều này (tôi sẽ đăng bài chỉ để chứng minh đây không phải là hiển thị cho tôi bài đăng codez). Tôi hơi tò mò bất cứ ai khác có thể nghĩ ra.
+1 để có thêm nỗ lực để nhận thêm phản hồi về việc giải quyết bài tập về nhà. – Mostlyharmless