Tôi đang làm việc trên ngôn ngữ lập trình mới, nhưng tôi đã luôn luôn bối rối bởi thực tế là tất cả mọi người đang sử dụng yaxx/lex để phân tích mã, nhưng tôi thì không.yacc/lex hoặc mã hóa bằng tay?
Trình biên dịch của tôi (đã hoạt động) được mã hóa bằng C++/STL và tôi không thể nói nó phức tạp hoặc mất quá nhiều thời gian. Nó có cả một số loại lexer và phân tích cú pháp, nhưng chúng không được tạo tự động. Trước đó, tôi đã viết một trình biên dịch C (không đầy đủ spec) theo cùng một cách - nó đã có thể biên dịch chương trình trong 1 vượt qua, với tất cả các tài liệu tham khảo trở lại giải quyết & tiền xử lý - điều này chắc chắn là không thể với yacc/lex.
Tôi không thể thuyết phục bản thân để loại bỏ tất cả điều này, và bắt đầu lặn vào yaxx/lex - có thể cần một nỗ lực để thực hiện và có thể giới thiệu một số hạn chế ngữ pháp.
Có điều gì tôi nhớ khi không sử dụng yacc/lex không? Tôi có làm điều ác không?
Thiết kế tốt, kiểu mô-đun (ví dụ, trình phân tích mã thông báo và từ vựng phải được phân tách hoàn toàn) có thể làm cho vấn đề này ít hơn. Vẫn còn quan trọng. – delnan