Cách tốt nhất để xử lý nhiều trình phân tích cú pháp Flex/Bison bên trong một dự án là gì?Nhiều trình phân tích cú pháp flex/bison
Tôi đã viết một trình phân tích cú pháp và bây giờ tôi cần một trình phân tích cú pháp thứ hai trong cùng một dự án. Cho đến nay trong phần thứ ba của parser1.y
Tôi đã chèn phương thức main(..)
và được gọi là yyparse
từ đó.
Những gì tôi muốn có được là có hai phân tích cú pháp khác nhau (parser1.y
và parser2.y
) và có thể sử dụng chúng từ một chức năng bên ngoài (chúng ta hãy giả main
trong main.cpp
).
Tôi nên sử dụng biện pháp phòng ngừa nào để xuất các hàm yyparse
bên ngoài .y
tệp và tôi nên xử lý hai trình phân tích cú pháp như thế nào?
PS. Tôi đang sử dụng g + + để biên dịch nhưng không phải là phiên bản C++ của Flex và Bison và tôi muốn giữ nó theo cách này (để tránh đóng gói bộ phân tích cú pháp bên trong một đối tượng).
Khi tôi làm điều này, từ khoá và trình phân tích cú pháp của tôi có rất nhiều tham chiếu đến YYTYPE và YYSTYPE, v.v. và việc biên dịch không thành công. Tại sao những người không được chuyển đổi? Tôi đang làm gì sai ?? Tôi không muốn một trình phân tích cú pháp reentrant, tôi chỉ muốn một trình phân tích cú pháp một lần gọi một trong hai trình phân tích cú pháp, sau đó chương trình thoát ra. – TimeHorse
@TimeHorse: Với khoảng thời gian từ khi câu hỏi này được trả lời và bình luận/câu hỏi của bạn, tôi nghĩ bạn nên đặt một câu hỏi mới, minh họa vấn đề bạn gặp phải với hai ví dụ nhỏ/ngữ pháp nhỏ (MCVE - [MCVE ]) và hiển thị quá trình xây dựng bạn đang sử dụng và các thông báo lỗi bạn đang nhận được. Nếu bạn không có cơ hội để cung cấp thông tin đó, mà bạn nhận được với một câu hỏi mới, tôi không thể thực sự đưa ra câu trả lời. Bằng mọi cách, hãy quay lại và để lại bình luận ở đây yêu cầu tôi xem xét câu hỏi mới của bạn; hãy xem xét bao gồm cả liên kết đến câu hỏi này trong câu hỏi của bạn. –