Trong LLVM tutorials có hướng dẫn cách viết trình biên dịch JIT đơn giản. Unfortunatelly, lexer và phân tích cú pháp trong hướng dẫn này được viết bằng tay. Tôi đã suy nghĩ, giải pháp như vậy là tốt cho mục đích học tập nhưng nó không thích hợp để viết các trình biên dịch phức tạp, sản xuất sẵn sàng. Dường như GCC và vài "trình biên dịch lớn" khác được viết tay. Nhưng tôi nghĩ, rằng tất cả các trình tạo phân tích cú pháp này tạo ra một sự thúc đẩy lớn khi viết trình biên dịch riêng (đặc biệt là khi bạn làm một mình, không có nhóm người).LLVM JIT Trình phân tích cú pháp bằng văn bản với Bison/Antlr/Packrat/Elkhound/
Có thể sử dụng bất kỳ trình tạo trình phân tích cú pháp hiện tại nào như Bison/Antlr/Packrat/Elkhound, vv cùng với LLVM để tạo trình biên dịch JIT không? Tôi muốn có thể "cung cấp" trình phân tích cú pháp liên tục (không phải một lần vào đầu) với các biểu thức và biên dịch chúng trong thời gian chạy.
Tôi đã tìm thấy rất nhiều câu hỏi về trình tạo phân tích cú pháp "tốt nhất, hiện đại" (như thế này: https://stackoverflow.com/questions/428892/what-parser-generator-do-you-recommend). Nếu có thể sử dụng các công cụ này để tạo trình biên dịch LLVM JIT, tôi sẽ biết ơn bất kỳ gợi ý bổ sung nào và đề xuất nào, công cụ nào sẽ là tốt nhất về hiệu suất và tính linh hoạt trong trường hợp cụ thể này.
"Giải pháp như vậy là tốt cho mục đích học tập nhưng không phù hợp để viết các trình biên dịch phức tạp, sản xuất sẵn sàng" - Hm. Tôi luôn nghĩ GCC là một trình biên dịch phức tạp và sẵn sàng sản xuất. Bất cứ điều gì ... –
GCC đã sử dụng bison vào đầu, nhưng bạn nói đúng - tôi đang sửa nó trong câu hỏi của tôi. Nhưng thực sự, tôi rất thích sử dụng một máy phát điện để đơn giản hóa nhiệm vụ này nếu có thể. –
Nếu có, tôi sẽ nói ngược lại là đúng: yacc, Bison, et al, phù hợp cho mục đích học tập và như vậy, nhưng đối với công việc sản xuất nghiêm túc, một trình phân tích cú pháp viết tay có thể là cách duy nhất để đáp ứng các yêu cầu. –