First of all, congratulations. Yacc can recover from shift-reduce, whereas reduce-reduce is lethal.
Now, let's look why it happens. One of the sources of the conflict is
Expression : Expression PLUSOP Expression
Consider an expression a + b + c. There are 2 ways to parse it:
1. a + Expression
2. Expression + c
The first path would be shift (accept a as Term, and shift to the rest. The second path is reduce (accept a+b, and reduce it to Expression). Again, you didn't tell it which is correct.
There are 2 ways to overcome such shift-reduces. First, you can use %left and %right directives. Second, introduce more non-terminals, like I did with AdditiveExpression.
Reading my original code, it appears, to me, that if a '(' is seen at any time, then the parser needs to have the sub-tree begin with the top-level non-terminal.
It may even do so. The question, unanswered, is what to do when a ')' is encountered.
PS: You are going to have misterious problems with lines 16 and 19. Better start using %union right away.