protected Component parseAdditiveExpr( TokenStream tokens ) {
Component result = parseMultiplicativeExpr(tokens);
while (true) {
if (tokens.canConsume("+")) {
result = new Add(result, parseMultiplicativeExpr(tokens));
} else if (tokens.canConsume("-")) {
result = new Subtract(result, parseMultiplicativeExpr(tokens));
} else {
break; // no more additions
}