return node;
}
private Expression parseAddOperation(Expression left) {
Expression node;
Expression value = parseExpressionValue();
boolean isOperition = current.type == TokeType.OPERATION;
if (isOperition && current.value.equals("+")) {
nextToken();
value = new AddExpression(left, value);
node = parseAddOperation(value);
} else if (isOperition && current.value.equals("-")) {
nextToken();
value = new AddExpression(left, value);
node = parseSubOperation(value);
} else if (isOperition && current.value.equals("*")) {
nextToken();
Expression right = parseMulOperation(value);
node = new AddExpression(left, right);
} else if (isOperition && current.value.equals("/")) {
nextToken();
Expression right = parseDivOperation(value);
node = new AddExpression(left, right);
} else if (isOperition && current.value.equals("%")) {
nextToken();
Expression right = parseModOperation(value);
node = new AddExpression(left, right);
} else {
node = new AddExpression(left, value);
}