Wciąż jestem trochę nowy w C++, więc nie przejmuj się mną. Wdrażam tłumacza hipotetycznego języka o nazwie Core, który opisuje gramatyka BNF. Do tej pory zaimplementowałem tokenizator, który zapewnia miłą kolejkę tokenów reprezentujących program Core. Jestem teraz w trakcie pisania Parser/Executer, który pobiera dane wyjściowe z tokenizera i używa go do zapełnienia obiektu klasy ParseTree (który muszę zaprojektować) przy użyciu rekursywnego parsowania. Rozumiem podstawy, jak to zrobić, ale mam problemy z implementacją klasy ParseTree. Produkcje opisane przez Core BNF zwykle mają 2-5 terminali/nieterminalnych symboli, ale niektóre mogą mieć do 20, więc potrzebuję drzewa n-ary, w którym każdy węzeł może mieć inną liczbę dzieci.Implementacja drzewa n-arylowego C++ do użytku w przetwarzaniu rekursywnego spadku
Przypuszczam, że klasa ParseTree niekoniecznie musi używać drzewa do jego implementacji, ale wydaje się, że ma to największy sens (Czy istnieje inna struktura danych, która może być lepsza/łatwiejsza?). Nie jestem świadomy jakiegokolwiek kontenera w STL, który pasuje do rachunku za to, czego potrzebuję. Spojrzałem na drzewo właściwości Boost, ale z tego, co wiem, nie będzie działać. Wolałbym nie wymyślać koła od nowa i zaimplementować drzewo od podstaw, jeśli w ogóle możliwe. Ponadto jestem ograniczony przez to, że nie mogę korzystać z zewnętrznych bibliotek poza Boost. Jaki jest najlepszy sposób na wdrożenie mojego ParseTree? Czy są jakieś dobre, wcześniej przygotowane implementacje drzew, których mogłem użyć?
Twoje pytanie jest o strukturach danych, a nie rekursywnego parsowania. – EJP