Tôi đã thấy rất nhiều hướng dẫn để tạo ngôn ngữ lập trình, nhưng rất ít để viết một ngôn ngữ bằng Python. Tôi muốn biết cách (tương đối dễ dàng) tạo ra một ngôn ngữ lập trình bằng Python.Cách tạo ngôn ngữ lập trình bằng Python
Trả lời
- Hãy tưởng tượng ngôn ngữ của bạn. Bạn muốn nó trông như thế nào? Những tính năng nào cần có?
- Hãy suy nghĩ về một ngôn ngữ hiện có tương tự như ngôn ngữ mong muốn của bạn. Sẽ tốt nếu các từ khóa khác nhau, nhưng nếu bạn quyết định tạo Python, bạn sẽ không bắt đầu với Lisp bởi vì các cấu trúc về cơ bản rất khác nhau.
- Tìm ngữ pháp hiện có cho ngôn ngữ bạn đã chọn ở bước 2. Tôi xem tại đây: http://www.antlr3.org/grammar/list.html. Nếu bạn không thể tìm thấy, hãy thực hiện lại bước 2.
- Sử dụng ANTLR (hoặc bất kỳ trình tạo trình phân tích cú pháp nào hiểu ngữ pháp bạn tìm thấy ở bước 3), xây dựng mô-đun Python hiểu ngôn ngữ bạn đã chọn ở bước 2. ANTLR có một số mức hỗ trợ cho một "mục tiêu" của Python (nghĩa là mã trình phân tích cú pháp sẽ được viết bằng Python, trái với việc làm cho một trình phân tích cú pháp hiểu ngôn ngữ Python). Nếu bạn gặp khó khăn với mã phân tích cú pháp trong C (bạn có thể), hãy viết các ràng buộc Python cho nó (có lẽ là dễ sử dụng Boost Python, nhưng bạn có thể sử dụng Python C API trực tiếp nếu bạn khá quen thuộc với cả C và Python).
- Bắt đầu việc sửa đổi (theo từng bước nhỏ lúc đầu) để ngữ pháp từ bước 3 để làm cho nó giống như ngôn ngữ mà bạn thiết kế ở bước 1.
làm những điều này một cách cẩn thận và cố tình, và sau một vài ngày công việc bạn có thể có một trình phân tích cú pháp nửa chừng cho ngôn ngữ của bạn. Sau đó, bạn sẽ cần phải tiêu thụ đầu ra của trình phân tích cú pháp (nếu sử dụng ANTLR, hãy xem xét việc sử dụng các Cây Cú pháp Trừu tượng hoặc các AST, mà nó có thể tạo ra cho bạn). Sau đó, bạn sẽ cần phải chuyển đổi cú pháp được phân tích cú pháp thành một ngôn ngữ đích, chẳng hạn như x86 assembly hoặc một số bytecode trung gian chẳng hạn như được sử dụng bởi Java, Lua, Microsoft .NET hoặc bất kỳ thứ gì.
Chúc may mắn và được cảnh báo trước: quá trình này sẽ mất nhiều thời gian để làm đúng.
Không chắc chắn ý bạn là gì bằng cách "tạo ngôn ngữ lập trình". Nhưng tôi nghĩ bạn có thể thích đọc bài viết tuyệt vời của Peter Norvig (How to Write a (Lisp) Interpreter (in Python)). Điều này cho thấy làm thế nào bạn có thể xây dựng một thông dịch viên Lisp chỉ trong 90 lines of Python!
Khi bạn đã hiểu điều đó, hãy thử (An ((Even Better) Lisp) Interpreter (in Python)).
Tôi nghĩ bạn nên đọc phần này để triển khai ngôn ngữ lập trình.
http://matt.might.net/articles/implementing-a-programming-language/
- 1. Cách tạo ngôn ngữ lập trình .Net?
- 2. Ngôn ngữ lập trình PHP hoặc ngôn ngữ lập trình?
- 3. Tạo ngôn ngữ lập trình với C#
- 4. C# Ngôn ngữ lập trình
- 5. Ngôn ngữ lập trình Siri
- 6. gVim và nhiều ngôn ngữ lập trình
- 7. Dịch mã byte Java sang các ngôn ngữ lập trình và ngôn ngữ lập trình khác
- 8. ngôn ngữ lập trình không xác định
- 9. Ngôn ngữ lập trình Go được viết bằng ngôn ngữ nào?
- 10. Có thể thực hiện một ngôn ngữ lập trình thứ hai bằng ngôn ngữ đó không?
- 11. UML cho ngôn ngữ lập trình C
- 12. Ngôn ngữ lập trình để tạo DLL: C++ hoặc C#
- 13. Windows: Ngôn ngữ lập trình nào?
- 14. Dấu thời gian bằng ngôn ngữ lập trình C
- 15. Ngôn ngữ lập trình nào là FogBugz được viết bằng?
- 16. Ngôn ngữ lập trình đã nhập
- 17. Mảng trong ngôn ngữ lập trình J
- 18. Học cách ngôn ngữ lập trình hoạt động
- 19. Tôi nên chọn ngôn ngữ lập trình chức năng nào làm ngôn ngữ lập trình hàm đầu tiên?
- 20. Đặt ngôn ngữ Wordpress theo lập trình?
- 21. Cần có những tính năng ngôn ngữ nào trong ngôn ngữ lập trình để tạo trình biên dịch?
- 22. Cách kết hợp các ngôn ngữ lập trình khác nhau
- 23. Ngôn ngữ lập trình với cú pháp giống như python nhưng tạo mã gốc
- 24. Ngôn ngữ lập trình ô tô
- 25. Ngôn ngữ lập trình nền tảng
- 26. Ngôn ngữ lập trình bí ẩn
- 27. Tại sao một số ngôn ngữ lập trình nhanh hơn các ngôn ngữ khác?
- 28. Các ngôn ngữ thay thế cho lập trình được nhúng
- 29. chương trình cond bằng ngôn ngữ scala
- 30. Làm cách nào để triển khai ngôn ngữ có cùng ngôn ngữ nhanh hơn ngôn ngữ?
Giống như bất kỳ ngôn ngữ nào khác. Nghiêm túc nếu bạn biết làm thế nào để thực hiện một trình biên dịch (hoặc thông dịch viên) trong bất kỳ ngôn ngữ nào và bạn biết cách lập trình python, bạn biết cách triển khai trình biên dịch trong python. – sepp2k
Bắt đầu bằng cách viết một trình phân tích cú pháp. –
Có các công cụ tốt cho C/C++ để phân tích ngôn ngữ của bạn: [bison] (http://www.gnu.org/software/bison/) và [flex] (http://flex.sourceforge.net/) có thể giúp đỡ rất nhiều. Tôi không có ý tưởng nếu các công cụ như vậy tồn tại cho python là tốt. – amit