I'll document this better in the manual later, but quick answer for now is that after encountering a noun, subsequent nouns are ignored unless a proposition is supplied. (English language behaviour, slightly different behaviour for Spanish mode)
If a word is a noun and an adjective, then it will read the first word as a noun, and if it discovers the next word is also a noun, then it will try to interpret the first word as an adjective.
1. EXAMINE ADDER'S TONGUE FERN ^ MATCHED VERB = EXAMINE 2. EXAMINE ADDER'S TONGUE FERN ^ Not in dictionary, ignored (internally removes ' char so actually looking for adders in dictionary) 3. EXAMINE ADDER'S TONGUE FERN ^ MATCHED NOUN1 = TONGUE 4. EXAMINE ADDER'S TONGUE FERN ^ Matched Noun but as follows previous noun, discard. Also checks to see if tongue is an adjective as well as a noun so it can change tongue to an adjective if in dictionary.
The fix is to add tongue as an adjective to the fern:
start_at = room01 locations { room01 : location "You're in a storeroom"; } objects { tongue : object "some hound's tongue" start_at = "room01"; tongue_fern : object "some adder's tongue fern" start_at = "room01"; } on_command { : match "examine tongue" { : print "It's the tongue of a dog."; : done; } : match "examine fern" { : print "It's adder's fork."; : done; } }
I will also probably change the noun discardation order so that if two nouns are encountered in a row and the first noun is not also an adjective, that the most recent noun overwrites the existing noun. I may also retain additional nouns and adjectives in a future version of the parser.
I hope this answers your question, and I realise I have to document the parser better.
FYI - by switching DEBUG ON in the editor you can see how Adventuron is parsing the logical sentence. It's very spammy but sometimes useful.
Chris