Tôi muốn tạo một ứng dụng đơn giản, bằng chứng khái niệm (REPL) lấy một số và sau đó xử lý các lệnh trên số đó.
Ví dụ: Tôi bắt đầu bằng 1. Sau đó tôi viết " add 2
", nó cho tôi 3. Sau đó tôi viết " multiply 7
", nó cho tôi 21. Sau đó tôi muốn biết nó có phải là số nguyên tố hay không, vì vậy tôi viết " is prime
" (trên số hiện tại - 21), nó cho tôi sai. " is odd
" sẽ cho tôi sự thật. Và như thế.
Bây giờ, đối với một ứng dụng đơn giản với một vài lệnh, thậm chí một lệnh đơn giản switch
sẽ làm để xử lý các lệnh. Nhưng nếu tôi muốn mở rộng, tôi cần phải thực hiện chức năng như thế nào? Tôi có sử dụng mẫu lệnh không? Tôi có xây dựng trình phân tích cú pháp / trình thông dịch đơn giản cho ngôn ngữ không? Nếu tôi muốn các lệnh phức tạp hơn, như " multiply 5 until >200
" thì sao? Điều gì sẽ là một cách dễ dàng để mở rộng nó (thêm các lệnh mới) mà không cần biên dịch lại?
Chỉnh sửa: để làm rõ một số điều, mục tiêu cuối cùng của tôi sẽ không phải là tạo ra một cái gì đó tương tự như WolframAlpha, mà là một bộ xử lý danh sách (số). Nhưng tôi muốn bắt đầu từ từ lúc đầu (trên các số duy nhất).
Tôi đang nghĩ một cái gì đó tương tự như cách người ta sẽ sử dụng Haskell để xử lý danh sách, nhưng là một phiên bản rất đơn giản. Tôi đang tự hỏi liệu một cái gì đó giống như mẫu lệnh (hoặc tương đương) sẽ đủ, hoặc nếu tôi phải tạo một ngôn ngữ nhỏ mới và trình phân tích cú pháp để nó đạt được mục tiêu của mình?
Edit2: Cảm ơn tất cả các câu trả lời, tất cả đều rất hữu ích với tôi, nhưng Emmad Kareem đã giúp tôi nhiều nhất, vì vậy tôi sẽ chọn nó làm câu trả lời. Cảm ơn một lần nữa!