private Node term() {
		// factor ((MUL^|DIV^|MOD^) factor)*
		Node factorExpression = factor();
		while (lookAhead(1) == TokenType.MULTIPLY ||
				lookAhead(1) == TokenType.DIVIDE ||
				lookAhead(1) == TokenType.MOD) {
			if (lookAhead(1) == TokenType.MULTIPLY) {
				factorExpression = new MultiplyOpNode(
						match(TokenType.MULTIPLY).getPosition(),
						factorExpression, factor());
			} else if (lookAhead(1) == TokenType.DIVIDE) {
				factorExpression = new DivideOpNode(
						match(TokenType.DIVIDE).getPosition(),
						factorExpression, factor());
			} else if (lookAhead(1) == TokenType.MOD) {
				factorExpression = new ModOpNode(
						match(TokenType.MOD).getPosition(),
						factorExpression, factor());
			}
		}
		return factorExpression;
	}