Tôi đã lập trình được nhiều năm, nhưng một nhiệm vụ vẫn khiến tôi mất nhiều thời gian là chỉ định một ngữ pháp cho trình phân tích cú pháp và thậm chí sau nỗ lực quá mức này, tôi không bao giờ chắc chắn rằng ngữ pháp mà tôi nghĩ ra là tốt ( bằng bất kỳ biện pháp hợp lý nào của "tốt").
Tôi không hy vọng rằng có một thuật toán để tự động hóa quá trình chỉ định ngữ pháp, nhưng tôi hy vọng rằng có nhiều cách để cấu trúc vấn đề loại bỏ phần lớn phỏng đoán và thử và sai của phương pháp hiện tại của tôi.
Suy nghĩ đầu tiên của tôi là đọc về các trình phân tích cú pháp và tôi đã thực hiện một số điều này, nhưng tất cả mọi thứ tôi đã đọc về chủ đề này đều lấy ngữ pháp như một (hoặc đủ tầm thường để người ta có thể chỉ định nó bằng cách kiểm tra), và tập trung vào vấn đề dịch ngữ pháp này thành một trình phân tích cú pháp. Tôi quan tâm đến vấn đề ngay trước đây: làm thế nào để xác định ngữ pháp ở vị trí đầu tiên.
Tôi chủ yếu quan tâm đến vấn đề chỉ định một ngữ pháp chính thức đại diện cho một tập hợp các ví dụ cụ thể (tích cực và tiêu cực). Điều này khác với vấn đề thiết kế một cú pháp mới . Cảm ơn Macneil đã chỉ ra sự khác biệt này.
Tôi chưa bao giờ thực sự đánh giá cao sự khác biệt giữa ngữ pháp và cú pháp, nhưng bây giờ khi tôi bắt đầu thấy nó, tôi có thể làm rõ sự làm rõ đầu tiên của mình bằng cách nói rằng tôi chủ yếu quan tâm đến vấn đề chỉ định một ngữ pháp sẽ thi hành một cú pháp được xác định trước: thực tế là trong trường hợp của tôi, cơ sở cho cú pháp này thường là một tập hợp các ví dụ tích cực và tiêu cực.
Làm thế nào là ngữ pháp được chỉ định cho một trình phân tích cú pháp? Có một cuốn sách hoặc tài liệu tham khảo nào ngoài đó là tiêu chuẩn thực tế để mô tả các thực tiễn tốt nhất, phương pháp thiết kế và thông tin hữu ích khác về việc chỉ định ngữ pháp cho trình phân tích cú pháp không? Những điểm nào, khi đọc về ngữ pháp trình phân tích cú pháp, tôi nên tập trung vào?