Tôi đang viết một trình phân tích cú pháp trong Emacs Lisp. Đó là trình phân tích cú pháp cho các tệp văn bản giống như sau:Phân tích cú pháp trong Emacs Lisp
rule:
int: 1, 2, 3, ...
string: and, or, then, when
text:
----------
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Pellentesque
in tellus. In pharetra consequat augue. In congue. Curabitur
pellentesque iaculis eros. Proin magna odio, posuere sed, commodo nec,
varius nec, tortor.
----------
more: ...
rule:
...
Tôi không thực sự quan tâm đến khóa (int, string, ...). Tôi muốn giá trị . Vì vậy, đối với tệp int ở trên có giá trị "1, 2, 3, ...", chuỗi "và, hoặc, sau đó, khi" và văn bản "Lorem ..." (không bao gồm dấu gạch ngang).
Tôi đang nghĩ về hai giải pháp khác nhau, nhưng tôi không sử dụng giải pháp nào. Tôi có nên:
tạo ra một phân tích cú pháp đơn giản mà vòng qua tất cả các dòng và mỗi dòng phù hợp nó với một số regex và sau đó nhóm những phần tôi muốn ra ngoài?
thực hiện một trình phân tích cú pháp phức tạp hơn với trình đánh dấu và trình phân tích cú pháp?
Ngay bây giờ các tệp khá đơn giản và tôi đoán tôi không cần phải làm điều gì đó trước như tùy chọn thứ hai. Nhưng những tập tin này có thể nhận được một phức tạp hơn , vì vậy tôi muốn làm cho nó dễ dàng để mở rộng.
Bạn sẽ giải quyết vấn đề này bằng cách nào?
Dường như bạn đang sáng tạo lại YAML. – myfreeweb
Tôi không phát minh ra bất cứ điều gì. Chúng là các tệp nhật ký từ các máy quay gió. Họ trông hơi giống YAML. – rejeep