On Sat, 16 Mar 2002, Kras Kresh wrote: > I need a solution for fixing this while parsing the string in > perform_act(). Is there a simple solution? [... snip ...] I guess > that isn't too hard, but its not very fun to play with string > pointers. It might be harder than you first expect. Consider, at first, the sentence, "$e pushes forward." If the group is pushing forward, then we need to conjugate "pushes" for the plural; merely dropping the 's' gives us, "They pushe forward." This is fine if you're running ChaucerMud (and, in which case, you might want, "Hie pushe foreweard"), but let's assume that's not the case. Indeed, we run into problems with other verbs and, of course, nouns, which we'll sometimes need to transform for the possessive case. Sometimes is the key word. Consider, You reach for his hands. | You reach for their hands. You reach for his tress. | You reach for their tresses. You steal his shoes. | You steal their shoes. There are other worrying cases, but some are absurd within the Mud setting. How much do you care about such cases as already presented? Keep in mind that while the examples might seem unimportant, they represent a larger field of sentence formations and vocabulary that is suddenly off limits, less you have the Mud massacre your compositions. If we're pluralizing nouns as appropriate, what about, "his red apple?" Do we recognize adjectives? What about present and past participles (verbs acting as adjectives) such as, "his humming sword?" Or gerunds and infinitives (verbs acting as nouns), like, "his loud humming?" Even if we get all of this handled, what abouts lists and connectives? Can we handle, "$e crouches and prepares to lunge," despite the distance between the verb "prepares" and its subjective pronoun ($e)? Can we handle, "He misses his thrust and dodges your riposte?" The automatic parsing of English is (at best) difficult to do without severely limiting your grammar and word choice. If we really want to try automatic parsing, we'll want: (1) Keep a dictionary mapping singular verbs/nouns to their plural equivalents, to be used in preference to automatic translation. Some words can be left for automatic translation (e.g., those which only require appending an 's'). (2) Mark-up everything that needs transformation in some manner. The mark-up should specify, to some degree, which transformation should apply, what it should be transformed with repsect to, and which word to transform. Before we address the design and implementation of anything nearly so complex, we should look at alternatives. One that occurs to me immediately is simply adding RE_{CHAR,VICT}_{PL,SNG} to act()'s TO_ flags to indicate what the message concerns (and restrict sending it when those concerns aren't met). E.g., act("$e crouches and prepares to lunge at $N.", FALSE, ch, 0, vict, TO_NOT_VICT | RE_CHAR_SNG | RE_VICT_SNG); act("$e crouches and prepares to lunge at them.", FALSE, ch, 0, vict, TO_NOT_VICT | RE_CHAR_SNG | RE_VICT_PL); Admittedly, this becomes twice as many messages for those messages we want group/singular alternatives, but it might be worth it for its simplicity. -dak -- +---------------------------------------------------------------+ | FAQ: http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html | | Archives: http://post.queensu.ca/listserv/wwwarch/circle.html | | Newbie List: http://groups.yahoo.com/group/circle-newbies/ | +---------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 06/25/03 PDT