Sono ancora un po 'nuovo in C++, quindi portami con me. Sto implementando un interprete per un linguaggio ipotetico chiamato Core che è descritto da una grammatica BNF. Finora ho implementato un tokenizer che mi dà una bella coda di token che rappresentano un programma Core. Sono ora in procinto di scrivere Parser/Executer che prende l'output dal tokenizer e lo utilizza per popolare un oggetto della classe ParseTree (che devo progettare) utilizzando l'analisi della discesa ricorsiva. Comprendo i fondamenti su come eseguire questa operazione, ma sto riscontrando problemi nell'implementazione della classe ParseTree. Le produzioni descritte dal Core BNF solitamente hanno 2-5 simboli terminali/non terminali, ma alcuni possono avere fino a 20 quindi ho bisogno di un albero n-ary in cui ogni nodo può avere un numero diverso di bambini.Implementazione C++ n-ary tree per l'analisi della discesa ricorsiva
Suppongo che la classe ParseTree non abbia necessariamente bisogno di utilizzare un albero per la sua implementazione ma che sembra avere più senso (esiste una struttura dati diversa che potrebbe essere migliore/più facile?). Non sono a conoscenza di alcun contenitore in STL che si adatta al conto per quello che mi serve. Ho guardato l'albero delle proprietà Boost ma da quello che posso dire che non funzionerà neanche. Preferirei non reinventare la ruota e realizzare un albero da zero se possibile. Inoltre, sono limitato dal fatto di non essere in grado di utilizzare alcuna libreria esterna oltre a Boost. Qual è il modo migliore per implementare il mio ParseTree? Ci sono buone implementazioni di alberi pre-fatte che potrei usare?
La tua domanda è sulle strutture dati, non sull'analisi della discesa ricorsiva. – EJP