Αυτό είναι ψευδο εργασία (είναι επιπλέον πίστωση). Έχω μια BST που είναι ένας δείκτης των λέξεων που δείχνουν τις γραμμές (αποθηκευμένα κάπου αλλού) που περιέχουν τις λέξεις. Θα πρέπει να εφαρμόσει ένα τρόπο για να κάνετε χρήση της s-εκφράσεις ώστε να μπορώ να συνδυάσει και (&) ή (|).
Στη γραμμή εντολών σε ένα χρήστη να πληκτρολογήσετε κάτι σαν:
QUERY ((((fire)&(forest))|((ocean)&(boat)))&(water))
Ουσιαστικά αυτό θα πρέπει να επιστρέψει όλες τις γραμμές που περιέχουν τις λέξεις φωτιά, τα δάση και το νερό, καθώς και όλες τις γραμμές που περιέχουν ωκεανό, βάρκα και το νερό.
Αυτό που πραγματικά χρειάζεται βοήθεια με είναι η λογική για την ανάλυση και την εισαγωγή των κόμβων στο δέντρο για να αντιπροσωπεύουν σωστά την έκφραση περισσότερο από το πραγματικό κώδικα. Το μόνο πράγμα που έχω εργαστεί ότι έχει νόημα για μένα επιστρέφει ένα σύνολο γραμμών για κάθε λέξη στην έκφραση. Στη συνέχεια, ανάλογα με το αν πρόκειται για ένα «ή» ή «και» λειτουργία θα εκτελέσει μια ένωση ή τη λειτουργία του τύπου διασταύρωση σε αυτές τις ομάδες για να δημιουργήσετε ένα νέο σύνολο και να περάσει ότι στις μέχρι το δέντρο.
Είμαι το είδος του έχασε σχετικά με το πώς να αναλύσει τη γραμμή που περιέχει την έκφραση. Μετά από κάποια σκέψη φαίνεται ότι το «πιο μακριά» από μια από τις επιμέρους εκφράσεις είναι η υψηλότερη θα πρέπει να είναι σε δέντρο s-έκφραση μου; Νομίζω ότι αν θα μπορούσα να πάρω μόνο μια ώθηση προς τη σωστή κατεύθυνση όσον αφορά την ανάλυση και εισάγοντας τις εκφράσεις στο δέντρο θα πρέπει να είναι εντάξει.
δείγμα δέντρο μου που ήρθε με για το ερώτημα παραπάνω φαίνεται κάτι σαν?
&
/ \
| water
/ \
& &
/ \ / \
fire forest ocean boat
Αυτό είναι λογικό, η φωτιά θα επιστρέψει ένα σύνολο γραμμών που περιέχουν όλα φωτιά και τα δάση θα επιστρέψει ένα σύνολο γραμμών που όλα περιέχουν δάσος. Στη συνέχεια, η «&» επίπεδο θα λάβουν αυτές τις δύο ομάδες και να δημιουργήσει ένα άλλο σύνολο που περιέχει μόνο τις γραμμές που ήταν σε δύο ομάδες έτσι μου έδωσε ένα σύνολο που έχει μόνο τις γραμμές που περιέχουν και φωτιά και το δάσος.
άλλο εμπόδιο μου είναι πώς να εκπροσωπεί τα πάντα στο δέντρο αφού ξεπεραστεί το εμπόδιο της ανάλυσης. Έχω μια τάξη ExpTreeNode που θα χρησιμεύσουν ως κόμβοι για ExpTree μου (η BST) και, στη συνέχεια, έχω 2 υποκατηγορίες, χειριστή και τελεστή, αλλά δεν είμαι σίγουρος αν αυτό είναι μια καλή προσέγγιση.













