Si tratta di compiti a casa pseudo (è di credito extra). Ho un BST, che è un indice di parole che indicano le linee (memorizzati da qualche altra parte) che contengono le parole. Ho bisogno di implementare un modo per cercare utilizzando S-espressioni in modo da poter combinare e (e) eo (|).
Al prompt dei comandi di un utente potrebbe digitare qualcosa del tipo:
QUERY ((((fire)&(forest))|((ocean)&(boat)))&(water))
In sostanza, che dovrebbe restituire tutte le righe che contengono le parole di fuoco, foresta e acqua così come tutte le righe che contengono oceano, barca e l'acqua.
Quello che ho davvero bisogno di aiuto con la logica per l'analisi e nodi inserimento nella struttura di rappresentare correttamente l'espressione più che il codice vero e proprio. L'unica cosa che ho lavorato che ha senso per me restituisce un insieme di linee per ogni parola nell'espressione. Poi, a seconda se si tratta di un o o e operazione vorrei eseguire un sindacato o tipo di operazione di intersezione su quei set per creare un nuovo set e passare che su l'albero.
Sto tipo di Lost su come analizzare la riga che contiene l'espressione. Dopo alcuni pensavano sembra che il più fuori uno dei sotto-espressioni è la più alta che dovrebbe essere nel mio albero s-espressione? Penso che se potessi ottenere una spinta nella giusta direzione per quanto riguarda l'analisi e l'inserimento delle espressioni nell'albero dovrei essere OK.
Il mio albero di esempio che mi è venuta per la query di cui sopra sembra qualcosa di simile;
&
/ \
| water
/ \
& &
/ \ / \
fire forest ocean boat
Questo ha senso come il fuoco sarebbe tornato un insieme di linee che contengono tutti il fuoco e la foresta sarebbe restituire un insieme di linee che contengono tutti foresta. Poi alla & livello Vorrei prendere quei due set e creare un altro set che conteneva solo le linee che erano in entrambi i set me dando così una serie che ha solo le linee che contengono sia il fuoco e la foresta.
Il mio altro ostacolo è come rappresentare tutto l'albero dopo supero l'ostacolo di parsing. Ho una classe ExpTreeNode che servirà come i nodi per il mio ExpTree (BST) e poi ho 2 sottoclassi, operatore e operando, ma non sono sicuro se questo è un buon approccio.













