Tôi đang cố gắng tìm ra cách phân tích cú pháp một chuỗi ở định dạng này thành một cây như cấu trúc dữ liệu có chiều sâu tùy ý.Chuỗi phân tích cú pháp thành một cấu trúc cây?
"{{Hello big|Hi|Hey} {world|earth}|{Goodbye|farewell} {planet|rock|globe{.|!}}}"
[[["Hello big" "Hi" "Hey"]
["world" "earth"]]
[["Goodbye" "farewell"]
["planet" "rock" "globe" ["."
"!"]]]]
Tôi đã thử chơi một số biểu thức chính quy cho điều này (chẳng hạn như # "{([^ {}] *)}"), nhưng mọi thứ tôi đã thử dường như "làm phẳng" cây thành một danh sách lớn các danh sách. Tôi có thể tiếp cận điều này từ góc độ sai, hoặc có thể một regex không phải là công cụ thích hợp cho công việc.
Cảm ơn sự giúp đỡ của bạn!
Vì vậy, sau khi có ngữ pháp đó, cần sử dụng trình tạo trình phân tích cú pháp để tạo trình phân tích cú pháp dựa trên ngữ pháp này, phải không? Hơn nữa, trình phân tích cú pháp nên được cho ăn bằng một câu và sau đó cây có thể được mang lại, phải không? – bikashg
@Bikash - Có và Không. Bạn * có thể * sử dụng trình tạo trình phân tích cú pháp (như yacc hoặc bison) nếu bạn muốn, hoặc bạn có thể viết trình phân tích cú pháp đệ quy của riêng bạn (nó đơn giản đáng kể). Nếu bạn sử dụng yacc hoặc bò rừng, bạn cần phải viết hành động mà thực sự sẽ xây dựng cây. Tôi không nghĩ rằng yacc/bison cung cấp cho bạn cây của chính nó. Họ chỉ đơn giản là nhận ra ngữ pháp. –