Vâng, tôi đã gặp sự cố này khá nhiều lần, điều này đã dẫn tôi viết hệ thống của riêng tôi để phân tích cú pháp bất kỳ loại cú pháp nào.
Kết quả của việc này có thể được tìm thấy here; lưu ý rằng điều này có thể là quá mức cần thiết, và nó sẽ cung cấp cho bạn một cái gì đó cho phép bạn phân tích cú pháp câu lệnh với cả dấu ngoặc và dấu ngoặc đơn, dấu nháy đơn và kép, như lồng nhau như bạn muốn. Ví dụ, bạn có thể phân tích một cái gì đó như thế này (ví dụ viết bằng Common Lisp):
(defun hello_world (&optional (text "Hello, World!"))
(format t text))
Bạn có thể sử dụng làm tổ, khung (vuông) và dấu ngoặc đơn (tròn), đơn và chuỗi dụng dấu ngoặc kép, và nó rất có thể mở rộng.
Ý tưởng về cơ bản là việc triển khai có thể cấu hình của Máy hữu hạn nhà nước, tạo nên một cây cú pháp trừu tượng theo từng ký tự. Tôi khuyên bạn nên xem mã nguồn (xem liên kết ở trên) để bạn có thể có ý tưởng về cách thực hiện. Nó có khả năng thông qua các biểu thức thông thường, nhưng hãy thử viết một hệ thống bằng cách sử dụng REs và sau đó cố gắng mở rộng nó (hoặc thậm chí hiểu nó) sau này.
Làm dấu ngoặc? Có thể có dấu ngoặc chưa khớp trong dấu ngoặc kép không? Điều gì về dấu ngoặc kép chưa? Đầu ra chính xác cho những điều sau đây: [[ngoặc vuông] kiểm tra] "bra [trong dấu ngoặc kép" "ket] trong dấu ngoặc kép" [quote "trong ngoặc vuông]"] –