"If something is not" isn't working right.

This is is parsing false when it should be parsing true

let the root verb be the last word;
		say "root verb----> [root verb][line break]";
		if the root verb is not a te form listed in the table of verb list or the root verb is not a imperative form listed in the table of verb list:
			let the root verb be "nil";

I gave the code a root verb that is in the table (it’s a te-form) and thinks it’s not and is assigning it “nil”

Why is it doing it when I’m telling it if the root verb is not a te form listed in the table of verb list

You are making a very common beginner’s mistake in any programming language.

if A or B then C [peseudocode]

means if A is true OR B is true, then C gets executed (if both A and B are true, C gets executed as well).

Therefore, in your example, the root verb will always be “nil”, because one of the conditions will always be true[1] (it will either not be a te-form or not be an imperative). In othe words: if it’s a te-form, it satisfies the second condition by not being an imperative.

While what you say makes sense in colloquial speech, it’s wrong from a logical point of view. What you want is something like

		if the root verb is not a te form listed in the table of verb list and the root verb is not a imperative form listed in the table of verb list:

I haven’t tested this in Inform 7, so there might be another problem as well, but that’s the thing that was the most obvious mistake.

Matt

[1] If being a te-form and being an imperative are mutually exclusive, that is.

I’ve found that if … not is sometimed confusing in I7 but that “unless” tends to work like you think.

See this thread.