Tôi chưa vào lĩnh vực ngôn ngữ chính thức trong khoa học máy tính, vì vậy có lẽ câu hỏi của tôi là ngớ ngẩn. Tôi đang viết một trình phân tích cú pháp NMEA đơn giản trong C++ và tôi phải chọn:Khi nào sử dụng trình tạo phân tích cú pháp, khi nào thì regex là đủ?
Ý tưởng đầu tiên của tôi là xây dựng một máy trạng thái hữu hạn đơn giản theo cách thủ công, nhưng sau đó tôi nghĩ rằng tôi có thể làm điều đó với ít công việc hơn . Tôi đã sử dụng các biểu thức chính quy trước đây, nhưng tôi nghĩ rằng biểu thức chính quy NMEA là rất dài và phải mất "thời gian dài" để phù hợp với nó.
Sau đó, tôi đã nghĩ đến việc sử dụng trình tạo trình phân tích cú pháp. Tôi nghĩ rằng tất cả sử dụng cùng một phương pháp: họ tạo ra một FSA. Nhưng tôi không biết cái nào hiệu quả hơn. Khi nào bạn thường sử dụng trình tạo phân tích cú pháp thay vì regex (tôi nghĩ bạn có thể viết regex trong trình tạo trình phân tích cú pháp)?
Vui lòng giải thích sự khác biệt, tôi quan tâm đến cả lý thuyết và kinh nghiệm.