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 (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.
 If being a te-form and being an imperative are mutually exclusive, that is.