Jest to pseudo praca domowa (to dodatkowy kredyt). Mam BST który jest indeksem słów, które wskazują na linii (przechowywanych gdzie indziej), które zawierają słowa. Trzeba zaimplementować sposób wyszukiwać za pomocą s-wyrażeń więc mogę łączyć i (&) i albo (|).
W wierszu polecenia użytkownik może wpisać coś takiego:
QUERY ((((fire)&(forest))|((ocean)&(boat)))&(water))
W istocie, że powinien zwrócić wszystkie wiersze zawierające słowa ogień, las i woda, jak również wszystkie wiersze zawierające ocean, łodzi i wody.
Co ja naprawdę potrzebują pomocy ze jest logika za parsowanie i wstawianie węzłów do drzewa, aby właściwie reprezentować ekspresję więcej niż rzeczywisty kod. Jedyną rzeczą, jaką wypracowaliśmy że sens mnie wraca zbiór wierszy dla każdego słowa w wyrażeniu. Następnie w zależności czy jest to „albo” lub „i” Operacja Chciałbym wykonać unii lub operację typu skrzyżowanie tych zestawów, aby utworzyć nowy zestaw i przekazać, że się na drzewie.
Jestem rodzaj utracone, w jaki sposób zanalizować wiersz, który zawiera wyraz. Po namyśle wydaje się, że „dalej” na jednej z podrzędnych wyrażeń jest wyższa powinna być w moim drzewie s-wyrażenie? Myślę, że gdybym mógł po prostu push we właściwym kierunku w miarę analizowania i wstawienie wyrażenia w drzewo powinno być OK.
Moja próbka drzewo, które wymyśliłem dla zapytania powyżej wyglądać;
&
/ \
| water
/ \
& &
/ \ / \
fire forest ocean boat
Ma to sens, jak ogień zwróci zestaw wierszy, które zawierają wszystko ogniem i las zwróci zestaw wierszy, które zawierają cały las. Następnie na „&” Poziom wziąłbym te dwa zestawy i stworzyć inny zestaw, który zawierał tylko te linie, które były w obu zestawach samym dając mi zestaw, który ma tylko linie, które zawierają zarówno ogień i las.
Mój inny przeszkodą jest to, jak do reprezentowania wszystko w drzewie po tym, jak przezwyciężyć przeszkody parsowania. Mam klasy ExpTreeNode, która będzie służyć jako węzłów dla mojego ExpTree (BST) i wtedy mam 2 podklasy, operator i argument, ale nie jestem pewien, czy jest to dobre podejście.













