It looks to me that this program is not always right. Or I'm not understanding it.
No, it isn't always right. Actually, I'd argue that a grammar checker is only useful as a reminder. If you don't know grammar to begin with you may end up hypercorrecting stuff (adding mistakes to a perfectly fine sentence).
Ex "Her eyes were glittering sapphire and her mouth gave way to a sweet smile"
The suggestions come up with, "The verb glittering does not usually take an object.
What does this mean or should I re word it.
No need to reword this on account of what the program said.
The program thinks that (a) "glittering" is used verbally, here and that (b) "sapphire" is the object of "glittering". In other words, it thinks that the structure of
Her eyes were glittering sapphire
is the same as
Her eyes were seeing wood.
But that's not true. A human can tell the difference at a glance. A machine can't tell it at all. It can only follow rules in a predetermined sequence. And that is the problem. The program, because it is looking for mistakes, chooses an interpretation that looks like a mistake.
There are other structures make sense.
Instead of:
WRONG: Her eyes (S) were glittering (V) sapphire (O).
this sentence could be read as:
RIGHT: Her eyes (S) were (V) glittering sapphire (Complement).
This would be roughly equivalent to the structure of:
The wall (S) was (V) solid stone (C).
"Sapphire" would be a material. (Of course, this would probably be read as a metaphor, as eyes made of sapphire wouldn't be too effective.)
I doubt, though, that this interpretation is what you had in mind. I think you meant the following:
RIGHT: Her eyes (S) were glittering (V) sapphire (C).
Here "sapphire" would be a colour. The structure is similarly to:
The sun is shining bright.
***
Machine grammars have terrible problems with "garden path sentences" (a type of misleading sentence, that leads you down the wrong garden path at first, so you have to retrace your steps and start again, this time choosing another path). A famous example is:
The old man the boat.
A reader will probably start reading
The old man and then rest will make no sense.
The old man the boat. Huh?
But if you retrace your steps, you may realise that you've gone too far. The subject is actually shorter than you thought. You have to take an earlier branch of the garden paths, one you've probably missed:
The old man the boat.
Now try to find a way to program a machine to reliably tell that difference. Here's a
list of garden path sentences. A reliable grammar check would have to be able to interpret them all correctly. But to do this you'd need a non-linear method. (That is a sequential method will not work.)
The field that tries to find ways to program its way around such problems is
Computational Linguistics. But, often, new solutions cause new problems. Look, for example, at these articles about translation programs:
Made in USA == Made in Austria|France|Italy|... ?,
Austria == Ireland?,
Why Austria is Ireland,
The (probable) truth about Austria and Ireland
The upshot is: when in doubt, the machine is wrong. Never trust a program. It's a tool, not a teacher.